diff options
Diffstat (limited to 'V8Binding/v8/src/factory.h')
-rw-r--r-- | V8Binding/v8/src/factory.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/V8Binding/v8/src/factory.h b/V8Binding/v8/src/factory.h index 90fb29c..0afdd76 100644 --- a/V8Binding/v8/src/factory.h +++ b/V8Binding/v8/src/factory.h @@ -28,6 +28,7 @@ #ifndef V8_FACTORY_H_ #define V8_FACTORY_H_ +#include "globals.h" #include "heap.h" #include "zone-inl.h" @@ -299,13 +300,19 @@ class Factory : public AllStatic { Handle<JSObject> instance, bool* pending_exception); -#define ROOT_ACCESSOR(type, name) \ - static Handle<type> name() { return Handle<type>(&Heap::name##_); } +#define ROOT_ACCESSOR(type, name, camel_name) \ + static inline Handle<type> name() { \ + return Handle<type>(bit_cast<type**, Object**>( \ + &Heap::roots_[Heap::k##camel_name##RootIndex])); \ + } ROOT_LIST(ROOT_ACCESSOR) #undef ROOT_ACCESSOR_ACCESSOR #define SYMBOL_ACCESSOR(name, str) \ - static Handle<String> name() { return Handle<String>(&Heap::name##_); } + static inline Handle<String> name() { \ + return Handle<String>(bit_cast<String**, Object**>( \ + &Heap::roots_[Heap::k##name##RootIndex])); \ + } SYMBOL_LIST(SYMBOL_ACCESSOR) #undef SYMBOL_ACCESSOR |