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

Unified Diff: src/prologue.js

Issue 1302533002: Native context: debug.js does not load from js builtins object anymore. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: make importing requirement more explicit 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/messages.js ('k') | src/regexp.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/prologue.js
diff --git a/src/prologue.js b/src/prologue.js
index 3153db6e157aba04288fabef4ff7f6e2d6cf6b42..4906d41f3da2ccc5032ff8a697933f99743f2e2a 100644
--- a/src/prologue.js
+++ b/src/prologue.js
@@ -12,17 +12,16 @@
// Utils
var imports = UNDEFINED;
-var exports = UNDEFINED;
var imports_from_experimental = UNDEFINED;
var exports_to_runtime = UNDEFINED;
+var exports_container = {};
// Export to other scripts.
// In normal natives, this exports functions to other normal natives.
// In experimental natives, this exports to other experimental natives and
// to normal natives that import using utils.ImportFromExperimental.
function Export(f) {
- f.next = exports;
- exports = f;
+ f(exports_container);
}
@@ -32,7 +31,11 @@ function ExportToRuntime(f) {
exports_to_runtime = f;
}
-// Import from other scripts.
+
+// Import from other scripts. The actual importing happens in PostNatives and
+// PostExperimental so that we can import from scripts executed later. However,
+// that means that the import is not available until the very end. If the
+// import needs to be available immediate, use ImportNow.
// In normal natives, this imports from other normal natives.
// In experimental natives, this imports from other experimental natives and
// whitelisted exports from normal natives.
@@ -41,6 +44,13 @@ function Import(f) {
imports = f;
}
+// Import immediately from exports of previous scripts. We need this for
+// functions called during bootstrapping. Hooking up imports in PostNatives
+// would be too late.
+function ImportNow(f) {
+ f(exports_container);
+}
+
// In normal natives, import from experimental natives.
// Not callable from experimental natives.
@@ -149,14 +159,12 @@ function SetUpLockedPrototype(
// -----------------------------------------------------------------------
// To be called by bootstrapper
-var experimental_exports = UNDEFINED;
-
function PostNatives(utils) {
%CheckIsBootstrapping();
- var container = {};
- for ( ; !IS_UNDEFINED(exports); exports = exports.next) exports(container);
- for ( ; !IS_UNDEFINED(imports); imports = imports.next) imports(container);
+ for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
+ imports(exports_container);
+ }
var runtime_container = {};
for ( ; !IS_UNDEFINED(exports_to_runtime);
@@ -165,9 +173,10 @@ function PostNatives(utils) {
}
%ImportToRuntime(runtime_container);
- // Whitelist of exports from normal natives to experimental natives.
- var expose_to_experimental = [
+ // Whitelist of exports from normal natives to experimental natives and debug.
+ var expose_list = [
"ArrayToString",
+ "FunctionSourceString",
"GetIterator",
"GetMethod",
"InnerArrayEvery",
@@ -190,15 +199,19 @@ function PostNatives(utils) {
"ObjectDefineProperty",
"OwnPropertyKeys",
"ToNameArray",
+ "ToBoolean",
+ "ToNumber",
+ "ToString",
];
- experimental_exports = {};
+
+ var filtered_exports = {};
%OptimizeObjectForAddingMultipleProperties(
- experimental_exports, expose_to_experimental.length);
- for (var key of expose_to_experimental) {
- experimental_exports[key] = container[key];
+ filtered_exports, expose_list.length);
+ for (var key of expose_list) {
+ filtered_exports[key] = exports_container[key];
}
- %ToFastProperties(experimental_exports);
- container = UNDEFINED;
+ %ToFastProperties(filtered_exports);
+ exports_container = filtered_exports;
utils.PostNatives = UNDEFINED;
utils.ImportFromExperimental = UNDEFINED;
@@ -208,15 +221,12 @@ function PostNatives(utils) {
function PostExperimentals(utils) {
%CheckIsBootstrapping();
- for ( ; !IS_UNDEFINED(exports); exports = exports.next) {
- exports(experimental_exports);
- }
for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
- imports(experimental_exports);
+ imports(exports_container);
}
for ( ; !IS_UNDEFINED(imports_from_experimental);
imports_from_experimental = imports_from_experimental.next) {
- imports_from_experimental(experimental_exports);
+ imports_from_experimental(exports_container);
}
var runtime_container = {};
for ( ; !IS_UNDEFINED(exports_to_runtime);
@@ -225,7 +235,7 @@ function PostExperimentals(utils) {
}
%ImportExperimentalToRuntime(runtime_container);
- experimental_exports = UNDEFINED;
+ exports_container = UNDEFINED;
utils.PostExperimentals = UNDEFINED;
utils.PostDebug = UNDEFINED;
@@ -235,13 +245,12 @@ function PostExperimentals(utils) {
function PostDebug(utils) {
- for ( ; !IS_UNDEFINED(exports); exports = exports.next) {
- exports(experimental_exports);
- }
for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
- imports(experimental_exports);
+ imports(exports_container);
}
+ exports_container = UNDEFINED;
+
utils.PostDebug = UNDEFINED;
utils.PostExperimentals = UNDEFINED;
utils.Import = UNDEFINED;
@@ -250,9 +259,10 @@ function PostDebug(utils) {
// -----------------------------------------------------------------------
-%OptimizeObjectForAddingMultipleProperties(utils, 13);
+%OptimizeObjectForAddingMultipleProperties(utils, 14);
utils.Import = Import;
+utils.ImportNow = ImportNow;
utils.Export = Export;
utils.ExportToRuntime = ExportToRuntime;
utils.ImportFromExperimental = ImportFromExperimental;
« no previous file with comments | « src/messages.js ('k') | src/regexp.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698