| 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 1430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1441 HandleScope scope(isolate); | 1441 HandleScope scope(isolate); |
| 1442 Handle<SharedFunctionInfo> function_info; | 1442 Handle<SharedFunctionInfo> function_info; |
| 1443 | 1443 |
| 1444 // If we can't find the function in the cache, we compile a new | 1444 // If we can't find the function in the cache, we compile a new |
| 1445 // function and insert it into the cache. | 1445 // function and insert it into the cache. |
| 1446 if (cache == NULL || !cache->Lookup(name, &function_info)) { | 1446 if (cache == NULL || !cache->Lookup(name, &function_info)) { |
| 1447 DCHECK(source->IsOneByteRepresentation()); | 1447 DCHECK(source->IsOneByteRepresentation()); |
| 1448 Handle<String> script_name = | 1448 Handle<String> script_name = |
| 1449 factory->NewStringFromUtf8(name).ToHandleChecked(); | 1449 factory->NewStringFromUtf8(name).ToHandleChecked(); |
| 1450 function_info = Compiler::CompileScript( | 1450 function_info = Compiler::CompileScript( |
| 1451 source, script_name, 0, 0, false, top_context, extension, NULL, | 1451 source, script_name, 0, 0, false, false, top_context, extension, NULL, |
| 1452 ScriptCompiler::kNoCompileOptions, | 1452 ScriptCompiler::kNoCompileOptions, |
| 1453 use_runtime_context ? NATIVES_CODE : NOT_NATIVES_CODE); | 1453 use_runtime_context ? NATIVES_CODE : NOT_NATIVES_CODE); |
| 1454 if (function_info.is_null()) return false; | 1454 if (function_info.is_null()) return false; |
| 1455 if (cache != NULL) cache->Add(name, function_info); | 1455 if (cache != NULL) cache->Add(name, function_info); |
| 1456 } | 1456 } |
| 1457 | 1457 |
| 1458 // Set up the function context. Conceptually, we should clone the | 1458 // Set up the function context. Conceptually, we should clone the |
| 1459 // function before overwriting the context but since we're in a | 1459 // function before overwriting the context but since we're in a |
| 1460 // single-threaded environment it is not strictly necessary. | 1460 // single-threaded environment it is not strictly necessary. |
| 1461 DCHECK(top_context->IsNativeContext()); | 1461 DCHECK(top_context->IsNativeContext()); |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1757 // Builtin functions for Script. | 1757 // Builtin functions for Script. |
| 1758 Handle<JSFunction> script_fun = InstallFunction( | 1758 Handle<JSFunction> script_fun = InstallFunction( |
| 1759 builtins, "Script", JS_VALUE_TYPE, JSValue::kSize, | 1759 builtins, "Script", JS_VALUE_TYPE, JSValue::kSize, |
| 1760 isolate()->initial_object_prototype(), Builtins::kIllegal); | 1760 isolate()->initial_object_prototype(), Builtins::kIllegal); |
| 1761 Handle<JSObject> prototype = | 1761 Handle<JSObject> prototype = |
| 1762 factory()->NewJSObject(isolate()->object_function(), TENURED); | 1762 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 1763 Accessors::FunctionSetPrototype(script_fun, prototype).Assert(); | 1763 Accessors::FunctionSetPrototype(script_fun, prototype).Assert(); |
| 1764 native_context()->set_script_function(*script_fun); | 1764 native_context()->set_script_function(*script_fun); |
| 1765 | 1765 |
| 1766 Handle<Map> script_map = Handle<Map>(script_fun->initial_map()); | 1766 Handle<Map> script_map = Handle<Map>(script_fun->initial_map()); |
| 1767 Map::EnsureDescriptorSlack(script_map, 14); | 1767 Map::EnsureDescriptorSlack(script_map, 15); |
| 1768 | 1768 |
| 1769 PropertyAttributes attribs = | 1769 PropertyAttributes attribs = |
| 1770 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | 1770 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 1771 | 1771 |
| 1772 Handle<AccessorInfo> script_column = | 1772 Handle<AccessorInfo> script_column = |
| 1773 Accessors::ScriptColumnOffsetInfo(isolate(), attribs); | 1773 Accessors::ScriptColumnOffsetInfo(isolate(), attribs); |
| 1774 { | 1774 { |
| 1775 AccessorConstantDescriptor d( | 1775 AccessorConstantDescriptor d( |
| 1776 Handle<Name>(Name::cast(script_column->name())), script_column, | 1776 Handle<Name>(Name::cast(script_column->name())), script_column, |
| 1777 attribs); | 1777 attribs); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1885 | 1885 |
| 1886 Handle<AccessorInfo> script_source_mapping_url = | 1886 Handle<AccessorInfo> script_source_mapping_url = |
| 1887 Accessors::ScriptSourceMappingUrlInfo(isolate(), attribs); | 1887 Accessors::ScriptSourceMappingUrlInfo(isolate(), attribs); |
| 1888 { | 1888 { |
| 1889 AccessorConstantDescriptor d( | 1889 AccessorConstantDescriptor d( |
| 1890 Handle<Name>(Name::cast(script_source_mapping_url->name())), | 1890 Handle<Name>(Name::cast(script_source_mapping_url->name())), |
| 1891 script_source_mapping_url, attribs); | 1891 script_source_mapping_url, attribs); |
| 1892 script_map->AppendDescriptor(&d); | 1892 script_map->AppendDescriptor(&d); |
| 1893 } | 1893 } |
| 1894 | 1894 |
| 1895 Handle<AccessorInfo> script_is_embedder_debug_script = |
| 1896 Accessors::ScriptIsEmbedderDebugScriptInfo(isolate(), attribs); |
| 1897 { |
| 1898 AccessorConstantDescriptor d( |
| 1899 Handle<Name>(Name::cast(script_is_embedder_debug_script->name())), |
| 1900 script_is_embedder_debug_script, attribs); |
| 1901 script_map->AppendDescriptor(&d); |
| 1902 } |
| 1903 |
| 1895 // Allocate the empty script. | 1904 // Allocate the empty script. |
| 1896 Handle<Script> script = factory()->NewScript(factory()->empty_string()); | 1905 Handle<Script> script = factory()->NewScript(factory()->empty_string()); |
| 1897 script->set_type(Smi::FromInt(Script::TYPE_NATIVE)); | 1906 script->set_type(Smi::FromInt(Script::TYPE_NATIVE)); |
| 1898 heap()->public_set_empty_script(*script); | 1907 heap()->public_set_empty_script(*script); |
| 1899 } | 1908 } |
| 1900 { | 1909 { |
| 1901 // Builtin function for OpaqueReference -- a JSValue-based object, | 1910 // Builtin function for OpaqueReference -- a JSValue-based object, |
| 1902 // that keeps its field isolated from JavaScript code. It may store | 1911 // that keeps its field isolated from JavaScript code. It may store |
| 1903 // objects, that JavaScript code may not access. | 1912 // objects, that JavaScript code may not access. |
| 1904 Handle<JSFunction> opaque_reference_fun = InstallFunction( | 1913 Handle<JSFunction> opaque_reference_fun = InstallFunction( |
| (...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2867 return from + sizeof(NestingCounterType); | 2876 return from + sizeof(NestingCounterType); |
| 2868 } | 2877 } |
| 2869 | 2878 |
| 2870 | 2879 |
| 2871 // Called when the top-level V8 mutex is destroyed. | 2880 // Called when the top-level V8 mutex is destroyed. |
| 2872 void Bootstrapper::FreeThreadResources() { | 2881 void Bootstrapper::FreeThreadResources() { |
| 2873 DCHECK(!IsActive()); | 2882 DCHECK(!IsActive()); |
| 2874 } | 2883 } |
| 2875 | 2884 |
| 2876 } } // namespace v8::internal | 2885 } } // namespace v8::internal |
| OLD | NEW |