| Index: src/handles.h
|
| diff --git a/src/handles.h b/src/handles.h
|
| index 960696b5fb81f705f2128b5586fef44ca0c8e7fb..aca869026e6ff5b651efd61f0aaeb1441714ad6a 100644
|
| --- a/src/handles.h
|
| +++ b/src/handles.h
|
| @@ -95,6 +95,9 @@ class Handle {
|
| };
|
|
|
|
|
| +class HandleScopeImplementer;
|
| +
|
| +
|
| // A stack-allocated class that governs a number of local handles.
|
| // After a handle scope has been created, all local handles will be
|
| // allocated within that handle scope until either the handle scope is
|
| @@ -157,10 +160,37 @@ class HandleScope {
|
| static void ZapRange(internal::Object** start, internal::Object** end);
|
|
|
| friend class v8::HandleScope;
|
| + friend class v8::internal::HandleScopeImplementer;
|
| friend class v8::ImplementationUtilities;
|
| };
|
|
|
|
|
| +class DeferredHandles;
|
| +
|
| +
|
| +class DeferredHandleScope {
|
| + public:
|
| + explicit DeferredHandleScope(Isolate* isolate);
|
| + // The DeferredHandles object returned stores the Handles created
|
| + // since the creation of this DeferredHandleScope. The Handles are
|
| + // alive as long as the DeferredHandles object is alive.
|
| + DeferredHandles* Detach();
|
| + ~DeferredHandleScope();
|
| +
|
| + private:
|
| + Object** prev_limit_;
|
| + Object** prev_next_;
|
| + HandleScopeImplementer* impl_;
|
| +
|
| +#ifdef DEBUG
|
| + bool handles_detached_;
|
| + int prev_level_;
|
| +#endif
|
| +
|
| + friend class HandleScopeImplementer;
|
| +};
|
| +
|
| +
|
| // ----------------------------------------------------------------------------
|
| // Handle operations.
|
| // They might invoke garbage collection. The result is an handle to
|
|
|