| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/bootstrapper.h" | 5 #include "src/bootstrapper.h" |
| 6 | 6 |
| 7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
| 8 #include "src/api-natives.h" | 8 #include "src/api-natives.h" |
| 9 #include "src/base/ieee754.h" | 9 #include "src/base/ieee754.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 | 993 |
| 994 Handle<JSFunction> error_fun = | 994 Handle<JSFunction> error_fun = |
| 995 InstallFunction(global, name, JS_ERROR_TYPE, JSObject::kHeaderSize, | 995 InstallFunction(global, name, JS_ERROR_TYPE, JSObject::kHeaderSize, |
| 996 isolate->initial_object_prototype(), | 996 isolate->initial_object_prototype(), |
| 997 Builtins::kErrorConstructor, DONT_ENUM); | 997 Builtins::kErrorConstructor, DONT_ENUM); |
| 998 error_fun->shared()->set_instance_class_name(*factory->Error_string()); | 998 error_fun->shared()->set_instance_class_name(*factory->Error_string()); |
| 999 error_fun->shared()->DontAdaptArguments(); | 999 error_fun->shared()->DontAdaptArguments(); |
| 1000 error_fun->shared()->set_construct_stub( | 1000 error_fun->shared()->set_construct_stub( |
| 1001 *isolate->builtins()->ErrorConstructor()); | 1001 *isolate->builtins()->ErrorConstructor()); |
| 1002 error_fun->shared()->set_length(1); | 1002 error_fun->shared()->set_length(1); |
| 1003 error_fun->shared()->set_native(true); | |
| 1004 | 1003 |
| 1005 if (context_index == Context::ERROR_FUNCTION_INDEX) { | 1004 if (context_index == Context::ERROR_FUNCTION_INDEX) { |
| 1006 Handle<JSFunction> capture_stack_trace_fun = | 1005 SimpleInstallFunction(error_fun, "captureStackTrace", |
| 1007 SimpleInstallFunction(error_fun, "captureStackTrace", | 1006 Builtins::kErrorCaptureStackTrace, 2, false); |
| 1008 Builtins::kErrorCaptureStackTrace, 2, false); | |
| 1009 capture_stack_trace_fun->shared()->set_native(true); | |
| 1010 } | 1007 } |
| 1011 | 1008 |
| 1012 InstallWithIntrinsicDefaultProto(isolate, error_fun, context_index); | 1009 InstallWithIntrinsicDefaultProto(isolate, error_fun, context_index); |
| 1013 | 1010 |
| 1014 { | 1011 { |
| 1015 Handle<JSObject> prototype = | 1012 Handle<JSObject> prototype = |
| 1016 factory->NewJSObject(isolate->object_function(), TENURED); | 1013 factory->NewJSObject(isolate->object_function(), TENURED); |
| 1017 | 1014 |
| 1018 JSObject::AddProperty(prototype, factory->name_string(), name, DONT_ENUM); | 1015 JSObject::AddProperty(prototype, factory->name_string(), name, DONT_ENUM); |
| 1019 JSObject::AddProperty(prototype, factory->message_string(), | 1016 JSObject::AddProperty(prototype, factory->message_string(), |
| 1020 factory->empty_string(), DONT_ENUM); | 1017 factory->empty_string(), DONT_ENUM); |
| 1021 JSObject::AddProperty(prototype, factory->constructor_string(), error_fun, | 1018 JSObject::AddProperty(prototype, factory->constructor_string(), error_fun, |
| 1022 DONT_ENUM); | 1019 DONT_ENUM); |
| 1023 | 1020 |
| 1024 if (context_index == Context::ERROR_FUNCTION_INDEX) { | 1021 if (context_index == Context::ERROR_FUNCTION_INDEX) { |
| 1025 Handle<JSFunction> to_string_fun = | 1022 Handle<JSFunction> to_string_fun = |
| 1026 SimpleInstallFunction(prototype, factory->toString_string(), | 1023 SimpleInstallFunction(prototype, factory->toString_string(), |
| 1027 Builtins::kErrorPrototypeToString, 0, true); | 1024 Builtins::kErrorPrototypeToString, 0, true); |
| 1028 to_string_fun->shared()->set_native(true); | |
| 1029 isolate->native_context()->set_error_to_string(*to_string_fun); | 1025 isolate->native_context()->set_error_to_string(*to_string_fun); |
| 1030 } else { | 1026 } else { |
| 1031 DCHECK(context_index != Context::ERROR_FUNCTION_INDEX); | 1027 DCHECK(context_index != Context::ERROR_FUNCTION_INDEX); |
| 1032 DCHECK(isolate->native_context()->error_to_string()->IsJSFunction()); | 1028 DCHECK(isolate->native_context()->error_to_string()->IsJSFunction()); |
| 1033 | 1029 |
| 1034 InstallFunction(prototype, isolate->error_to_string(), | 1030 InstallFunction(prototype, isolate->error_to_string(), |
| 1035 factory->toString_string(), DONT_ENUM); | 1031 factory->toString_string(), DONT_ENUM); |
| 1036 | 1032 |
| 1037 Handle<JSFunction> global_error = isolate->error_function(); | 1033 Handle<JSFunction> global_error = isolate->error_function(); |
| 1038 CHECK(JSReceiver::SetPrototype(error_fun, global_error, false, | 1034 CHECK(JSReceiver::SetPrototype(error_fun, global_error, false, |
| (...skipping 1730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2769 // Builtin functions for CallSite. | 2765 // Builtin functions for CallSite. |
| 2770 | 2766 |
| 2771 // CallSites are a special case; the constructor is for our private use | 2767 // CallSites are a special case; the constructor is for our private use |
| 2772 // only, therefore we set it up as a builtin that throws. Internally, we use | 2768 // only, therefore we set it up as a builtin that throws. Internally, we use |
| 2773 // CallSiteUtils::Construct to create CallSite objects. | 2769 // CallSiteUtils::Construct to create CallSite objects. |
| 2774 | 2770 |
| 2775 Handle<JSFunction> callsite_fun = InstallFunction( | 2771 Handle<JSFunction> callsite_fun = InstallFunction( |
| 2776 container, "CallSite", JS_OBJECT_TYPE, JSObject::kHeaderSize, | 2772 container, "CallSite", JS_OBJECT_TYPE, JSObject::kHeaderSize, |
| 2777 isolate->initial_object_prototype(), Builtins::kUnsupportedThrower); | 2773 isolate->initial_object_prototype(), Builtins::kUnsupportedThrower); |
| 2778 callsite_fun->shared()->DontAdaptArguments(); | 2774 callsite_fun->shared()->DontAdaptArguments(); |
| 2779 callsite_fun->shared()->set_native(true); | |
| 2780 | |
| 2781 isolate->native_context()->set_callsite_function(*callsite_fun); | 2775 isolate->native_context()->set_callsite_function(*callsite_fun); |
| 2782 | 2776 |
| 2783 { | 2777 { |
| 2784 Handle<JSObject> proto = | 2778 Handle<JSObject> proto = |
| 2785 factory->NewJSObject(isolate->object_function(), TENURED); | 2779 factory->NewJSObject(isolate->object_function(), TENURED); |
| 2786 JSObject::AddProperty(proto, factory->constructor_string(), callsite_fun, | 2780 JSObject::AddProperty(proto, factory->constructor_string(), callsite_fun, |
| 2787 DONT_ENUM); | 2781 DONT_ENUM); |
| 2788 | 2782 |
| 2789 struct FunctionInfo { | 2783 struct FunctionInfo { |
| 2790 const char* name; | 2784 const char* name; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2808 {"isEval", Builtins::kCallSitePrototypeIsEval}, | 2802 {"isEval", Builtins::kCallSitePrototypeIsEval}, |
| 2809 {"isNative", Builtins::kCallSitePrototypeIsNative}, | 2803 {"isNative", Builtins::kCallSitePrototypeIsNative}, |
| 2810 {"isToplevel", Builtins::kCallSitePrototypeIsToplevel}, | 2804 {"isToplevel", Builtins::kCallSitePrototypeIsToplevel}, |
| 2811 {"toString", Builtins::kCallSitePrototypeToString}}; | 2805 {"toString", Builtins::kCallSitePrototypeToString}}; |
| 2812 | 2806 |
| 2813 PropertyAttributes attrs = | 2807 PropertyAttributes attrs = |
| 2814 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | 2808 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 2815 | 2809 |
| 2816 Handle<JSFunction> fun; | 2810 Handle<JSFunction> fun; |
| 2817 for (const FunctionInfo& info : infos) { | 2811 for (const FunctionInfo& info : infos) { |
| 2818 fun = SimpleInstallFunction(proto, info.name, info.id, 0, true, attrs); | 2812 SimpleInstallFunction(proto, info.name, info.id, 0, true, attrs); |
| 2819 fun->shared()->set_native(true); | |
| 2820 } | 2813 } |
| 2821 | 2814 |
| 2822 Accessors::FunctionSetPrototype(callsite_fun, proto).Assert(); | 2815 Accessors::FunctionSetPrototype(callsite_fun, proto).Assert(); |
| 2823 } | 2816 } |
| 2824 } | 2817 } |
| 2825 } | 2818 } |
| 2826 | 2819 |
| 2827 | 2820 |
| 2828 void Bootstrapper::ExportExperimentalFromRuntime(Isolate* isolate, | 2821 void Bootstrapper::ExportExperimentalFromRuntime(Isolate* isolate, |
| 2829 Handle<JSObject> container) { | 2822 Handle<JSObject> container) { |
| (...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4192 } | 4185 } |
| 4193 | 4186 |
| 4194 | 4187 |
| 4195 // Called when the top-level V8 mutex is destroyed. | 4188 // Called when the top-level V8 mutex is destroyed. |
| 4196 void Bootstrapper::FreeThreadResources() { | 4189 void Bootstrapper::FreeThreadResources() { |
| 4197 DCHECK(!IsActive()); | 4190 DCHECK(!IsActive()); |
| 4198 } | 4191 } |
| 4199 | 4192 |
| 4200 } // namespace internal | 4193 } // namespace internal |
| 4201 } // namespace v8 | 4194 } // namespace v8 |
| OLD | NEW |