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 "bootstrapper.h" | 5 #include "bootstrapper.h" |
6 | 6 |
7 #include "accessors.h" | 7 #include "accessors.h" |
8 #include "isolate-inl.h" | 8 #include "isolate-inl.h" |
9 #include "natives.h" | 9 #include "natives.h" |
10 #include "snapshot.h" | 10 #include "snapshot.h" |
(...skipping 2005 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2016 ASSERT(!property_string.is_null()); | 2016 ASSERT(!property_string.is_null()); |
2017 Handle<JSFunction> function = Handle<JSFunction>::cast( | 2017 Handle<JSFunction> function = Handle<JSFunction>::cast( |
2018 Object::GetProperty(global, property_string).ToHandleChecked()); | 2018 Object::GetProperty(global, property_string).ToHandleChecked()); |
2019 return Handle<JSObject>(JSObject::cast(function->prototype())); | 2019 return Handle<JSObject>(JSObject::cast(function->prototype())); |
2020 } | 2020 } |
2021 | 2021 |
2022 | 2022 |
2023 static void InstallBuiltinFunctionId(Handle<JSObject> holder, | 2023 static void InstallBuiltinFunctionId(Handle<JSObject> holder, |
2024 const char* function_name, | 2024 const char* function_name, |
2025 BuiltinFunctionId id) { | 2025 BuiltinFunctionId id) { |
2026 Factory* factory = holder->GetIsolate()->factory(); | 2026 Isolate* isolate = holder->GetIsolate(); |
2027 Handle<String> name = factory->InternalizeUtf8String(function_name); | |
2028 Handle<Object> function_object = | 2027 Handle<Object> function_object = |
2029 Object::GetProperty(holder, name).ToHandleChecked(); | 2028 Object::GetProperty(isolate, holder, function_name).ToHandleChecked(); |
2030 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object); | 2029 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object); |
2031 function->shared()->set_function_data(Smi::FromInt(id)); | 2030 function->shared()->set_function_data(Smi::FromInt(id)); |
2032 } | 2031 } |
2033 | 2032 |
2034 | 2033 |
2035 void Genesis::InstallBuiltinFunctionIds() { | 2034 void Genesis::InstallBuiltinFunctionIds() { |
2036 HandleScope scope(isolate()); | 2035 HandleScope scope(isolate()); |
2037 #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \ | 2036 #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \ |
2038 { \ | 2037 { \ |
2039 Handle<JSObject> holder = ResolveBuiltinIdHolder( \ | 2038 Handle<JSObject> holder = ResolveBuiltinIdHolder( \ |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2126 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) { | 2125 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) { |
2127 Handle<String> natives = | 2126 Handle<String> natives = |
2128 factory->InternalizeUtf8String(FLAG_expose_natives_as); | 2127 factory->InternalizeUtf8String(FLAG_expose_natives_as); |
2129 RETURN_ON_EXCEPTION_VALUE( | 2128 RETURN_ON_EXCEPTION_VALUE( |
2130 isolate, | 2129 isolate, |
2131 JSObject::SetLocalPropertyIgnoreAttributes( | 2130 JSObject::SetLocalPropertyIgnoreAttributes( |
2132 global, natives, Handle<JSObject>(global->builtins()), DONT_ENUM), | 2131 global, natives, Handle<JSObject>(global->builtins()), DONT_ENUM), |
2133 false); | 2132 false); |
2134 } | 2133 } |
2135 | 2134 |
2136 Handle<Object> Error = GetProperty(global, "Error").ToHandleChecked(); | 2135 Handle<Object> Error = Object::GetProperty( |
| 2136 isolate, global, "Error").ToHandleChecked(); |
2137 if (Error->IsJSObject()) { | 2137 if (Error->IsJSObject()) { |
2138 Handle<String> name = factory->InternalizeOneByteString( | 2138 Handle<String> name = factory->InternalizeOneByteString( |
2139 STATIC_ASCII_VECTOR("stackTraceLimit")); | 2139 STATIC_ASCII_VECTOR("stackTraceLimit")); |
2140 Handle<Smi> stack_trace_limit( | 2140 Handle<Smi> stack_trace_limit( |
2141 Smi::FromInt(FLAG_stack_trace_limit), isolate); | 2141 Smi::FromInt(FLAG_stack_trace_limit), isolate); |
2142 RETURN_ON_EXCEPTION_VALUE( | 2142 RETURN_ON_EXCEPTION_VALUE( |
2143 isolate, | 2143 isolate, |
2144 JSObject::SetLocalPropertyIgnoreAttributes( | 2144 JSObject::SetLocalPropertyIgnoreAttributes( |
2145 Handle<JSObject>::cast(Error), name, stack_trace_limit, NONE), | 2145 Handle<JSObject>::cast(Error), name, stack_trace_limit, NONE), |
2146 false); | 2146 false); |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2307 extension_states->set_state(current, INSTALLED); | 2307 extension_states->set_state(current, INSTALLED); |
2308 isolate->NotifyExtensionInstalled(); | 2308 isolate->NotifyExtensionInstalled(); |
2309 return result; | 2309 return result; |
2310 } | 2310 } |
2311 | 2311 |
2312 | 2312 |
2313 bool Genesis::InstallJSBuiltins(Handle<JSBuiltinsObject> builtins) { | 2313 bool Genesis::InstallJSBuiltins(Handle<JSBuiltinsObject> builtins) { |
2314 HandleScope scope(isolate()); | 2314 HandleScope scope(isolate()); |
2315 for (int i = 0; i < Builtins::NumberOfJavaScriptBuiltins(); i++) { | 2315 for (int i = 0; i < Builtins::NumberOfJavaScriptBuiltins(); i++) { |
2316 Builtins::JavaScript id = static_cast<Builtins::JavaScript>(i); | 2316 Builtins::JavaScript id = static_cast<Builtins::JavaScript>(i); |
2317 Handle<String> name = | 2317 Handle<Object> function_object = Object::GetProperty( |
2318 factory()->InternalizeUtf8String(Builtins::GetName(id)); | 2318 isolate(), builtins, Builtins::GetName(id)).ToHandleChecked(); |
2319 Handle<Object> function_object = | |
2320 Object::GetProperty(builtins, name).ToHandleChecked(); | |
2321 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object); | 2319 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object); |
2322 builtins->set_javascript_builtin(id, *function); | 2320 builtins->set_javascript_builtin(id, *function); |
2323 if (!Compiler::EnsureCompiled(function, CLEAR_EXCEPTION)) { | 2321 if (!Compiler::EnsureCompiled(function, CLEAR_EXCEPTION)) { |
2324 return false; | 2322 return false; |
2325 } | 2323 } |
2326 builtins->set_javascript_builtin_code(id, function->shared()->code()); | 2324 builtins->set_javascript_builtin_code(id, function->shared()->code()); |
2327 } | 2325 } |
2328 return true; | 2326 return true; |
2329 } | 2327 } |
2330 | 2328 |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2684 return from + sizeof(NestingCounterType); | 2682 return from + sizeof(NestingCounterType); |
2685 } | 2683 } |
2686 | 2684 |
2687 | 2685 |
2688 // Called when the top-level V8 mutex is destroyed. | 2686 // Called when the top-level V8 mutex is destroyed. |
2689 void Bootstrapper::FreeThreadResources() { | 2687 void Bootstrapper::FreeThreadResources() { |
2690 ASSERT(!IsActive()); | 2688 ASSERT(!IsActive()); |
2691 } | 2689 } |
2692 | 2690 |
2693 } } // namespace v8::internal | 2691 } } // namespace v8::internal |
OLD | NEW |