Index: Source/bindings/core/v8/ScriptProfiler.cpp |
diff --git a/Source/bindings/core/v8/ScriptProfiler.cpp b/Source/bindings/core/v8/ScriptProfiler.cpp |
index efe29453f19ab2c6557384607e6c7e9209f6b284..35137e816159c9dd1059b8fbb83f837207953b80 100644 |
--- a/Source/bindings/core/v8/ScriptProfiler.cpp |
+++ b/Source/bindings/core/v8/ScriptProfiler.cpp |
@@ -270,7 +270,9 @@ void ScriptProfiler::visitNodeWrappers(WrappedNodeVisitor* visitor) |
public: |
DOMNodeWrapperVisitor(WrappedNodeVisitor* visitor, v8::Isolate* isolate) |
: m_visitor(visitor) |
+#if ENABLE(ASSERT) |
, m_isolate(isolate) |
+#endif |
{ |
} |
@@ -278,17 +280,23 @@ void ScriptProfiler::visitNodeWrappers(WrappedNodeVisitor* visitor) |
{ |
if (classId != WrapperTypeInfo::NodeClassId) |
return; |
- // Casting to Handle is safe here, since the Persistent cannot get |
- // GCd during visiting. |
- v8::Handle<v8::Object>* wrapper = reinterpret_cast<v8::Handle<v8::Object>*>(value); |
- ASSERT_UNUSED(m_isolate, V8Node::hasInstance(*wrapper, m_isolate)); |
- ASSERT((*wrapper)->IsObject()); |
- m_visitor->visitNode(V8Node::toImpl(*wrapper)); |
+ |
+#if ENABLE(ASSERT) |
+ { |
+ v8::HandleScope scope(m_isolate); |
+ v8::Local<v8::Object> wrapper = v8::Local<v8::Object>::New(m_isolate, v8::Persistent<v8::Object>::Cast(*value)); |
+ ASSERT(V8Node::hasInstance(wrapper, m_isolate)); |
+ ASSERT(wrapper->IsObject()); |
+ } |
+#endif |
+ m_visitor->visitNode(toScriptWrappableBase(v8::Persistent<v8::Object>::Cast(*value))->toImpl<Node>()); |
} |
private: |
WrappedNodeVisitor* m_visitor; |
+#if ENABLE(ASSERT) |
v8::Isolate* m_isolate; |
+#endif |
} wrapperVisitor(visitor, isolate); |
v8::V8::VisitHandlesWithClassIds(isolate, &wrapperVisitor); |