| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 40b8a9904d342262895043320648f73bef670191..4e4bb5f2e24032da1e03334297eea6cc89a35b7e 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -363,7 +363,6 @@ void InstallFunction(Handle<JSObject> target, Handle<Name> property_name,
|
| if (target->IsJSGlobalObject()) {
|
| function->shared()->set_instance_class_name(*function_name);
|
| }
|
| - function->shared()->set_native(true);
|
| }
|
|
|
| void InstallFunction(Handle<JSObject> target, Handle<JSFunction> function,
|
| @@ -381,11 +380,14 @@ Handle<JSFunction> CreateFunction(Isolate* isolate, Handle<String> name,
|
| Factory* factory = isolate->factory();
|
| Handle<Code> call_code(isolate->builtins()->builtin(call));
|
| Handle<JSObject> prototype;
|
| - return maybe_prototype.ToHandle(&prototype)
|
| - ? factory->NewFunction(name, call_code, prototype, type,
|
| - instance_size, strict_function_map)
|
| - : factory->NewFunctionWithoutPrototype(name, call_code,
|
| - strict_function_map);
|
| + Handle<JSFunction> result =
|
| + maybe_prototype.ToHandle(&prototype)
|
| + ? factory->NewFunction(name, call_code, prototype, type,
|
| + instance_size, strict_function_map)
|
| + : factory->NewFunctionWithoutPrototype(name, call_code,
|
| + strict_function_map);
|
| + result->shared()->set_native(true);
|
| + return result;
|
| }
|
|
|
| Handle<JSFunction> InstallFunction(Handle<JSObject> target, Handle<Name> name,
|
| @@ -469,14 +471,12 @@ void SimpleInstallGetterSetter(Handle<JSObject> base, Handle<String> name,
|
| .ToHandleChecked();
|
| Handle<JSFunction> getter =
|
| SimpleCreateFunction(isolate, getter_name, call_getter, 0, true);
|
| - getter->shared()->set_native(true);
|
|
|
| Handle<String> setter_name =
|
| Name::ToFunctionName(name, isolate->factory()->set_string())
|
| .ToHandleChecked();
|
| Handle<JSFunction> setter =
|
| SimpleCreateFunction(isolate, setter_name, call_setter, 1, true);
|
| - setter->shared()->set_native(true);
|
|
|
| JSObject::DefineAccessor(base, name, getter, setter, attribs).Check();
|
| }
|
| @@ -492,7 +492,6 @@ Handle<JSFunction> SimpleInstallGetter(Handle<JSObject> base,
|
| .ToHandleChecked();
|
| Handle<JSFunction> getter =
|
| SimpleCreateFunction(isolate, getter_name, call, 0, adapt);
|
| - getter->shared()->set_native(true);
|
|
|
| Handle<Object> setter = isolate->factory()->undefined_value();
|
|
|
| @@ -722,7 +721,6 @@ void Genesis::CreateIteratorMaps(Handle<JSFunction> empty) {
|
| Handle<JSFunction> iterator_prototype_iterator = SimpleCreateFunction(
|
| isolate(), factory()->NewStringFromAsciiChecked("[Symbol.iterator]"),
|
| Builtins::kReturnReceiver, 0, true);
|
| - iterator_prototype_iterator->shared()->set_native(true);
|
|
|
| JSObject::AddProperty(iterator_prototype, factory()->iterator_symbol(),
|
| iterator_prototype_iterator, DONT_ENUM);
|
| @@ -761,10 +759,12 @@ void Genesis::CreateIteratorMaps(Handle<JSFunction> empty) {
|
| SimpleInstallFunction(generator_object_prototype, "throw",
|
| Builtins::kGeneratorPrototypeThrow, 1, true);
|
|
|
| - // Internal version of generator_prototype_next, flagged as non-native.
|
| + // Internal version of generator_prototype_next, flagged as non-native such
|
| + // that it doesn't show up in Error traces.
|
| Handle<JSFunction> generator_next_internal =
|
| SimpleCreateFunction(isolate(), factory()->next_string(),
|
| Builtins::kGeneratorPrototypeNext, 1, true);
|
| + generator_next_internal->shared()->set_native(false);
|
| native_context()->set_generator_next_internal(*generator_next_internal);
|
|
|
| // Create maps for generator functions and their prototypes. Store those
|
| @@ -1372,6 +1372,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| isolate, factory->ArrayIterator_string(),
|
| JS_FAST_ARRAY_VALUE_ITERATOR_TYPE, JSArrayIterator::kSize,
|
| array_iterator_prototype, Builtins::kIllegal);
|
| + array_iterator_function->shared()->set_native(false);
|
| array_iterator_function->shared()->set_instance_class_name(
|
| isolate->heap()->ArrayIterator_string());
|
|
|
| @@ -1606,7 +1607,6 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| Handle<JSFunction> iterator = SimpleCreateFunction(
|
| isolate, factory->NewStringFromAsciiChecked("[Symbol.iterator]"),
|
| Builtins::kStringPrototypeIterator, 0, true);
|
| - iterator->shared()->set_native(true);
|
| iterator->shared()->set_builtin_function_id(kStringIterator);
|
| JSObject::AddProperty(prototype, factory->iterator_symbol(), iterator,
|
| static_cast<PropertyAttributes>(DONT_ENUM));
|
| @@ -1642,6 +1642,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| isolate, factory->NewStringFromAsciiChecked("StringIterator"),
|
| JS_STRING_ITERATOR_TYPE, JSStringIterator::kSize,
|
| string_iterator_prototype, Builtins::kIllegal);
|
| + string_iterator_function->shared()->set_native(false);
|
| native_context()->set_string_iterator_map(
|
| string_iterator_function->initial_map());
|
| }
|
| @@ -1861,6 +1862,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| Handle<JSFunction> new_promise_capability =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| Builtins::kNewPromiseCapability, 2, false);
|
| + new_promise_capability->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(isolate, new_promise_capability,
|
| Context::NEW_PROMISE_CAPABILITY_INDEX);
|
| }
|
| @@ -1924,6 +1926,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| Handle<JSFunction> function =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| Builtins::kPromiseInternalConstructor, 1, true);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(
|
| isolate, function, Context::PROMISE_INTERNAL_CONSTRUCTOR_INDEX);
|
| }
|
| @@ -1931,6 +1934,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| { // Internal: IsPromise
|
| Handle<JSFunction> function = SimpleCreateFunction(
|
| isolate, factory->empty_string(), Builtins::kIsPromise, 1, false);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(isolate, function,
|
| Context::IS_PROMISE_INDEX);
|
| }
|
| @@ -1939,6 +1943,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| // Also exposed as extrasUtils.resolvePromise.
|
| Handle<JSFunction> function = SimpleCreateFunction(
|
| isolate, factory->empty_string(), Builtins::kResolvePromise, 2, true);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(isolate, function,
|
| Context::PROMISE_RESOLVE_INDEX);
|
| }
|
| @@ -1946,6 +1951,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| { // Internal: PromiseHandle
|
| Handle<JSFunction> function = SimpleCreateFunction(
|
| isolate, factory->empty_string(), Builtins::kPromiseHandle, 5, false);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(isolate, function,
|
| Context::PROMISE_HANDLE_INDEX);
|
| // Set up catch prediction
|
| @@ -1957,6 +1963,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| Handle<JSFunction> function =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| Builtins::kPromiseHandleReject, 3, false);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(isolate, function,
|
| Context::PROMISE_HANDLE_REJECT_INDEX);
|
| // Set up catch prediction
|
| @@ -1968,6 +1975,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| Handle<JSFunction> function =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| Builtins::kInternalPromiseReject, 3, true);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(isolate, function,
|
| Context::PROMISE_INTERNAL_REJECT_INDEX);
|
| }
|
| @@ -2434,6 +2442,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| CreateFunction(isolate, factory->InternalizeUtf8String("TypedArray"),
|
| JS_TYPED_ARRAY_TYPE, JSTypedArray::kSize, prototype,
|
| Builtins::kIllegal);
|
| + typed_array_fun->shared()->set_native(false);
|
| InstallSpeciesGetter(typed_array_fun);
|
|
|
| // Install the "constructor" property on the {prototype}.
|
| @@ -3375,6 +3384,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
| Handle<JSFunction> function =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| Builtins::kAsyncFunctionAwaitCaught, 3, false);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(
|
| isolate, function, Context::ASYNC_FUNCTION_AWAIT_CAUGHT_INDEX);
|
| }
|
| @@ -3383,6 +3393,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
| Handle<JSFunction> function =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| Builtins::kAsyncFunctionAwaitUncaught, 3, false);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(
|
| isolate, function, Context::ASYNC_FUNCTION_AWAIT_UNCAUGHT_INDEX);
|
| }
|
| @@ -3411,6 +3422,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
| Handle<JSFunction> function =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| Builtins::kAsyncFunctionPromiseCreate, 0, false);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(
|
| isolate, function, Context::ASYNC_FUNCTION_PROMISE_CREATE_INDEX);
|
| }
|
| @@ -3419,6 +3431,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
| Handle<JSFunction> function = SimpleCreateFunction(
|
| isolate, factory->empty_string(),
|
| Builtins::kAsyncFunctionPromiseRelease, 1, false);
|
| + function->shared()->set_native(false);
|
| InstallWithIntrinsicDefaultProto(
|
| isolate, function, Context::ASYNC_FUNCTION_PROMISE_RELEASE_INDEX);
|
| }
|
|
|