Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(222)

Side by Side Diff: src/bootstrapper.cc

Issue 1293493004: Unify symbols sharing across native scripts and runtime. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/bootstrapper.h ('k') | src/collection.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
11 #include "src/extensions/externalize-string-extension.h" 11 #include "src/extensions/externalize-string-extension.h"
12 #include "src/extensions/free-buffer-extension.h" 12 #include "src/extensions/free-buffer-extension.h"
13 #include "src/extensions/gc-extension.h" 13 #include "src/extensions/gc-extension.h"
14 #include "src/extensions/statistics-extension.h" 14 #include "src/extensions/statistics-extension.h"
15 #include "src/extensions/trigger-failure-extension.h" 15 #include "src/extensions/trigger-failure-extension.h"
16 #include "src/heap/heap.h"
16 #include "src/snapshot/natives.h" 17 #include "src/snapshot/natives.h"
17 #include "src/snapshot/snapshot.h" 18 #include "src/snapshot/snapshot.h"
18 #include "third_party/fdlibm/fdlibm.h" 19 #include "third_party/fdlibm/fdlibm.h"
19 20
20 namespace v8 { 21 namespace v8 {
21 namespace internal { 22 namespace internal {
22 23
23 Bootstrapper::Bootstrapper(Isolate* isolate) 24 Bootstrapper::Bootstrapper(Isolate* isolate)
24 : isolate_(isolate), 25 : isolate_(isolate),
25 nesting_(0), 26 nesting_(0),
(...skipping 1762 matching lines...) Expand 10 before | Expand all | Expand 10 after
1788 1789
1789 INSTALL_NATIVE(JSFunction, "Error", error_function); 1790 INSTALL_NATIVE(JSFunction, "Error", error_function);
1790 INSTALL_NATIVE(JSFunction, "EvalError", eval_error_function); 1791 INSTALL_NATIVE(JSFunction, "EvalError", eval_error_function);
1791 INSTALL_NATIVE(JSFunction, "RangeError", range_error_function); 1792 INSTALL_NATIVE(JSFunction, "RangeError", range_error_function);
1792 INSTALL_NATIVE(JSFunction, "ReferenceError", reference_error_function); 1793 INSTALL_NATIVE(JSFunction, "ReferenceError", reference_error_function);
1793 INSTALL_NATIVE(JSFunction, "SyntaxError", syntax_error_function); 1794 INSTALL_NATIVE(JSFunction, "SyntaxError", syntax_error_function);
1794 INSTALL_NATIVE(JSFunction, "TypeError", type_error_function); 1795 INSTALL_NATIVE(JSFunction, "TypeError", type_error_function);
1795 INSTALL_NATIVE(JSFunction, "URIError", uri_error_function); 1796 INSTALL_NATIVE(JSFunction, "URIError", uri_error_function);
1796 INSTALL_NATIVE(JSFunction, "MakeError", make_error_function); 1797 INSTALL_NATIVE(JSFunction, "MakeError", make_error_function);
1797 1798
1798 INSTALL_NATIVE(Symbol, "promiseStatus", promise_status);
1799 INSTALL_NATIVE(Symbol, "promiseValue", promise_value);
1800 INSTALL_NATIVE(JSFunction, "PromiseCreate", promise_create); 1799 INSTALL_NATIVE(JSFunction, "PromiseCreate", promise_create);
1801 INSTALL_NATIVE(JSFunction, "PromiseResolve", promise_resolve); 1800 INSTALL_NATIVE(JSFunction, "PromiseResolve", promise_resolve);
1802 INSTALL_NATIVE(JSFunction, "PromiseReject", promise_reject); 1801 INSTALL_NATIVE(JSFunction, "PromiseReject", promise_reject);
1803 INSTALL_NATIVE(JSFunction, "PromiseChain", promise_chain); 1802 INSTALL_NATIVE(JSFunction, "PromiseChain", promise_chain);
1804 INSTALL_NATIVE(JSFunction, "PromiseCatch", promise_catch); 1803 INSTALL_NATIVE(JSFunction, "PromiseCatch", promise_catch);
1805 INSTALL_NATIVE(JSFunction, "PromiseThen", promise_then); 1804 INSTALL_NATIVE(JSFunction, "PromiseThen", promise_then);
1806 INSTALL_NATIVE(JSFunction, "PromiseHasUserDefinedRejectHandler", 1805 INSTALL_NATIVE(JSFunction, "PromiseHasUserDefinedRejectHandler",
1807 promise_has_user_defined_reject_handler); 1806 promise_has_user_defined_reject_handler);
1808 1807
1809 INSTALL_NATIVE(JSFunction, "ObserveNotifyChange", observers_notify_change); 1808 INSTALL_NATIVE(JSFunction, "ObserveNotifyChange", observers_notify_change);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1900 Object::GetProperty(isolate, container, Builtins::GetName(id)) 1899 Object::GetProperty(isolate, container, Builtins::GetName(id))
1901 .ToHandleChecked(); 1900 .ToHandleChecked();
1902 DCHECK(function_object->IsJSFunction()); 1901 DCHECK(function_object->IsJSFunction());
1903 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object); 1902 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object);
1904 builtins->set_javascript_builtin(id, *function); 1903 builtins->set_javascript_builtin(id, *function);
1905 } 1904 }
1906 return true; 1905 return true;
1907 } 1906 }
1908 1907
1909 1908
1909 void Bootstrapper::ExportPrivateSymbols(Isolate* isolate,
1910 Handle<JSObject> container) {
1911 HandleScope scope(isolate);
1912 #define EXPORT_PRIVATE_SYMBOL(NAME) \
1913 Handle<String> NAME##_name = \
1914 isolate->factory()->NewStringFromAsciiChecked(#NAME); \
1915 JSObject::AddProperty(container, NAME##_name, isolate->factory()->NAME(), \
1916 NONE);
1917
1918 PRIVATE_SYMBOL_LIST(EXPORT_PRIVATE_SYMBOL)
1919
1920 #undef EXPORT_PRIVATE_SYMBOL
1921 }
1922
1923
1910 #define EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(id) \ 1924 #define EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(id) \
1911 void Genesis::InitializeGlobal_##id() {} 1925 void Genesis::InitializeGlobal_##id() {}
1912 1926
1913 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_modules) 1927 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_modules)
1914 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_array_includes) 1928 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_array_includes)
1915 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_arrow_functions) 1929 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_arrow_functions)
1916 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_proxies) 1930 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_proxies)
1917 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_sloppy) 1931 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_sloppy)
1918 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_sloppy_function) 1932 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_sloppy_function)
1919 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_sloppy_let) 1933 EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_sloppy_let)
(...skipping 862 matching lines...) Expand 10 before | Expand all | Expand 10 after
2782 // Expose the natives in global if a name for it is specified. 2796 // Expose the natives in global if a name for it is specified.
2783 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) { 2797 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) {
2784 Handle<String> natives_key = 2798 Handle<String> natives_key =
2785 factory->InternalizeUtf8String(FLAG_expose_natives_as); 2799 factory->InternalizeUtf8String(FLAG_expose_natives_as);
2786 uint32_t dummy_index; 2800 uint32_t dummy_index;
2787 if (natives_key->AsArrayIndex(&dummy_index)) return true; 2801 if (natives_key->AsArrayIndex(&dummy_index)) return true;
2788 Handle<JSBuiltinsObject> natives(global->builtins()); 2802 Handle<JSBuiltinsObject> natives(global->builtins());
2789 JSObject::AddProperty(global, natives_key, natives, DONT_ENUM); 2803 JSObject::AddProperty(global, natives_key, natives, DONT_ENUM);
2790 } 2804 }
2791 2805
2792 // Expose the stack trace symbol to native JS.
2793 RETURN_ON_EXCEPTION_VALUE(isolate,
2794 JSObject::SetOwnPropertyIgnoreAttributes(
2795 handle(native_context->builtins(), isolate),
2796 factory->InternalizeOneByteString(
2797 STATIC_CHAR_VECTOR("$stackTraceSymbol")),
2798 factory->stack_trace_symbol(), NONE),
2799 false);
2800
2801 // Expose the internal error symbol to native JS
2802 RETURN_ON_EXCEPTION_VALUE(isolate,
2803 JSObject::SetOwnPropertyIgnoreAttributes(
2804 handle(native_context->builtins(), isolate),
2805 factory->InternalizeOneByteString(
2806 STATIC_CHAR_VECTOR("$internalErrorSymbol")),
2807 factory->internal_error_symbol(), NONE),
2808 false);
2809
2810 // Expose the debug global object in global if a name for it is specified. 2806 // Expose the debug global object in global if a name for it is specified.
2811 if (FLAG_expose_debug_as != NULL && strlen(FLAG_expose_debug_as) != 0) { 2807 if (FLAG_expose_debug_as != NULL && strlen(FLAG_expose_debug_as) != 0) {
2812 // If loading fails we just bail out without installing the 2808 // If loading fails we just bail out without installing the
2813 // debugger but without tanking the whole context. 2809 // debugger but without tanking the whole context.
2814 Debug* debug = isolate->debug(); 2810 Debug* debug = isolate->debug();
2815 if (!debug->Load()) return true; 2811 if (!debug->Load()) return true;
2816 Handle<Context> debug_context = debug->debug_context(); 2812 Handle<Context> debug_context = debug->debug_context();
2817 // Set the security token for the debugger context to the same as 2813 // Set the security token for the debugger context to the same as
2818 // the shell native context to allow calling between these (otherwise 2814 // the shell native context to allow calling between these (otherwise
2819 // exposing debug global object doesn't make much sense). 2815 // exposing debug global object doesn't make much sense).
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
3318 } 3314 }
3319 3315
3320 3316
3321 // Called when the top-level V8 mutex is destroyed. 3317 // Called when the top-level V8 mutex is destroyed.
3322 void Bootstrapper::FreeThreadResources() { 3318 void Bootstrapper::FreeThreadResources() {
3323 DCHECK(!IsActive()); 3319 DCHECK(!IsActive());
3324 } 3320 }
3325 3321
3326 } // namespace internal 3322 } // namespace internal
3327 } // namespace v8 3323 } // namespace v8
OLDNEW
« no previous file with comments | « src/bootstrapper.h ('k') | src/collection.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698