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/utils/random-number-generator.h" | 9 #include "src/base/utils/random-number-generator.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
300 Handle<Map> CreateStrictFunctionMap(FunctionMode function_mode, | 300 Handle<Map> CreateStrictFunctionMap(FunctionMode function_mode, |
301 Handle<JSFunction> empty_function); | 301 Handle<JSFunction> empty_function); |
302 Handle<Map> CreateStrongFunctionMap(Handle<JSFunction> empty_function, | 302 Handle<Map> CreateStrongFunctionMap(Handle<JSFunction> empty_function, |
303 bool is_constructor); | 303 bool is_constructor); |
304 | 304 |
305 | 305 |
306 void SetStrictFunctionInstanceDescriptor(Handle<Map> map, | 306 void SetStrictFunctionInstanceDescriptor(Handle<Map> map, |
307 FunctionMode function_mode); | 307 FunctionMode function_mode); |
308 void SetStrongFunctionInstanceDescriptor(Handle<Map> map); | 308 void SetStrongFunctionInstanceDescriptor(Handle<Map> map); |
309 | 309 |
310 static bool CompileBuiltin(Isolate* isolate, int index, | 310 static bool CompileBuiltin(Isolate* isolate, int index); |
311 Handle<JSObject> shared); | |
312 static bool CompileExperimentalBuiltin(Isolate* isolate, int index); | 311 static bool CompileExperimentalBuiltin(Isolate* isolate, int index); |
313 static bool CompileExtraBuiltin(Isolate* isolate, int index); | 312 static bool CompileExtraBuiltin(Isolate* isolate, int index); |
314 static bool CompileNative(Isolate* isolate, Vector<const char> name, | 313 static bool CompileNative(Isolate* isolate, Vector<const char> name, |
315 Handle<String> source, int argc, | 314 Handle<String> source, int argc, |
316 Handle<Object> argv[]); | 315 Handle<Object> argv[]); |
317 | 316 |
317 static bool CallUtilsFunction(Isolate* isolate, const char* name); | |
318 | |
318 static bool CompileExtension(Isolate* isolate, v8::Extension* extension); | 319 static bool CompileExtension(Isolate* isolate, v8::Extension* extension); |
319 | 320 |
320 Isolate* isolate_; | 321 Isolate* isolate_; |
321 Handle<Context> result_; | 322 Handle<Context> result_; |
322 Handle<Context> native_context_; | 323 Handle<Context> native_context_; |
323 | 324 |
324 // Function maps. Function maps are created initially with a read only | 325 // Function maps. Function maps are created initially with a read only |
325 // prototype for the processing of JS builtins. Later the function maps are | 326 // prototype for the processing of JS builtins. Later the function maps are |
326 // replaced in order to make prototype writable. These are the final, writable | 327 // replaced in order to make prototype writable. These are the final, writable |
327 // prototype, maps. | 328 // prototype, maps. |
(...skipping 1107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1435 void Genesis::InitializeExperimentalGlobal() { | 1436 void Genesis::InitializeExperimentalGlobal() { |
1436 #define FEATURE_INITIALIZE_GLOBAL(id, descr) InitializeGlobal_##id(); | 1437 #define FEATURE_INITIALIZE_GLOBAL(id, descr) InitializeGlobal_##id(); |
1437 | 1438 |
1438 HARMONY_INPROGRESS(FEATURE_INITIALIZE_GLOBAL) | 1439 HARMONY_INPROGRESS(FEATURE_INITIALIZE_GLOBAL) |
1439 HARMONY_STAGED(FEATURE_INITIALIZE_GLOBAL) | 1440 HARMONY_STAGED(FEATURE_INITIALIZE_GLOBAL) |
1440 HARMONY_SHIPPING(FEATURE_INITIALIZE_GLOBAL) | 1441 HARMONY_SHIPPING(FEATURE_INITIALIZE_GLOBAL) |
1441 #undef FEATURE_INITIALIZE_GLOBAL | 1442 #undef FEATURE_INITIALIZE_GLOBAL |
1442 } | 1443 } |
1443 | 1444 |
1444 | 1445 |
1445 bool Genesis::CompileBuiltin(Isolate* isolate, int index, | 1446 bool Genesis::CompileBuiltin(Isolate* isolate, int index) { |
1446 Handle<JSObject> shared) { | |
1447 Vector<const char> name = Natives::GetScriptName(index); | 1447 Vector<const char> name = Natives::GetScriptName(index); |
1448 Handle<String> source_code = | 1448 Handle<String> source_code = |
1449 isolate->bootstrapper()->SourceLookup<Natives>(index); | 1449 isolate->bootstrapper()->SourceLookup<Natives>(index); |
1450 Handle<Object> global = isolate->global_object(); | 1450 Handle<Object> global = isolate->global_object(); |
1451 Handle<Object> exports = isolate->builtin_exports_object(); | 1451 Handle<Object> utils = isolate->natives_utils_object(); |
1452 Handle<Object> args[] = {global, shared, exports}; | 1452 Handle<Object> args[] = {global, utils}; |
1453 return CompileNative(isolate, name, source_code, arraysize(args), args); | 1453 return CompileNative(isolate, name, source_code, arraysize(args), args); |
1454 } | 1454 } |
1455 | 1455 |
1456 | 1456 |
1457 bool Genesis::CompileExperimentalBuiltin(Isolate* isolate, int index) { | 1457 bool Genesis::CompileExperimentalBuiltin(Isolate* isolate, int index) { |
1458 HandleScope scope(isolate); | 1458 HandleScope scope(isolate); |
1459 Vector<const char> name = ExperimentalNatives::GetScriptName(index); | 1459 Vector<const char> name = ExperimentalNatives::GetScriptName(index); |
1460 Handle<String> source_code = | 1460 Handle<String> source_code = |
1461 isolate->bootstrapper()->SourceLookup<ExperimentalNatives>(index); | 1461 isolate->bootstrapper()->SourceLookup<ExperimentalNatives>(index); |
1462 Handle<Object> global = isolate->global_object(); | 1462 Handle<Object> global = isolate->global_object(); |
1463 Handle<Object> exports = isolate->builtin_exports_object(); | 1463 Handle<Object> utils = isolate->natives_utils_object(); |
1464 Handle<Object> args[] = {global, exports}; | 1464 Handle<Object> args[] = {global, utils}; |
1465 return CompileNative(isolate, name, source_code, arraysize(args), args); | 1465 return CompileNative(isolate, name, source_code, arraysize(args), args); |
1466 } | 1466 } |
1467 | 1467 |
1468 | 1468 |
1469 bool Genesis::CompileExtraBuiltin(Isolate* isolate, int index) { | 1469 bool Genesis::CompileExtraBuiltin(Isolate* isolate, int index) { |
1470 HandleScope scope(isolate); | 1470 HandleScope scope(isolate); |
1471 Vector<const char> name = ExtraNatives::GetScriptName(index); | 1471 Vector<const char> name = ExtraNatives::GetScriptName(index); |
1472 Handle<String> source_code = | 1472 Handle<String> source_code = |
1473 isolate->bootstrapper()->SourceLookup<ExtraNatives>(index); | 1473 isolate->bootstrapper()->SourceLookup<ExtraNatives>(index); |
1474 Handle<Object> global = isolate->global_object(); | 1474 Handle<Object> global = isolate->global_object(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1510 Handle<Object> wrapper; | 1510 Handle<Object> wrapper; |
1511 if (!Execution::Call(isolate, fun, receiver, 0, NULL).ToHandle(&wrapper)) { | 1511 if (!Execution::Call(isolate, fun, receiver, 0, NULL).ToHandle(&wrapper)) { |
1512 return false; | 1512 return false; |
1513 } | 1513 } |
1514 // Then run the function wrapper. | 1514 // Then run the function wrapper. |
1515 return !Execution::Call(isolate, Handle<JSFunction>::cast(wrapper), receiver, | 1515 return !Execution::Call(isolate, Handle<JSFunction>::cast(wrapper), receiver, |
1516 argc, argv).is_null(); | 1516 argc, argv).is_null(); |
1517 } | 1517 } |
1518 | 1518 |
1519 | 1519 |
1520 bool Genesis::CallUtilsFunction(Isolate* isolate, const char* name) { | |
1521 Handle<JSObject> utils = | |
1522 Handle<JSObject>::cast(isolate->natives_utils_object()); | |
1523 Handle<String> name_string = | |
1524 isolate->factory()->NewStringFromAsciiChecked("PostNatives"); | |
Jakob Kummerow
2015/05/20 13:23:27
Did you mean s/"PostNatives"/name/ here?
| |
1525 Handle<Object> fun = JSObject::GetDataProperty(utils, name_string); | |
1526 Handle<Object> receiver = isolate->factory()->undefined_value(); | |
1527 return !Execution::Call(isolate, fun, receiver, 0, NULL).is_null(); | |
1528 } | |
1529 | |
1530 | |
1520 bool Genesis::CompileExtension(Isolate* isolate, v8::Extension* extension) { | 1531 bool Genesis::CompileExtension(Isolate* isolate, v8::Extension* extension) { |
1521 Factory* factory = isolate->factory(); | 1532 Factory* factory = isolate->factory(); |
1522 HandleScope scope(isolate); | 1533 HandleScope scope(isolate); |
1523 Handle<SharedFunctionInfo> function_info; | 1534 Handle<SharedFunctionInfo> function_info; |
1524 | 1535 |
1525 Handle<String> source = | 1536 Handle<String> source = |
1526 isolate->factory() | 1537 isolate->factory() |
1527 ->NewExternalStringFromOneByte(extension->source()) | 1538 ->NewExternalStringFromOneByte(extension->source()) |
1528 .ToHandleChecked(); | 1539 .ToHandleChecked(); |
1529 DCHECK(source->IsOneByteRepresentation()); | 1540 DCHECK(source->IsOneByteRepresentation()); |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1911 Handle<JSFunction> bridge = factory()->NewFunction(factory()->empty_string()); | 1922 Handle<JSFunction> bridge = factory()->NewFunction(factory()->empty_string()); |
1912 DCHECK(bridge->context() == *isolate()->native_context()); | 1923 DCHECK(bridge->context() == *isolate()->native_context()); |
1913 | 1924 |
1914 // Allocate the builtins context. | 1925 // Allocate the builtins context. |
1915 Handle<Context> context = | 1926 Handle<Context> context = |
1916 factory()->NewFunctionContext(Context::MIN_CONTEXT_SLOTS, bridge); | 1927 factory()->NewFunctionContext(Context::MIN_CONTEXT_SLOTS, bridge); |
1917 context->set_global_object(*builtins); // override builtins global object | 1928 context->set_global_object(*builtins); // override builtins global object |
1918 | 1929 |
1919 native_context()->set_runtime_context(*context); | 1930 native_context()->set_runtime_context(*context); |
1920 | 1931 |
1921 // Set up shared object to set up cross references between native scripts. | 1932 // Set up the utils object as shared container between native scripts. |
1922 // "shared" is used for cross references between native scripts that are part | 1933 Handle<JSObject> utils = factory()->NewJSObject(isolate()->object_function()); |
1923 // of the snapshot. "builtin_exports" is used for experimental natives. | 1934 JSObject::NormalizeProperties(utils, CLEAR_INOBJECT_PROPERTIES, 16, |
1924 Handle<JSObject> shared = | 1935 "utils container for native scripts"); |
1925 factory()->NewJSObject(isolate()->object_function()); | 1936 native_context()->set_natives_utils_object(*utils); |
1926 JSObject::NormalizeProperties(shared, CLEAR_INOBJECT_PROPERTIES, 16, | |
1927 "container to share between native scripts"); | |
1928 | |
1929 Handle<JSObject> builtin_exports = | |
1930 factory()->NewJSObject(isolate()->object_function()); | |
1931 JSObject::NormalizeProperties(builtin_exports, CLEAR_INOBJECT_PROPERTIES, 16, | |
1932 "container to export to experimental natives"); | |
1933 native_context()->set_builtin_exports_object(*builtin_exports); | |
1934 | 1937 |
1935 Handle<JSObject> extras_exports = | 1938 Handle<JSObject> extras_exports = |
1936 factory()->NewJSObject(isolate()->object_function()); | 1939 factory()->NewJSObject(isolate()->object_function()); |
1937 JSObject::NormalizeProperties(extras_exports, CLEAR_INOBJECT_PROPERTIES, 2, | 1940 JSObject::NormalizeProperties(extras_exports, CLEAR_INOBJECT_PROPERTIES, 2, |
1938 "container to export to extra natives"); | 1941 "container to export to extra natives"); |
1939 native_context()->set_extras_exports_object(*extras_exports); | 1942 native_context()->set_extras_exports_object(*extras_exports); |
1940 | 1943 |
1941 if (FLAG_expose_natives_as != NULL) { | 1944 if (FLAG_expose_natives_as != NULL) { |
1942 Handle<String> shared_key = factory()->NewStringFromAsciiChecked("shared"); | 1945 Handle<String> utils_key = factory()->NewStringFromAsciiChecked("utils"); |
1943 JSObject::AddProperty(builtins, shared_key, shared, NONE); | 1946 JSObject::AddProperty(builtins, utils_key, utils, NONE); |
1944 } | 1947 } |
1945 | 1948 |
1946 { // -- S c r i p t | 1949 { // -- S c r i p t |
1947 // Builtin functions for Script. | 1950 // Builtin functions for Script. |
1948 Handle<JSFunction> script_fun = InstallFunction( | 1951 Handle<JSFunction> script_fun = InstallFunction( |
1949 builtins, "Script", JS_VALUE_TYPE, JSValue::kSize, | 1952 builtins, "Script", JS_VALUE_TYPE, JSValue::kSize, |
1950 isolate()->initial_object_prototype(), Builtins::kIllegal); | 1953 isolate()->initial_object_prototype(), Builtins::kIllegal); |
1951 Handle<JSObject> prototype = | 1954 Handle<JSObject> prototype = |
1952 factory()->NewJSObject(isolate()->object_function(), TENURED); | 1955 factory()->NewJSObject(isolate()->object_function(), TENURED); |
1953 Accessors::FunctionSetPrototype(script_fun, prototype).Assert(); | 1956 Accessors::FunctionSetPrototype(script_fun, prototype).Assert(); |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2109 native_context()->set_opaque_reference_function(*opaque_reference_fun); | 2112 native_context()->set_opaque_reference_function(*opaque_reference_fun); |
2110 } | 2113 } |
2111 | 2114 |
2112 // InternalArrays should not use Smi-Only array optimizations. There are too | 2115 // InternalArrays should not use Smi-Only array optimizations. There are too |
2113 // many places in the C++ runtime code (e.g. RegEx) that assume that | 2116 // many places in the C++ runtime code (e.g. RegEx) that assume that |
2114 // elements in InternalArrays can be set to non-Smi values without going | 2117 // elements in InternalArrays can be set to non-Smi values without going |
2115 // through a common bottleneck that would make the SMI_ONLY -> FAST_ELEMENT | 2118 // through a common bottleneck that would make the SMI_ONLY -> FAST_ELEMENT |
2116 // transition easy to trap. Moreover, they rarely are smi-only. | 2119 // transition easy to trap. Moreover, they rarely are smi-only. |
2117 { | 2120 { |
2118 HandleScope scope(isolate()); | 2121 HandleScope scope(isolate()); |
2119 Handle<JSObject> builtin_exports = | 2122 Handle<JSObject> utils = |
2120 Handle<JSObject>::cast(isolate()->builtin_exports_object()); | 2123 Handle<JSObject>::cast(isolate()->natives_utils_object()); |
2121 Handle<JSFunction> array_function = InstallInternalArray( | 2124 Handle<JSFunction> array_function = |
2122 builtin_exports, "InternalArray", FAST_HOLEY_ELEMENTS); | 2125 InstallInternalArray(utils, "InternalArray", FAST_HOLEY_ELEMENTS); |
2123 native_context()->set_internal_array_function(*array_function); | 2126 native_context()->set_internal_array_function(*array_function); |
2124 InstallInternalArray(builtin_exports, "InternalPackedArray", FAST_ELEMENTS); | 2127 InstallInternalArray(utils, "InternalPackedArray", FAST_ELEMENTS); |
2125 } | 2128 } |
2126 | 2129 |
2127 { // -- S e t I t e r a t o r | 2130 { // -- S e t I t e r a t o r |
2128 Handle<JSFunction> set_iterator_function = InstallFunction( | 2131 Handle<JSFunction> set_iterator_function = InstallFunction( |
2129 builtins, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, | 2132 builtins, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, |
2130 isolate()->initial_object_prototype(), Builtins::kIllegal); | 2133 isolate()->initial_object_prototype(), Builtins::kIllegal); |
2131 native_context()->set_set_iterator_map( | 2134 native_context()->set_set_iterator_map( |
2132 set_iterator_function->initial_map()); | 2135 set_iterator_function->initial_map()); |
2133 } | 2136 } |
2134 | 2137 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2214 { | 2217 { |
2215 static const PropertyAttributes attributes = | 2218 static const PropertyAttributes attributes = |
2216 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE); | 2219 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE); |
2217 #define INSTALL_PUBLIC_SYMBOL(name, varname, description) \ | 2220 #define INSTALL_PUBLIC_SYMBOL(name, varname, description) \ |
2218 Handle<String> varname = factory()->NewStringFromStaticChars(#varname); \ | 2221 Handle<String> varname = factory()->NewStringFromStaticChars(#varname); \ |
2219 JSObject::AddProperty(builtins, varname, factory()->name(), attributes); | 2222 JSObject::AddProperty(builtins, varname, factory()->name(), attributes); |
2220 PUBLIC_SYMBOL_LIST(INSTALL_PUBLIC_SYMBOL) | 2223 PUBLIC_SYMBOL_LIST(INSTALL_PUBLIC_SYMBOL) |
2221 #undef INSTALL_PUBLIC_SYMBOL | 2224 #undef INSTALL_PUBLIC_SYMBOL |
2222 } | 2225 } |
2223 | 2226 |
2224 // Install natives. Everything exported to experimental natives is also | |
2225 // shared to regular natives. | |
2226 TransferNamedProperties(builtin_exports, shared); | |
2227 int i = Natives::GetDebuggerCount(); | 2227 int i = Natives::GetDebuggerCount(); |
2228 if (!CompileBuiltin(isolate(), i, shared)) return false; | 2228 if (!CompileBuiltin(isolate(), i)) return false; |
2229 if (!InstallJSBuiltins(builtins)) return false; | 2229 if (!InstallJSBuiltins(builtins)) return false; |
2230 | 2230 |
2231 for (++i; i < Natives::GetBuiltinsCount(); ++i) { | 2231 for (++i; i < Natives::GetBuiltinsCount(); ++i) { |
2232 if (!CompileBuiltin(isolate(), i, shared)) return false; | 2232 if (!CompileBuiltin(isolate(), i)) return false; |
2233 } | 2233 } |
2234 | 2234 |
2235 if (!CallUtilsFunction(isolate(), "PostNatives")) return false; | |
2236 | |
2235 InstallNativeFunctions(); | 2237 InstallNativeFunctions(); |
2236 | 2238 |
2237 auto function_cache = | 2239 auto function_cache = |
2238 ObjectHashTable::New(isolate(), ApiNatives::kInitialFunctionCacheSize); | 2240 ObjectHashTable::New(isolate(), ApiNatives::kInitialFunctionCacheSize); |
2239 native_context()->set_function_cache(*function_cache); | 2241 native_context()->set_function_cache(*function_cache); |
2240 | 2242 |
2241 // Store the map for the string prototype after the natives has been compiled | 2243 // Store the map for the string prototype after the natives has been compiled |
2242 // and the String function has been set up. | 2244 // and the String function has been set up. |
2243 Handle<JSFunction> string_function(native_context()->string_function()); | 2245 Handle<JSFunction> string_function(native_context()->string_function()); |
2244 DCHECK(JSObject::cast( | 2246 DCHECK(JSObject::cast( |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2537 Handle<JSGlobalObject> global(JSGlobalObject::cast( | 2539 Handle<JSGlobalObject> global(JSGlobalObject::cast( |
2538 native_context->global_object())); | 2540 native_context->global_object())); |
2539 | 2541 |
2540 Handle<JSObject> Error = Handle<JSObject>::cast( | 2542 Handle<JSObject> Error = Handle<JSObject>::cast( |
2541 Object::GetProperty(isolate, global, "Error").ToHandleChecked()); | 2543 Object::GetProperty(isolate, global, "Error").ToHandleChecked()); |
2542 Handle<String> name = | 2544 Handle<String> name = |
2543 factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("stackTraceLimit")); | 2545 factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("stackTraceLimit")); |
2544 Handle<Smi> stack_trace_limit(Smi::FromInt(FLAG_stack_trace_limit), isolate); | 2546 Handle<Smi> stack_trace_limit(Smi::FromInt(FLAG_stack_trace_limit), isolate); |
2545 JSObject::AddProperty(Error, name, stack_trace_limit, NONE); | 2547 JSObject::AddProperty(Error, name, stack_trace_limit, NONE); |
2546 | 2548 |
2547 Handle<Object> builtin_exports(native_context->builtin_exports_object(), | 2549 // By now the utils object is useless and can be removed. |
2548 isolate); | 2550 native_context->set_natives_utils_object(*factory->undefined_value()); |
2549 native_context->set_builtin_exports_object(Smi::FromInt(0)); | |
2550 | 2551 |
2551 // Expose the natives in global if a name for it is specified. | 2552 // Expose the natives in global if a name for it is specified. |
2552 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) { | 2553 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) { |
2553 Handle<String> natives_key = | 2554 Handle<String> natives_key = |
2554 factory->InternalizeUtf8String(FLAG_expose_natives_as); | 2555 factory->InternalizeUtf8String(FLAG_expose_natives_as); |
2555 uint32_t dummy_index; | 2556 uint32_t dummy_index; |
2556 if (natives_key->AsArrayIndex(&dummy_index)) return true; | 2557 if (natives_key->AsArrayIndex(&dummy_index)) return true; |
2557 Handle<JSBuiltinsObject> natives(global->builtins()); | 2558 Handle<JSBuiltinsObject> natives(global->builtins()); |
2558 JSObject::AddProperty(global, natives_key, natives, DONT_ENUM); | 2559 JSObject::AddProperty(global, natives_key, natives, DONT_ENUM); |
2559 Handle<String> builtin_exports_key = | |
2560 factory->NewStringFromAsciiChecked("builtin_exports"); | |
2561 JSObject::AddProperty(natives, builtin_exports_key, builtin_exports, NONE); | |
2562 } | 2560 } |
2563 | 2561 |
2564 // Expose the stack trace symbol to native JS. | 2562 // Expose the stack trace symbol to native JS. |
2565 RETURN_ON_EXCEPTION_VALUE(isolate, | 2563 RETURN_ON_EXCEPTION_VALUE(isolate, |
2566 JSObject::SetOwnPropertyIgnoreAttributes( | 2564 JSObject::SetOwnPropertyIgnoreAttributes( |
2567 handle(native_context->builtins(), isolate), | 2565 handle(native_context->builtins(), isolate), |
2568 factory->InternalizeOneByteString( | 2566 factory->InternalizeOneByteString( |
2569 STATIC_CHAR_VECTOR("$stackTraceSymbol")), | 2567 STATIC_CHAR_VECTOR("$stackTraceSymbol")), |
2570 factory->stack_trace_symbol(), NONE), | 2568 factory->stack_trace_symbol(), NONE), |
2571 false); | 2569 false); |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3044 return from + sizeof(NestingCounterType); | 3042 return from + sizeof(NestingCounterType); |
3045 } | 3043 } |
3046 | 3044 |
3047 | 3045 |
3048 // Called when the top-level V8 mutex is destroyed. | 3046 // Called when the top-level V8 mutex is destroyed. |
3049 void Bootstrapper::FreeThreadResources() { | 3047 void Bootstrapper::FreeThreadResources() { |
3050 DCHECK(!IsActive()); | 3048 DCHECK(!IsActive()); |
3051 } | 3049 } |
3052 | 3050 |
3053 } } // namespace v8::internal | 3051 } } // namespace v8::internal |
OLD | NEW |