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

Unified Diff: src/prologue.js

Issue 1398733002: Move builtin JavaScript sources into own directory. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Also move macros.py file. Created 5 years, 2 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/object-observe.js ('k') | src/promise.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
deleted file mode 100644
index 359f76d48994fb4d30b05d15ebcc5772fca91f9e..0000000000000000000000000000000000000000
--- a/src/prologue.js
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright 2015 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-(function(global, utils, extrasUtils) {
-
-"use strict";
-
-%CheckIsBootstrapping();
-
-// -----------------------------------------------------------------------
-// Utils
-
-var imports = UNDEFINED;
-var imports_from_experimental = UNDEFINED;
-var exports_container = %ExportFromRuntime({});
-
-// 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(exports_container);
-}
-
-
-// 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.
-function Import(f) {
- f.next = imports;
- 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(name) {
- return exports_container[name];
-}
-
-
-// In normal natives, import from experimental natives.
-// Not callable from experimental natives.
-function ImportFromExperimental(f) {
- f.next = imports_from_experimental;
- imports_from_experimental = f;
-}
-
-
-function SetFunctionName(f, name, prefix) {
- if (IS_SYMBOL(name)) {
- name = "[" + %SymbolDescription(name) + "]";
- }
- if (IS_UNDEFINED(prefix)) {
- %FunctionSetName(f, name);
- } else {
- %FunctionSetName(f, prefix + " " + name);
- }
-}
-
-
-function InstallConstants(object, constants) {
- %CheckIsBootstrapping();
- %OptimizeObjectForAddingMultipleProperties(object, constants.length >> 1);
- var attributes = DONT_ENUM | DONT_DELETE | READ_ONLY;
- for (var i = 0; i < constants.length; i += 2) {
- var name = constants[i];
- var k = constants[i + 1];
- %AddNamedProperty(object, name, k, attributes);
- }
- %ToFastProperties(object);
-}
-
-
-function InstallFunctions(object, attributes, functions) {
- %CheckIsBootstrapping();
- %OptimizeObjectForAddingMultipleProperties(object, functions.length >> 1);
- for (var i = 0; i < functions.length; i += 2) {
- var key = functions[i];
- var f = functions[i + 1];
- SetFunctionName(f, key);
- %FunctionRemovePrototype(f);
- %AddNamedProperty(object, key, f, attributes);
- %SetNativeFlag(f);
- }
- %ToFastProperties(object);
-}
-
-
-// Helper function to install a getter-only accessor property.
-function InstallGetter(object, name, getter, attributes) {
- %CheckIsBootstrapping();
- if (typeof attributes == "undefined") {
- attributes = DONT_ENUM;
- }
- SetFunctionName(getter, name, "get");
- %FunctionRemovePrototype(getter);
- %DefineAccessorPropertyUnchecked(object, name, getter, null, attributes);
- %SetNativeFlag(getter);
-}
-
-
-// Helper function to install a getter/setter accessor property.
-function InstallGetterSetter(object, name, getter, setter) {
- %CheckIsBootstrapping();
- SetFunctionName(getter, name, "get");
- SetFunctionName(setter, name, "set");
- %FunctionRemovePrototype(getter);
- %FunctionRemovePrototype(setter);
- %DefineAccessorPropertyUnchecked(object, name, getter, setter, DONT_ENUM);
- %SetNativeFlag(getter);
- %SetNativeFlag(setter);
-}
-
-
-// Prevents changes to the prototype of a built-in function.
-// The "prototype" property of the function object is made non-configurable,
-// and the prototype object is made non-extensible. The latter prevents
-// changing the __proto__ property.
-function SetUpLockedPrototype(
- constructor, fields, methods) {
- %CheckIsBootstrapping();
- var prototype = constructor.prototype;
- // Install functions first, because this function is used to initialize
- // PropertyDescriptor itself.
- var property_count = (methods.length >> 1) + (fields ? fields.length : 0);
- if (property_count >= 4) {
- %OptimizeObjectForAddingMultipleProperties(prototype, property_count);
- }
- if (fields) {
- for (var i = 0; i < fields.length; i++) {
- %AddNamedProperty(prototype, fields[i],
- UNDEFINED, DONT_ENUM | DONT_DELETE);
- }
- }
- for (var i = 0; i < methods.length; i += 2) {
- var key = methods[i];
- var f = methods[i + 1];
- %AddNamedProperty(prototype, key, f, DONT_ENUM | DONT_DELETE | READ_ONLY);
- %SetNativeFlag(f);
- }
- %InternalSetPrototype(prototype, null);
- %ToFastProperties(prototype);
-}
-
-
-// -----------------------------------------------------------------------
-// To be called by bootstrapper
-
-function PostNatives(utils) {
- %CheckIsBootstrapping();
-
- for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
- imports(exports_container);
- }
-
- // Whitelist of exports from normal natives to experimental natives and debug.
- var expose_list = [
- "ArrayToString",
- "FunctionSourceString",
- "GetIterator",
- "GetMethod",
- "InnerArrayEvery",
- "InnerArrayFilter",
- "InnerArrayForEach",
- "InnerArrayIndexOf",
- "InnerArrayJoin",
- "InnerArrayLastIndexOf",
- "InnerArrayMap",
- "InnerArrayReduce",
- "InnerArrayReduceRight",
- "InnerArrayReverse",
- "InnerArraySome",
- "InnerArraySort",
- "InnerArrayToLocaleString",
- "IsNaN",
- "MathMax",
- "MathMin",
- "ObjectIsFrozen",
- "ObjectDefineProperty",
- "OwnPropertyKeys",
- "SymbolToString",
- "ToNameArray",
- // From runtime:
- "is_concat_spreadable_symbol",
- "iterator_symbol",
- "promise_status_symbol",
- "promise_value_symbol",
- "reflect_apply",
- "reflect_construct",
- "to_string_tag_symbol",
- ];
-
- var filtered_exports = {};
- %OptimizeObjectForAddingMultipleProperties(
- filtered_exports, expose_list.length);
- for (var key of expose_list) {
- filtered_exports[key] = exports_container[key];
- }
- %ToFastProperties(filtered_exports);
- exports_container = filtered_exports;
-
- utils.PostNatives = UNDEFINED;
- utils.ImportFromExperimental = UNDEFINED;
-}
-
-
-function PostExperimentals(utils) {
- %CheckIsBootstrapping();
- %ExportExperimentalFromRuntime(exports_container);
- for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
- imports(exports_container);
- }
- for ( ; !IS_UNDEFINED(imports_from_experimental);
- imports_from_experimental = imports_from_experimental.next) {
- imports_from_experimental(exports_container);
- }
-
- exports_container = UNDEFINED;
-
- utils.PostExperimentals = UNDEFINED;
- utils.PostDebug = UNDEFINED;
- utils.Import = UNDEFINED;
- utils.Export = UNDEFINED;
-}
-
-
-function PostDebug(utils) {
- for ( ; !IS_UNDEFINED(imports); imports = imports.next) {
- imports(exports_container);
- }
-
- exports_container = UNDEFINED;
-
- utils.PostDebug = UNDEFINED;
- utils.PostExperimentals = UNDEFINED;
- utils.Import = UNDEFINED;
- utils.Export = UNDEFINED;
-}
-
-// -----------------------------------------------------------------------
-
-%OptimizeObjectForAddingMultipleProperties(utils, 13);
-
-utils.Import = Import;
-utils.ImportNow = ImportNow;
-utils.Export = Export;
-utils.ImportFromExperimental = ImportFromExperimental;
-utils.SetFunctionName = SetFunctionName;
-utils.InstallConstants = InstallConstants;
-utils.InstallFunctions = InstallFunctions;
-utils.InstallGetter = InstallGetter;
-utils.InstallGetterSetter = InstallGetterSetter;
-utils.SetUpLockedPrototype = SetUpLockedPrototype;
-utils.PostNatives = PostNatives;
-utils.PostExperimentals = PostExperimentals;
-utils.PostDebug = PostDebug;
-
-%ToFastProperties(utils);
-
-// -----------------------------------------------------------------------
-
-%OptimizeObjectForAddingMultipleProperties(extrasUtils, 5);
-
-extrasUtils.logStackTrace = function logStackTrace() {
- %DebugTrace();
-};
-
-extrasUtils.log = function log() {
- let message = '';
- for (const arg of arguments) {
- message += arg;
- }
-
- %GlobalPrint(message);
-};
-
-// Extras need the ability to store private state on their objects without
-// exposing it to the outside world.
-
-extrasUtils.createPrivateSymbol = function createPrivateSymbol(name) {
- return %CreatePrivateSymbol(name);
-};
-
-// These functions are key for safe meta-programming:
-// http://wiki.ecmascript.org/doku.php?id=conventions:safe_meta_programming
-//
-// Technically they could all be derived from combinations of
-// Function.prototype.{bind,call,apply} but that introduces lots of layers of
-// indirection and slowness given how un-optimized bind is.
-
-extrasUtils.simpleBind = function simpleBind(func, thisArg) {
- return function() {
- return %Apply(func, thisArg, arguments, 0, arguments.length);
- };
-};
-
-extrasUtils.uncurryThis = function uncurryThis(func) {
- return function(thisArg) {
- return %Apply(func, thisArg, arguments, 1, arguments.length - 1);
- };
-};
-
-%ToFastProperties(extrasUtils);
-
-})
« no previous file with comments | « src/object-observe.js ('k') | src/promise.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698