Index: gin/wrappable.cc |
diff --git a/gin/wrappable.cc b/gin/wrappable.cc |
index 27c58dfdb01fe9c804f0e9157b67e15d5c911552..53a2f2549f1a809732adda9b9e87159b77d9116d 100644 |
--- a/gin/wrappable.cc |
+++ b/gin/wrappable.cc |
@@ -4,7 +4,6 @@ |
#include "gin/wrappable.h" |
-#include "base/logging.h" |
#include "gin/object_template_builder.h" |
#include "gin/per_isolate_data.h" |
@@ -36,7 +35,7 @@ void WrappableBase::SecondWeakCallback( |
} |
v8::Local<v8::Object> WrappableBase::GetWrapperImpl(v8::Isolate* isolate, |
- WrapperInfo* info) { |
+ WrapperInfo* info) { |
if (!wrapper_.IsEmpty()) { |
return v8::Local<v8::Object>::New(isolate, wrapper_); |
} |
@@ -59,35 +58,12 @@ v8::Local<v8::Object> WrappableBase::GetWrapperImpl(v8::Isolate* isolate, |
return wrapper; |
} |
wrapper->SetAlignedPointerInInternalField(kWrapperInfoIndex, info); |
+ // This needs to be adjusted with downcasting on retrieval, as this points |
+ // to the WrapperBase object, which may not be the start of the whole object. |
wrapper->SetAlignedPointerInInternalField(kEncodedValueIndex, this); |
wrapper_.Reset(isolate, wrapper); |
wrapper_.SetWeak(this, FirstWeakCallback, v8::WeakCallbackType::kParameter); |
return wrapper; |
} |
-namespace internal { |
- |
-void* FromV8Impl(v8::Isolate* isolate, v8::Local<v8::Value> val, |
- WrapperInfo* wrapper_info) { |
- if (!val->IsObject()) |
- return NULL; |
- v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(val); |
- WrapperInfo* info = WrapperInfo::From(obj); |
- |
- // If this fails, the object is not managed by Gin. It is either a normal JS |
- // object that's not wrapping any external C++ object, or it is wrapping some |
- // C++ object, but that object isn't managed by Gin (maybe Blink). |
- if (!info) |
- return NULL; |
- |
- // If this fails, the object is managed by Gin, but it's not wrapping an |
- // instance of the C++ class associated with wrapper_info. |
- if (info != wrapper_info) |
- return NULL; |
- |
- return obj->GetAlignedPointerFromInternalField(kEncodedValueIndex); |
-} |
- |
-} // namespace internal |
- |
} // namespace gin |