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

Side by Side Diff: src/prologue.js

Issue 1306993003: Call JS functions via native context instead of js builtins object. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 5 years, 3 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/prettyprinter.cc ('k') | src/promise.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 (function(global, utils) { 5 (function(global, utils) {
6 6
7 "use strict"; 7 "use strict";
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
11 // ----------------------------------------------------------------------- 11 // -----------------------------------------------------------------------
12 // Utils 12 // Utils
13 13
14 var imports = UNDEFINED; 14 var imports = UNDEFINED;
15 var imports_from_experimental = UNDEFINED; 15 var imports_from_experimental = UNDEFINED;
16 var exports_to_runtime = UNDEFINED;
17 var exports_container = {}; 16 var exports_container = {};
18 17
19 // Export to other scripts. 18 // Export to other scripts.
20 // In normal natives, this exports functions to other normal natives. 19 // In normal natives, this exports functions to other normal natives.
21 // In experimental natives, this exports to other experimental natives and 20 // In experimental natives, this exports to other experimental natives and
22 // to normal natives that import using utils.ImportFromExperimental. 21 // to normal natives that import using utils.ImportFromExperimental.
23 function Export(f) { 22 function Export(f) {
24 f(exports_container); 23 f(exports_container);
25 } 24 }
26 25
27 26
28 // Export to the native context for calls from the runtime.
29 function ExportToRuntime(f) {
30 f.next = exports_to_runtime;
31 exports_to_runtime = f;
32 }
33
34
35 // Import from other scripts. The actual importing happens in PostNatives and 27 // Import from other scripts. The actual importing happens in PostNatives and
36 // PostExperimental so that we can import from scripts executed later. However, 28 // PostExperimental so that we can import from scripts executed later. However,
37 // that means that the import is not available until the very end. If the 29 // that means that the import is not available until the very end. If the
38 // import needs to be available immediate, use ImportNow. 30 // import needs to be available immediate, use ImportNow.
39 // In normal natives, this imports from other normal natives. 31 // In normal natives, this imports from other normal natives.
40 // In experimental natives, this imports from other experimental natives and 32 // In experimental natives, this imports from other experimental natives and
41 // whitelisted exports from normal natives. 33 // whitelisted exports from normal natives.
42 function Import(f) { 34 function Import(f) {
43 f.next = imports; 35 f.next = imports;
44 imports = f; 36 imports = f;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 // ----------------------------------------------------------------------- 158 // -----------------------------------------------------------------------
167 // To be called by bootstrapper 159 // To be called by bootstrapper
168 160
169 function PostNatives(utils) { 161 function PostNatives(utils) {
170 %CheckIsBootstrapping(); 162 %CheckIsBootstrapping();
171 163
172 for ( ; !IS_UNDEFINED(imports); imports = imports.next) { 164 for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
173 imports(exports_container); 165 imports(exports_container);
174 } 166 }
175 167
176 var runtime_container = {};
177 for ( ; !IS_UNDEFINED(exports_to_runtime);
178 exports_to_runtime = exports_to_runtime.next) {
179 exports_to_runtime(runtime_container);
180 }
181 %ImportToRuntime(runtime_container);
182
183 // Whitelist of exports from normal natives to experimental natives and debug. 168 // Whitelist of exports from normal natives to experimental natives and debug.
184 var expose_list = [ 169 var expose_list = [
185 "ArrayToString", 170 "ArrayToString",
186 "FunctionSourceString", 171 "FunctionSourceString",
187 "GetIterator", 172 "GetIterator",
188 "GetMethod", 173 "GetMethod",
189 "InnerArrayEvery", 174 "InnerArrayEvery",
190 "InnerArrayFilter", 175 "InnerArrayFilter",
191 "InnerArrayForEach", 176 "InnerArrayForEach",
192 "InnerArrayIndexOf", 177 "InnerArrayIndexOf",
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 function PostExperimentals(utils) { 213 function PostExperimentals(utils) {
229 %CheckIsBootstrapping(); 214 %CheckIsBootstrapping();
230 215
231 for ( ; !IS_UNDEFINED(imports); imports = imports.next) { 216 for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
232 imports(exports_container); 217 imports(exports_container);
233 } 218 }
234 for ( ; !IS_UNDEFINED(imports_from_experimental); 219 for ( ; !IS_UNDEFINED(imports_from_experimental);
235 imports_from_experimental = imports_from_experimental.next) { 220 imports_from_experimental = imports_from_experimental.next) {
236 imports_from_experimental(exports_container); 221 imports_from_experimental(exports_container);
237 } 222 }
238 var runtime_container = {};
239 for ( ; !IS_UNDEFINED(exports_to_runtime);
240 exports_to_runtime = exports_to_runtime.next) {
241 exports_to_runtime(runtime_container);
242 }
243 %ImportExperimentalToRuntime(runtime_container);
244 223
245 exports_container = UNDEFINED; 224 exports_container = UNDEFINED;
246 private_symbols = UNDEFINED; 225 private_symbols = UNDEFINED;
247 226
248 utils.PostExperimentals = UNDEFINED; 227 utils.PostExperimentals = UNDEFINED;
249 utils.PostDebug = UNDEFINED; 228 utils.PostDebug = UNDEFINED;
250 utils.Import = UNDEFINED; 229 utils.Import = UNDEFINED;
251 utils.Export = UNDEFINED; 230 utils.Export = UNDEFINED;
252 } 231 }
253 232
254 233
255 function PostDebug(utils) { 234 function PostDebug(utils) {
256 for ( ; !IS_UNDEFINED(imports); imports = imports.next) { 235 for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
257 imports(exports_container); 236 imports(exports_container);
258 } 237 }
259 238
260 exports_container = UNDEFINED; 239 exports_container = UNDEFINED;
261 private_symbols = UNDEFINED; 240 private_symbols = UNDEFINED;
262 241
263 utils.PostDebug = UNDEFINED; 242 utils.PostDebug = UNDEFINED;
264 utils.PostExperimentals = UNDEFINED; 243 utils.PostExperimentals = UNDEFINED;
265 utils.Import = UNDEFINED; 244 utils.Import = UNDEFINED;
266 utils.Export = UNDEFINED; 245 utils.Export = UNDEFINED;
267 } 246 }
268 247
269 // ----------------------------------------------------------------------- 248 // -----------------------------------------------------------------------
270 249
271 %OptimizeObjectForAddingMultipleProperties(utils, 15); 250 %OptimizeObjectForAddingMultipleProperties(utils, 14);
272 251
273 utils.Import = Import; 252 utils.Import = Import;
274 utils.ImportNow = ImportNow; 253 utils.ImportNow = ImportNow;
275 utils.Export = Export; 254 utils.Export = Export;
276 utils.ExportToRuntime = ExportToRuntime;
277 utils.ImportFromExperimental = ImportFromExperimental; 255 utils.ImportFromExperimental = ImportFromExperimental;
278 utils.GetPrivateSymbol = GetPrivateSymbol; 256 utils.GetPrivateSymbol = GetPrivateSymbol;
279 utils.SetFunctionName = SetFunctionName; 257 utils.SetFunctionName = SetFunctionName;
280 utils.InstallConstants = InstallConstants; 258 utils.InstallConstants = InstallConstants;
281 utils.InstallFunctions = InstallFunctions; 259 utils.InstallFunctions = InstallFunctions;
282 utils.InstallGetter = InstallGetter; 260 utils.InstallGetter = InstallGetter;
283 utils.InstallGetterSetter = InstallGetterSetter; 261 utils.InstallGetterSetter = InstallGetterSetter;
284 utils.SetUpLockedPrototype = SetUpLockedPrototype; 262 utils.SetUpLockedPrototype = SetUpLockedPrototype;
285 utils.PostNatives = PostNatives; 263 utils.PostNatives = PostNatives;
286 utils.PostExperimentals = PostExperimentals; 264 utils.PostExperimentals = PostExperimentals;
287 utils.PostDebug = PostDebug; 265 utils.PostDebug = PostDebug;
288 266
289 %ToFastProperties(utils); 267 %ToFastProperties(utils);
290 268
291 }) 269 })
OLDNEW
« no previous file with comments | « src/prettyprinter.cc ('k') | src/promise.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698