wrap gc callbacks in handlescopes
authordcarney@chromium.org <dcarney@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 24 Jul 2013 12:50:53 +0000 (12:50 +0000)
committerdcarney@chromium.org <dcarney@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 24 Jul 2013 12:50:53 +0000 (12:50 +0000)
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/19845007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/global-handles.cc
src/heap.cc

index 5c65635..88ebe31 100644 (file)
@@ -262,6 +262,7 @@ class GlobalHandles::Node {
              ExternalTwoByteString::cast(object_)->resource() != NULL);
       // Leaving V8.
       VMState<EXTERNAL> state(isolate);
+      HandleScope handle_scope(isolate);
       weak_reference_callback_(reinterpret_cast<v8::Isolate*>(isolate),
                                reinterpret_cast<Persistent<Value>*>(&object),
                                par);
index 4a7e8f2..04aa98b 100644 (file)
@@ -920,6 +920,7 @@ bool Heap::PerformGarbageCollection(GarbageCollector collector,
   {
     GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL);
     VMState<EXTERNAL> state(isolate_);
+    HandleScope handle_scope(isolate_);
     CallGCPrologueCallbacks(gc_type, kNoGCCallbackFlags);
   }
 
@@ -1025,6 +1026,7 @@ bool Heap::PerformGarbageCollection(GarbageCollector collector,
   {
     GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL);
     VMState<EXTERNAL> state(isolate_);
+    HandleScope handle_scope(isolate_);
     CallGCEpilogueCallbacks(gc_type);
   }