Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index c470f84414762521f95df0b9bf8ecb1f870e87cd..9a68f639efec56559c0aa7ffe76a58ada5776fc4 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -1368,13 +1368,15 @@ Local<ObjectTemplate> ObjectTemplate::New( |
// Ensure that the object template has a constructor. If no |
// constructor is available we create one. |
static i::Handle<i::FunctionTemplateInfo> EnsureConstructor( |
+ i::Isolate* isolate, |
ObjectTemplate* object_template) { |
i::Object* obj = Utils::OpenHandle(object_template)->constructor(); |
if (!obj ->IsUndefined()) { |
i::FunctionTemplateInfo* info = i::FunctionTemplateInfo::cast(obj); |
- return i::Handle<i::FunctionTemplateInfo>(info, info->GetIsolate()); |
+ return i::Handle<i::FunctionTemplateInfo>(info, isolate); |
} |
- Local<FunctionTemplate> templ = FunctionTemplate::New(); |
+ Local<FunctionTemplate> templ = |
+ FunctionTemplate::New(reinterpret_cast<Isolate*>(isolate)); |
i::Handle<i::FunctionTemplateInfo> constructor = Utils::OpenHandle(*templ); |
constructor->set_instance_template(*Utils::OpenHandle(object_template)); |
Utils::OpenHandle(object_template)->set_constructor(*constructor); |
@@ -1396,6 +1398,7 @@ static inline void AddPropertyToTemplate( |
static inline i::Handle<i::TemplateInfo> GetTemplateInfo( |
+ i::Isolate* isolate, |
Template* template_obj) { |
return Utils::OpenHandle(template_obj); |
} |
@@ -1403,8 +1406,9 @@ static inline i::Handle<i::TemplateInfo> GetTemplateInfo( |
// TODO(dcarney): remove this with ObjectTemplate::SetAccessor |
static inline i::Handle<i::TemplateInfo> GetTemplateInfo( |
+ i::Isolate* isolate, |
ObjectTemplate* object_template) { |
- EnsureConstructor(object_template); |
+ EnsureConstructor(isolate, object_template); |
return Utils::OpenHandle(object_template); |
} |
@@ -1425,7 +1429,7 @@ static bool TemplateSetAccessor( |
i::Handle<i::AccessorInfo> obj = MakeAccessorInfo( |
name, getter, setter, data, settings, attribute, signature); |
if (obj.is_null()) return false; |
- i::Handle<i::TemplateInfo> info = GetTemplateInfo(template_obj); |
+ i::Handle<i::TemplateInfo> info = GetTemplateInfo(isolate, template_obj); |
AddPropertyToTemplate(info, obj); |
return true; |
} |
@@ -1477,7 +1481,7 @@ void ObjectTemplate::SetNamedPropertyHandler( |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
- EnsureConstructor(this); |
+ EnsureConstructor(isolate, this); |
i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( |
Utils::OpenHandle(this)->constructor()); |
i::Handle<i::FunctionTemplateInfo> cons(constructor); |
@@ -1504,7 +1508,7 @@ void ObjectTemplate::MarkAsUndetectable() { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
- EnsureConstructor(this); |
+ EnsureConstructor(isolate, this); |
i::FunctionTemplateInfo* constructor = |
i::FunctionTemplateInfo::cast(Utils::OpenHandle(this)->constructor()); |
i::Handle<i::FunctionTemplateInfo> cons(constructor); |
@@ -1520,7 +1524,7 @@ void ObjectTemplate::SetAccessCheckCallbacks( |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
- EnsureConstructor(this); |
+ EnsureConstructor(isolate, this); |
i::Handle<i::Struct> struct_info = |
isolate->factory()->NewStruct(i::ACCESS_CHECK_INFO_TYPE); |
@@ -1553,7 +1557,7 @@ void ObjectTemplate::SetIndexedPropertyHandler( |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
- EnsureConstructor(this); |
+ EnsureConstructor(isolate, this); |
i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( |
Utils::OpenHandle(this)->constructor()); |
i::Handle<i::FunctionTemplateInfo> cons(constructor); |
@@ -1581,7 +1585,7 @@ void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback, |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
- EnsureConstructor(this); |
+ EnsureConstructor(isolate, this); |
i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( |
Utils::OpenHandle(this)->constructor()); |
i::Handle<i::FunctionTemplateInfo> cons(constructor); |
@@ -1615,7 +1619,7 @@ void ObjectTemplate::SetInternalFieldCount(int value) { |
// The internal field count is set by the constructor function's |
// construct code, so we ensure that there is a constructor |
// function to do the setting. |
- EnsureConstructor(this); |
+ EnsureConstructor(isolate, this); |
} |
Utils::OpenHandle(this)->set_internal_field_count(i::Smi::FromInt(value)); |
} |
@@ -5140,11 +5144,11 @@ static i::Handle<i::Context> CreateEnvironment( |
if (!global_template.IsEmpty()) { |
// Make sure that the global_template has a constructor. |
- global_constructor = EnsureConstructor(*global_template); |
+ global_constructor = EnsureConstructor(isolate, *global_template); |
// Create a fresh template for the global proxy object. |
proxy_template = ObjectTemplate::New(); |
- proxy_constructor = EnsureConstructor(*proxy_template); |
+ proxy_constructor = EnsureConstructor(isolate, *proxy_template); |
// Set the global template to be the prototype template of |
// global proxy template. |