| Index: third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h | 
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h | 
| index b4e05891a44b8bf5df5ffde47e5a3814f974f91a..f38c8c45149c6594627126730a74187f92bc7c6d 100644 | 
| --- a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h | 
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h | 
| @@ -167,6 +167,30 @@ class CORE_EXPORT V8PerIsolateData { | 
| return m_activeScriptWrappables.get(); | 
| } | 
|  | 
| +  class TemporaryScriptWrappableVisitorScope { | 
| +    WTF_MAKE_NONCOPYABLE(TemporaryScriptWrappableVisitorScope); | 
| +    STACK_ALLOCATED(); | 
| + | 
| +   public: | 
| +    TemporaryScriptWrappableVisitorScope(v8::Isolate* isolate, | 
| +                                         ScriptWrappableVisitor* visitor) | 
| +        : m_isolate(isolate) { | 
| +      m_savedVisitor = currentVisitor(m_isolate); | 
| +      setVisitor(visitor); | 
| +    } | 
| +    ~TemporaryScriptWrappableVisitorScope() { setVisitor(m_savedVisitor); } | 
| + | 
| +   private: | 
| +    inline ScriptWrappableVisitor* currentVisitor(v8::Isolate* isolate) { | 
| +      return V8PerIsolateData::from(m_isolate)->scriptWrappableVisitor(); | 
| +    } | 
| + | 
| +    void setVisitor(ScriptWrappableVisitor*); | 
| + | 
| +    v8::Isolate* m_isolate; | 
| +    ScriptWrappableVisitor* m_savedVisitor; | 
| +  }; | 
| + | 
| void setScriptWrappableVisitor( | 
| std::unique_ptr<ScriptWrappableVisitor> visitor) { | 
| m_scriptWrappableVisitor = std::move(visitor); | 
|  |