| Index: src/api-natives.cc
|
| diff --git a/src/api-natives.cc b/src/api-natives.cc
|
| index c7de4fd07bf28ec23140c4275e05b0a415cfb177..d97dfae0a08d064ef55ec82aac65ca32c1c64d66 100644
|
| --- a/src/api-natives.cc
|
| +++ b/src/api-natives.cc
|
| @@ -16,8 +16,8 @@
|
| namespace {
|
|
|
| MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
|
| - Handle<ObjectTemplateInfo> data,
|
| - bool is_hidden_prototype);
|
| + Handle<ObjectTemplateInfo> data);
|
| +
|
|
|
| MaybeHandle<JSFunction> InstantiateFunction(Isolate* isolate,
|
| Handle<FunctionTemplateInfo> data,
|
| @@ -30,36 +30,32 @@
|
| return InstantiateFunction(isolate,
|
| Handle<FunctionTemplateInfo>::cast(data), name);
|
| } else if (data->IsObjectTemplateInfo()) {
|
| - return InstantiateObject(isolate, Handle<ObjectTemplateInfo>::cast(data),
|
| - false);
|
| + return InstantiateObject(isolate, Handle<ObjectTemplateInfo>::cast(data));
|
| } else {
|
| return data;
|
| }
|
| }
|
|
|
| -MaybeHandle<Object> DefineAccessorProperty(
|
| - Isolate* isolate, Handle<JSObject> object, Handle<Name> name,
|
| - Handle<Object> getter, Handle<Object> setter, PropertyAttributes attributes,
|
| - bool force_instantiate) {
|
| - DCHECK(!getter->IsFunctionTemplateInfo() ||
|
| - !FunctionTemplateInfo::cast(*getter)->do_not_cache());
|
| - DCHECK(!setter->IsFunctionTemplateInfo() ||
|
| - !FunctionTemplateInfo::cast(*setter)->do_not_cache());
|
| - if (force_instantiate) {
|
| - if (getter->IsFunctionTemplateInfo()) {
|
| - ASSIGN_RETURN_ON_EXCEPTION(
|
| - isolate, getter,
|
| - InstantiateFunction(isolate,
|
| - Handle<FunctionTemplateInfo>::cast(getter)),
|
| - Object);
|
| - }
|
| - if (setter->IsFunctionTemplateInfo()) {
|
| - ASSIGN_RETURN_ON_EXCEPTION(
|
| - isolate, setter,
|
| - InstantiateFunction(isolate,
|
| - Handle<FunctionTemplateInfo>::cast(setter)),
|
| - Object);
|
| - }
|
| +
|
| +MaybeHandle<Object> DefineAccessorProperty(Isolate* isolate,
|
| + Handle<JSObject> object,
|
| + Handle<Name> name,
|
| + Handle<Object> getter,
|
| + Handle<Object> setter,
|
| + PropertyAttributes attributes) {
|
| + if (!getter->IsUndefined()) {
|
| + ASSIGN_RETURN_ON_EXCEPTION(
|
| + isolate, getter,
|
| + InstantiateFunction(isolate,
|
| + Handle<FunctionTemplateInfo>::cast(getter)),
|
| + Object);
|
| + }
|
| + if (!setter->IsUndefined()) {
|
| + ASSIGN_RETURN_ON_EXCEPTION(
|
| + isolate, setter,
|
| + InstantiateFunction(isolate,
|
| + Handle<FunctionTemplateInfo>::cast(setter)),
|
| + Object);
|
| }
|
| RETURN_ON_EXCEPTION(isolate, JSObject::DefineAccessor(object, name, getter,
|
| setter, attributes),
|
| @@ -174,8 +170,7 @@
|
|
|
| template <typename TemplateInfoT>
|
| MaybeHandle<JSObject> ConfigureInstance(Isolate* isolate, Handle<JSObject> obj,
|
| - Handle<TemplateInfoT> data,
|
| - bool is_hidden_prototype) {
|
| + Handle<TemplateInfoT> data) {
|
| HandleScope scope(isolate);
|
| // Disable access checks while instantiating the object.
|
| AccessCheckDisableScope access_check_scope(isolate, obj);
|
| @@ -242,10 +237,10 @@
|
| } else {
|
| auto getter = handle(properties.get(i++), isolate);
|
| auto setter = handle(properties.get(i++), isolate);
|
| - RETURN_ON_EXCEPTION(
|
| - isolate, DefineAccessorProperty(isolate, obj, name, getter, setter,
|
| - attributes, is_hidden_prototype),
|
| - JSObject);
|
| + RETURN_ON_EXCEPTION(isolate,
|
| + DefineAccessorProperty(isolate, obj, name, getter,
|
| + setter, attributes),
|
| + JSObject);
|
| }
|
| } else {
|
| // Intrinsic data property --- Get appropriate value from the current
|
| @@ -282,8 +277,7 @@
|
| }
|
|
|
| MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
|
| - Handle<ObjectTemplateInfo> info,
|
| - bool is_hidden_prototype) {
|
| + Handle<ObjectTemplateInfo> info) {
|
| // Enter a new scope. Recursion could otherwise create a lot of handles.
|
| HandleScope scope(isolate);
|
| // Fast path.
|
| @@ -311,9 +305,7 @@
|
| }
|
| auto object = isolate->factory()->NewJSObject(cons);
|
| ASSIGN_RETURN_ON_EXCEPTION(
|
| - isolate, result,
|
| - ConfigureInstance(isolate, object, info, is_hidden_prototype),
|
| - JSFunction);
|
| + isolate, result, ConfigureInstance(isolate, object, info), JSFunction);
|
| // TODO(dcarney): is this necessary?
|
| JSObject::MigrateSlowToFast(result, 0, "ApiNatives::InstantiateObject");
|
|
|
| @@ -349,8 +341,7 @@
|
| ASSIGN_RETURN_ON_EXCEPTION(
|
| isolate, prototype,
|
| InstantiateObject(isolate,
|
| - Handle<ObjectTemplateInfo>::cast(prototype_templ),
|
| - data->hidden_prototype()),
|
| + Handle<ObjectTemplateInfo>::cast(prototype_templ)),
|
| JSFunction);
|
| }
|
| auto parent = handle(data->parent_template(), isolate);
|
| @@ -382,8 +373,7 @@
|
| // Cache the function.
|
| CacheTemplateInstantiation(isolate, serial_number, function);
|
| }
|
| - auto result =
|
| - ConfigureInstance(isolate, function, data, data->hidden_prototype());
|
| + auto result = ConfigureInstance(isolate, function, data);
|
| if (result.is_null()) {
|
| // Uncache on error.
|
| if (serial_number->value()) {
|
| @@ -447,7 +437,7 @@
|
| Handle<ObjectTemplateInfo> data) {
|
| Isolate* isolate = data->GetIsolate();
|
| InvokeScope invoke_scope(isolate);
|
| - return ::v8::internal::InstantiateObject(isolate, data, false);
|
| + return ::v8::internal::InstantiateObject(isolate, data);
|
| }
|
|
|
|
|
|
|