| 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/code-stubs.h" | 8 #include "src/code-stubs.h" |
| 9 #include "src/extensions/externalize-string-extension.h" | 9 #include "src/extensions/externalize-string-extension.h" |
| 10 #include "src/extensions/free-buffer-extension.h" | 10 #include "src/extensions/free-buffer-extension.h" |
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 TENURED); | 502 TENURED); |
| 503 Handle<Map> map = Map::Copy(handle(prototype->map())); | 503 Handle<Map> map = Map::Copy(handle(prototype->map())); |
| 504 map->set_is_prototype_map(true); | 504 map->set_is_prototype_map(true); |
| 505 prototype->set_map(*map); | 505 prototype->set_map(*map); |
| 506 | 506 |
| 507 native_context()->set_initial_object_prototype(*prototype); | 507 native_context()->set_initial_object_prototype(*prototype); |
| 508 // For bootstrapping set the array prototype to be the same as the object | 508 // For bootstrapping set the array prototype to be the same as the object |
| 509 // prototype, otherwise the missing initial_array_prototype will cause | 509 // prototype, otherwise the missing initial_array_prototype will cause |
| 510 // assertions during startup. | 510 // assertions during startup. |
| 511 native_context()->set_initial_array_prototype(*prototype); | 511 native_context()->set_initial_array_prototype(*prototype); |
| 512 Accessors::FunctionSetPrototype(object_fun, prototype); | 512 Accessors::FunctionSetPrototype(object_fun, prototype).Assert(); |
| 513 } | 513 } |
| 514 | 514 |
| 515 // Allocate the empty function as the prototype for function ECMAScript | 515 // Allocate the empty function as the prototype for function ECMAScript |
| 516 // 262 15.3.4. | 516 // 262 15.3.4. |
| 517 Handle<String> empty_string = | 517 Handle<String> empty_string = |
| 518 factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("Empty")); | 518 factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("Empty")); |
| 519 Handle<Code> code(isolate->builtins()->builtin(Builtins::kEmptyFunction)); | 519 Handle<Code> code(isolate->builtins()->builtin(Builtins::kEmptyFunction)); |
| 520 Handle<JSFunction> empty_function = factory->NewFunctionWithoutPrototype( | 520 Handle<JSFunction> empty_function = factory->NewFunctionWithoutPrototype( |
| 521 empty_string, code); | 521 empty_string, code); |
| 522 | 522 |
| (...skipping 1143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1666 | 1666 |
| 1667 native_context()->set_runtime_context(*context); | 1667 native_context()->set_runtime_context(*context); |
| 1668 | 1668 |
| 1669 { // -- S c r i p t | 1669 { // -- S c r i p t |
| 1670 // Builtin functions for Script. | 1670 // Builtin functions for Script. |
| 1671 Handle<JSFunction> script_fun = InstallFunction( | 1671 Handle<JSFunction> script_fun = InstallFunction( |
| 1672 builtins, "Script", JS_VALUE_TYPE, JSValue::kSize, | 1672 builtins, "Script", JS_VALUE_TYPE, JSValue::kSize, |
| 1673 isolate()->initial_object_prototype(), Builtins::kIllegal); | 1673 isolate()->initial_object_prototype(), Builtins::kIllegal); |
| 1674 Handle<JSObject> prototype = | 1674 Handle<JSObject> prototype = |
| 1675 factory()->NewJSObject(isolate()->object_function(), TENURED); | 1675 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 1676 Accessors::FunctionSetPrototype(script_fun, prototype); | 1676 Accessors::FunctionSetPrototype(script_fun, prototype).Assert(); |
| 1677 native_context()->set_script_function(*script_fun); | 1677 native_context()->set_script_function(*script_fun); |
| 1678 | 1678 |
| 1679 Handle<Map> script_map = Handle<Map>(script_fun->initial_map()); | 1679 Handle<Map> script_map = Handle<Map>(script_fun->initial_map()); |
| 1680 Map::EnsureDescriptorSlack(script_map, 14); | 1680 Map::EnsureDescriptorSlack(script_map, 14); |
| 1681 | 1681 |
| 1682 PropertyAttributes attribs = | 1682 PropertyAttributes attribs = |
| 1683 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | 1683 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 1684 | 1684 |
| 1685 Handle<AccessorInfo> script_column = | 1685 Handle<AccessorInfo> script_column = |
| 1686 Accessors::ScriptColumnOffsetInfo(isolate(), attribs); | 1686 Accessors::ScriptColumnOffsetInfo(isolate(), attribs); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1808 } | 1808 } |
| 1809 { | 1809 { |
| 1810 // Builtin function for OpaqueReference -- a JSValue-based object, | 1810 // Builtin function for OpaqueReference -- a JSValue-based object, |
| 1811 // that keeps its field isolated from JavaScript code. It may store | 1811 // that keeps its field isolated from JavaScript code. It may store |
| 1812 // objects, that JavaScript code may not access. | 1812 // objects, that JavaScript code may not access. |
| 1813 Handle<JSFunction> opaque_reference_fun = InstallFunction( | 1813 Handle<JSFunction> opaque_reference_fun = InstallFunction( |
| 1814 builtins, "OpaqueReference", JS_VALUE_TYPE, JSValue::kSize, | 1814 builtins, "OpaqueReference", JS_VALUE_TYPE, JSValue::kSize, |
| 1815 isolate()->initial_object_prototype(), Builtins::kIllegal); | 1815 isolate()->initial_object_prototype(), Builtins::kIllegal); |
| 1816 Handle<JSObject> prototype = | 1816 Handle<JSObject> prototype = |
| 1817 factory()->NewJSObject(isolate()->object_function(), TENURED); | 1817 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 1818 Accessors::FunctionSetPrototype(opaque_reference_fun, prototype); | 1818 Accessors::FunctionSetPrototype(opaque_reference_fun, prototype).Assert(); |
| 1819 native_context()->set_opaque_reference_function(*opaque_reference_fun); | 1819 native_context()->set_opaque_reference_function(*opaque_reference_fun); |
| 1820 } | 1820 } |
| 1821 | 1821 |
| 1822 // InternalArrays should not use Smi-Only array optimizations. There are too | 1822 // InternalArrays should not use Smi-Only array optimizations. There are too |
| 1823 // many places in the C++ runtime code (e.g. RegEx) that assume that | 1823 // many places in the C++ runtime code (e.g. RegEx) that assume that |
| 1824 // elements in InternalArrays can be set to non-Smi values without going | 1824 // elements in InternalArrays can be set to non-Smi values without going |
| 1825 // through a common bottleneck that would make the SMI_ONLY -> FAST_ELEMENT | 1825 // through a common bottleneck that would make the SMI_ONLY -> FAST_ELEMENT |
| 1826 // transition easy to trap. Moreover, they rarely are smi-only. | 1826 // transition easy to trap. Moreover, they rarely are smi-only. |
| 1827 { | 1827 { |
| 1828 Handle<JSFunction> array_function = | 1828 Handle<JSFunction> array_function = |
| (...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2713 return from + sizeof(NestingCounterType); | 2713 return from + sizeof(NestingCounterType); |
| 2714 } | 2714 } |
| 2715 | 2715 |
| 2716 | 2716 |
| 2717 // Called when the top-level V8 mutex is destroyed. | 2717 // Called when the top-level V8 mutex is destroyed. |
| 2718 void Bootstrapper::FreeThreadResources() { | 2718 void Bootstrapper::FreeThreadResources() { |
| 2719 DCHECK(!IsActive()); | 2719 DCHECK(!IsActive()); |
| 2720 } | 2720 } |
| 2721 | 2721 |
| 2722 } } // namespace v8::internal | 2722 } } // namespace v8::internal |
| OLD | NEW |