diff options
author | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-10-22 15:14:25 -0700 |
---|---|---|
committer | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-10-23 09:17:31 -0700 |
commit | a53c763c16eeabb0901a05dbcf38a72fa96d2f26 (patch) | |
tree | 309bf250e1521cedf0e945d7a7629db511e64498 /deps/v8/src/global-handles.h | |
parent | 54910044b33a6405c72ad085915a55c575c027fc (diff) | |
download | node-new-a53c763c16eeabb0901a05dbcf38a72fa96d2f26.tar.gz |
v8: upgrade 3.21.18.3
Diffstat (limited to 'deps/v8/src/global-handles.h')
-rw-r--r-- | deps/v8/src/global-handles.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/deps/v8/src/global-handles.h b/deps/v8/src/global-handles.h index 5a4ad13e2f..4b46aac05d 100644 --- a/deps/v8/src/global-handles.h +++ b/deps/v8/src/global-handles.h @@ -128,9 +128,13 @@ class GlobalHandles { // Creates a new global handle that is alive until Destroy is called. Handle<Object> Create(Object* value); + // Copy a global handle + static Handle<Object> CopyGlobal(Object** location); + // Destroy a global handle. static void Destroy(Object** location); + typedef WeakCallbackData<v8::Value, void>::Callback WeakCallback; typedef WeakReferenceCallbacks<v8::Value, void>::Revivable RevivableCallback; // Make the global handle weak and set the callback parameter for the @@ -141,7 +145,14 @@ class GlobalHandles { // reason is that Smi::FromInt(0) does not change during garage collection. static void MakeWeak(Object** location, void* parameter, - RevivableCallback weak_reference_callback); + WeakCallback weak_callback, + RevivableCallback revivable_callback); + + static inline void MakeWeak(Object** location, + void* parameter, + RevivableCallback revivable_callback) { + MakeWeak(location, parameter, NULL, revivable_callback); + } void RecordStats(HeapStats* stats); @@ -346,8 +357,8 @@ class EternalHandles { int NumberOfHandles() { return size_; } - // Create an EternalHandle, returning the index. - int Create(Isolate* isolate, Object* object); + // Create an EternalHandle, overwriting the index. + void Create(Isolate* isolate, Object* object, int* index); // Grab the handle for an existing EternalHandle. inline Handle<Object> Get(int index) { @@ -369,8 +380,7 @@ class EternalHandles { Handle<Object> CreateSingleton(Isolate* isolate, Object* object, SingletonHandle singleton) { - ASSERT(singleton_handles_[singleton] == kInvalidIndex); - singleton_handles_[singleton] = Create(isolate, object); + Create(isolate, object, &singleton_handles_[singleton]); return Get(singleton_handles_[singleton]); } |