diff -r 75e385f68b7e -r 627b6b94e774 jitcraft/Barriers.h --- a/jitcraft/Barriers.h Sat Jun 30 19:38:53 2012 -0700 +++ b/jitcraft/Barriers.h Sat Jun 30 20:20:39 2012 -0700 @@ -55,6 +55,39 @@ } }; +// Used to store unbarriered heap locations. +template +class Barriered +{ + Object *obj_; + + public: + Barriered() + : obj_(NULL) + { + } + + T *operator ->() const { + return operator *(); + } + T *operator *() const { + return static_cast(obj_); + } + Barriered &operator =(T *obj) { + obj_ = obj; + return *this; + } + Object **addr() { + return &obj_; + } + operator bool () const { + return !!obj_; + } + operator T*() const { + return static_cast(obj_); + } +}; + } #endif // _include_jitcraft_barriers_h_