Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index 29bff36d2cfbfc3c79f3119ef901469fde892c24..57c085e6e03423af3dfd952f648ab3ededf3c084 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -1102,6 +1102,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object, |
empty_function, Builtins::kIllegal); |
function_function->initial_map()->set_is_callable(); |
function_function->initial_map()->set_is_constructor(true); |
+ function_function->shared()->set_construct_stub( |
+ isolate->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
{ // --- A r r a y --- |
Handle<JSFunction> array_function = |
@@ -1158,6 +1160,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object, |
isolate->initial_object_prototype(), |
Builtins::kIllegal); |
native_context()->set_number_function(*number_fun); |
+ number_fun->shared()->set_construct_stub( |
+ isolate->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
} |
{ // --- B o o l e a n --- |
@@ -1208,8 +1212,11 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object, |
{ // --- D a t e --- |
// Builtin functions for Date.prototype. |
- InstallFunction(global, "Date", JS_DATE_TYPE, JSDate::kSize, |
- isolate->initial_object_prototype(), Builtins::kIllegal); |
+ Handle<JSFunction> date_fun = InstallFunction( |
+ global, "Date", JS_DATE_TYPE, JSDate::kSize, |
+ isolate->initial_object_prototype(), Builtins::kIllegal); |
+ date_fun->shared()->set_construct_stub( |
+ isolate->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
} |
{ // -- R e g E x p |
@@ -1219,6 +1226,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object, |
isolate->initial_object_prototype(), |
Builtins::kIllegal); |
native_context()->set_regexp_function(*regexp_fun); |
+ regexp_fun->shared()->set_construct_stub( |
+ isolate->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
DCHECK(regexp_fun->has_initial_map()); |
Handle<Map> initial_map(regexp_fun->initial_map()); |
@@ -1298,6 +1307,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object, |
isolate->initial_object_prototype(), |
Builtins::kIllegal); |
native_context()->set_data_view_fun(*data_view_fun); |
+ data_view_fun->shared()->set_construct_stub( |
+ isolate->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
} |
{ // -- M a p |
@@ -1841,6 +1852,8 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate, |
Builtins::kIllegal, kUseStrictFunctionMap); |
generator_function_function->initial_map()->set_is_callable(); |
generator_function_function->initial_map()->set_is_constructor(true); |
+ generator_function_function->shared()->set_construct_stub( |
+ isolate->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
} |
{ // -- S e t I t e r a t o r |
@@ -2191,8 +2204,14 @@ void Genesis::InitializeGlobal_harmony_proxies() { |
Handle<JSGlobalObject> global( |
JSGlobalObject::cast(native_context()->global_object())); |
Isolate* isolate = global->GetIsolate(); |
- InstallFunction(global, "Proxy", JS_PROXY_TYPE, JSProxy::kSize, |
- isolate->initial_object_prototype(), Builtins::kIllegal); |
+ Handle<JSFunction> proxy_fun = |
+ InstallFunction(global, "Proxy", JS_PROXY_TYPE, JSProxy::kSize, |
+ isolate->initial_object_prototype(), Builtins::kIllegal); |
+ // TODO(verwaest): Set to null in InstallFunction. |
+ proxy_fun->initial_map()->set_prototype(isolate->heap()->null_value()); |
+ proxy_fun->shared()->set_construct_stub( |
+ isolate->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
+ native_context()->set_proxy_function(*proxy_fun); |
} |
@@ -2438,6 +2457,18 @@ bool Genesis::InstallNatives(ContextType context_type) { |
apply->shared()->set_length(2); |
} |
+ // Set up the Promise constructor. |
+ { |
+ Handle<String> key = factory()->Promise_string(); |
+ Handle<JSFunction> function = Handle<JSFunction>::cast( |
+ Object::GetProperty(handle(native_context()->global_object()), key) |
+ .ToHandleChecked()); |
+ JSFunction::EnsureHasInitialMap(function); |
+ function->initial_map()->set_instance_type(JS_PROMISE_TYPE); |
+ function->shared()->set_construct_stub( |
+ isolate()->builtins()->builtin(Builtins::kJSBuiltinsConstructStub)); |
+ } |
+ |
InstallBuiltinFunctionIds(); |
// Create a constructor for RegExp results (a variant of Array that |