Do not export natives to runtime via js builtins object.
Using a temporary container object instead. R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/1293493003 Cr-Commit-Position: refs/heads/master@{#30175}
This commit is contained in:
parent
c69e2eae54
commit
aa4ad8ca64
@ -164,4 +164,8 @@ utils.Export(function(to) {
|
||||
|
||||
$arrayValues = ArrayValues;
|
||||
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.ArrayValues = ArrayValues;
|
||||
});
|
||||
|
||||
})
|
||||
|
@ -214,15 +214,10 @@ class Genesis BASE_EMBEDDED {
|
||||
Handle<JSFunction> empty_function,
|
||||
ContextType context_type);
|
||||
void InitializeExperimentalGlobal();
|
||||
// Installs the contents of the native .js files on the global objects.
|
||||
// Used for creating a context from scratch.
|
||||
void InstallNativeFunctions();
|
||||
void InstallExperimentalNativeFunctions();
|
||||
// Typed arrays are not serializable and have to initialized afterwards.
|
||||
void InitializeBuiltinTypedArrays();
|
||||
|
||||
#define DECLARE_FEATURE_INITIALIZATION(id, descr) \
|
||||
void InstallNativeFunctions_##id(); \
|
||||
void InitializeGlobal_##id();
|
||||
|
||||
HARMONY_INPROGRESS(DECLARE_FEATURE_INITIALIZATION)
|
||||
@ -1701,81 +1696,6 @@ static Handle<JSObject> ResolveBuiltinIdHolder(Handle<Context> native_context,
|
||||
}
|
||||
|
||||
|
||||
#define INSTALL_NATIVE(Type, name, var) \
|
||||
Handle<String> var##_name = \
|
||||
factory()->InternalizeOneByteString(STATIC_CHAR_VECTOR(name)); \
|
||||
Handle<Object> var##_native = \
|
||||
Object::GetProperty(handle(native_context()->builtins()), var##_name) \
|
||||
.ToHandleChecked(); \
|
||||
native_context()->set_##var(Type::cast(*var##_native));
|
||||
|
||||
|
||||
void Genesis::InstallNativeFunctions() {
|
||||
HandleScope scope(isolate());
|
||||
INSTALL_NATIVE(JSFunction, "$createDate", create_date_fun);
|
||||
|
||||
INSTALL_NATIVE(JSFunction, "$toNumber", to_number_fun);
|
||||
INSTALL_NATIVE(JSFunction, "$toString", to_string_fun);
|
||||
INSTALL_NATIVE(JSFunction, "$toDetailString", to_detail_string_fun);
|
||||
INSTALL_NATIVE(JSFunction, "$toInteger", to_integer_fun);
|
||||
INSTALL_NATIVE(JSFunction, "$toLength", to_length_fun);
|
||||
|
||||
INSTALL_NATIVE(JSFunction, "$globalEval", global_eval_fun);
|
||||
INSTALL_NATIVE(JSFunction, "$getStackTraceLine", get_stack_trace_line_fun);
|
||||
INSTALL_NATIVE(JSFunction, "$toCompletePropertyDescriptor",
|
||||
to_complete_property_descriptor);
|
||||
|
||||
INSTALL_NATIVE(Symbol, "$promiseStatus", promise_status);
|
||||
INSTALL_NATIVE(Symbol, "$promiseValue", promise_value);
|
||||
INSTALL_NATIVE(JSFunction, "$promiseCreate", promise_create);
|
||||
INSTALL_NATIVE(JSFunction, "$promiseResolve", promise_resolve);
|
||||
INSTALL_NATIVE(JSFunction, "$promiseReject", promise_reject);
|
||||
INSTALL_NATIVE(JSFunction, "$promiseChain", promise_chain);
|
||||
INSTALL_NATIVE(JSFunction, "$promiseCatch", promise_catch);
|
||||
INSTALL_NATIVE(JSFunction, "$promiseThen", promise_then);
|
||||
|
||||
INSTALL_NATIVE(JSFunction, "$observeNotifyChange", observers_notify_change);
|
||||
INSTALL_NATIVE(JSFunction, "$observeEnqueueSpliceRecord",
|
||||
observers_enqueue_splice);
|
||||
INSTALL_NATIVE(JSFunction, "$observeBeginPerformSplice",
|
||||
observers_begin_perform_splice);
|
||||
INSTALL_NATIVE(JSFunction, "$observeEndPerformSplice",
|
||||
observers_end_perform_splice);
|
||||
INSTALL_NATIVE(JSFunction, "$observeNativeObjectObserve",
|
||||
native_object_observe);
|
||||
INSTALL_NATIVE(JSFunction, "$observeNativeObjectGetNotifier",
|
||||
native_object_get_notifier);
|
||||
INSTALL_NATIVE(JSFunction, "$observeNativeObjectNotifierPerformChange",
|
||||
native_object_notifier_perform_change);
|
||||
INSTALL_NATIVE(JSFunction, "$arrayValues", array_values_iterator);
|
||||
INSTALL_NATIVE(JSFunction, "$mapGet", map_get);
|
||||
INSTALL_NATIVE(JSFunction, "$mapSet", map_set);
|
||||
INSTALL_NATIVE(JSFunction, "$mapHas", map_has);
|
||||
INSTALL_NATIVE(JSFunction, "$mapDelete", map_delete);
|
||||
INSTALL_NATIVE(JSFunction, "$setAdd", set_add);
|
||||
INSTALL_NATIVE(JSFunction, "$setHas", set_has);
|
||||
INSTALL_NATIVE(JSFunction, "$setDelete", set_delete);
|
||||
INSTALL_NATIVE(JSFunction, "$mapFromArray", map_from_array);
|
||||
INSTALL_NATIVE(JSFunction, "$setFromArray", set_from_array);
|
||||
}
|
||||
|
||||
|
||||
void Genesis::InstallExperimentalNativeFunctions() {
|
||||
if (FLAG_harmony_proxies) {
|
||||
INSTALL_NATIVE(JSFunction, "$proxyDerivedHasTrap", derived_has_trap);
|
||||
INSTALL_NATIVE(JSFunction, "$proxyDerivedGetTrap", derived_get_trap);
|
||||
INSTALL_NATIVE(JSFunction, "$proxyDerivedSetTrap", derived_set_trap);
|
||||
INSTALL_NATIVE(JSFunction, "$proxyEnumerate", proxy_enumerate);
|
||||
}
|
||||
|
||||
#define INSTALL_NATIVE_FUNCTIONS_FOR(id, descr) InstallNativeFunctions_##id();
|
||||
HARMONY_INPROGRESS(INSTALL_NATIVE_FUNCTIONS_FOR)
|
||||
HARMONY_STAGED(INSTALL_NATIVE_FUNCTIONS_FOR)
|
||||
HARMONY_SHIPPING(INSTALL_NATIVE_FUNCTIONS_FOR)
|
||||
#undef INSTALL_NATIVE_FUNCTIONS_FOR
|
||||
}
|
||||
|
||||
|
||||
template <typename Data>
|
||||
Data* SetBuiltinTypedArray(Isolate* isolate, Handle<JSBuiltinsObject> builtins,
|
||||
ExternalArrayType type, Data* data,
|
||||
@ -1832,8 +1752,68 @@ void Genesis::InitializeBuiltinTypedArrays() {
|
||||
}
|
||||
|
||||
|
||||
#define EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(id) \
|
||||
void Genesis::InstallNativeFunctions_##id() {}
|
||||
#define INSTALL_NATIVE(Type, name, var) \
|
||||
Handle<Object> var##_native = \
|
||||
Object::GetProperty(isolate, container, name, STRICT).ToHandleChecked(); \
|
||||
DCHECK(var##_native->Is##Type()); \
|
||||
native_context->set_##var(Type::cast(*var##_native));
|
||||
|
||||
|
||||
void Bootstrapper::ImportNatives(Isolate* isolate, Handle<JSObject> container) {
|
||||
HandleScope scope(isolate);
|
||||
Handle<Context> native_context = isolate->native_context();
|
||||
INSTALL_NATIVE(JSFunction, "CreateDate", create_date_fun);
|
||||
INSTALL_NATIVE(JSFunction, "ToNumber", to_number_fun);
|
||||
INSTALL_NATIVE(JSFunction, "ToString", to_string_fun);
|
||||
INSTALL_NATIVE(JSFunction, "ToDetailString", to_detail_string_fun);
|
||||
INSTALL_NATIVE(JSFunction, "ToInteger", to_integer_fun);
|
||||
INSTALL_NATIVE(JSFunction, "ToLength", to_length_fun);
|
||||
|
||||
INSTALL_NATIVE(JSFunction, "GlobalEval", global_eval_fun);
|
||||
INSTALL_NATIVE(JSFunction, "GetStackTraceLine", get_stack_trace_line_fun);
|
||||
INSTALL_NATIVE(JSFunction, "ToCompletePropertyDescriptor",
|
||||
to_complete_property_descriptor);
|
||||
|
||||
INSTALL_NATIVE(Symbol, "promiseStatus", promise_status);
|
||||
INSTALL_NATIVE(Symbol, "promiseValue", promise_value);
|
||||
INSTALL_NATIVE(JSFunction, "PromiseCreate", promise_create);
|
||||
INSTALL_NATIVE(JSFunction, "PromiseResolve", promise_resolve);
|
||||
INSTALL_NATIVE(JSFunction, "PromiseReject", promise_reject);
|
||||
INSTALL_NATIVE(JSFunction, "PromiseChain", promise_chain);
|
||||
INSTALL_NATIVE(JSFunction, "PromiseCatch", promise_catch);
|
||||
INSTALL_NATIVE(JSFunction, "PromiseThen", promise_then);
|
||||
|
||||
INSTALL_NATIVE(JSFunction, "ObserveNotifyChange", observers_notify_change);
|
||||
INSTALL_NATIVE(JSFunction, "ObserveEnqueueSpliceRecord",
|
||||
observers_enqueue_splice);
|
||||
INSTALL_NATIVE(JSFunction, "ObserveBeginPerformSplice",
|
||||
observers_begin_perform_splice);
|
||||
INSTALL_NATIVE(JSFunction, "ObserveEndPerformSplice",
|
||||
observers_end_perform_splice);
|
||||
INSTALL_NATIVE(JSFunction, "ObserveNativeObjectObserve",
|
||||
native_object_observe);
|
||||
INSTALL_NATIVE(JSFunction, "ObserveNativeObjectGetNotifier",
|
||||
native_object_get_notifier);
|
||||
INSTALL_NATIVE(JSFunction, "ObserveNativeObjectNotifierPerformChange",
|
||||
native_object_notifier_perform_change);
|
||||
|
||||
INSTALL_NATIVE(JSFunction, "ArrayValues", array_values_iterator);
|
||||
INSTALL_NATIVE(JSFunction, "MapGet", map_get);
|
||||
INSTALL_NATIVE(JSFunction, "MapSet", map_set);
|
||||
INSTALL_NATIVE(JSFunction, "MapHas", map_has);
|
||||
INSTALL_NATIVE(JSFunction, "MapDelete", map_delete);
|
||||
INSTALL_NATIVE(JSFunction, "SetAdd", set_add);
|
||||
INSTALL_NATIVE(JSFunction, "SetHas", set_has);
|
||||
INSTALL_NATIVE(JSFunction, "SetDelete", set_delete);
|
||||
INSTALL_NATIVE(JSFunction, "MapFromArray", map_from_array);
|
||||
INSTALL_NATIVE(JSFunction, "SetFromArray", set_from_array);
|
||||
}
|
||||
|
||||
|
||||
#define EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(id) \
|
||||
static void InstallExperimentalNatives_##id(Isolate* isolate, \
|
||||
Handle<Context> native_context, \
|
||||
Handle<JSObject> container) {}
|
||||
|
||||
EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_modules)
|
||||
EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_array_includes)
|
||||
@ -1858,16 +1838,31 @@ EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_concat_spreadable)
|
||||
EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_simd)
|
||||
|
||||
|
||||
void Genesis::InstallNativeFunctions_harmony_proxies() {
|
||||
static void InstallExperimentalNatives_harmony_proxies(
|
||||
Isolate* isolate, Handle<Context> native_context,
|
||||
Handle<JSObject> container) {
|
||||
if (FLAG_harmony_proxies) {
|
||||
INSTALL_NATIVE(JSFunction, "$proxyDerivedHasTrap", derived_has_trap);
|
||||
INSTALL_NATIVE(JSFunction, "$proxyDerivedGetTrap", derived_get_trap);
|
||||
INSTALL_NATIVE(JSFunction, "$proxyDerivedSetTrap", derived_set_trap);
|
||||
INSTALL_NATIVE(JSFunction, "$proxyEnumerate", proxy_enumerate);
|
||||
INSTALL_NATIVE(JSFunction, "ProxyDerivedGetTrap", derived_get_trap);
|
||||
INSTALL_NATIVE(JSFunction, "ProxyDerivedHasTrap", derived_has_trap);
|
||||
INSTALL_NATIVE(JSFunction, "ProxyDerivedSetTrap", derived_set_trap);
|
||||
INSTALL_NATIVE(JSFunction, "ProxyEnumerate", proxy_enumerate);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Bootstrapper::ImportExperimentalNatives(Isolate* isolate,
|
||||
Handle<JSObject> container) {
|
||||
HandleScope scope(isolate);
|
||||
Handle<Context> native_context = isolate->native_context();
|
||||
#define INSTALL_NATIVE_FUNCTIONS_FOR(id, descr) \
|
||||
InstallExperimentalNatives_##id(isolate, native_context, container);
|
||||
|
||||
HARMONY_INPROGRESS(INSTALL_NATIVE_FUNCTIONS_FOR)
|
||||
HARMONY_STAGED(INSTALL_NATIVE_FUNCTIONS_FOR)
|
||||
HARMONY_SHIPPING(INSTALL_NATIVE_FUNCTIONS_FOR)
|
||||
#undef INSTALL_NATIVE_FUNCTIONS_FOR
|
||||
}
|
||||
|
||||
#undef INSTALL_NATIVE
|
||||
|
||||
#define EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(id) \
|
||||
@ -2402,8 +2397,6 @@ bool Genesis::InstallNatives(ContextType context_type) {
|
||||
|
||||
if (!CallUtilsFunction(isolate(), "PostNatives")) return false;
|
||||
|
||||
InstallNativeFunctions();
|
||||
|
||||
auto function_cache =
|
||||
ObjectHashTable::New(isolate(), ApiNatives::kInitialFunctionCacheSize,
|
||||
USE_CUSTOM_MINIMUM_CAPACITY);
|
||||
@ -2607,7 +2600,6 @@ bool Genesis::InstallExperimentalNatives() {
|
||||
|
||||
if (!CallUtilsFunction(isolate(), "PostExperimentals")) return false;
|
||||
|
||||
InstallExperimentalNativeFunctions();
|
||||
InstallExperimentalBuiltinFunctionIds();
|
||||
return true;
|
||||
}
|
||||
|
@ -118,6 +118,10 @@ class Bootstrapper final {
|
||||
static bool CompileCodeStubBuiltin(Isolate* isolate, int index);
|
||||
static bool InstallCodeStubNatives(Isolate* isolate);
|
||||
|
||||
static void ImportNatives(Isolate* isolate, Handle<JSObject> container);
|
||||
static void ImportExperimentalNatives(Isolate* isolate,
|
||||
Handle<JSObject> container);
|
||||
|
||||
private:
|
||||
Isolate* isolate_;
|
||||
typedef int NestingCounterType;
|
||||
|
@ -4,14 +4,6 @@
|
||||
|
||||
var $getHash;
|
||||
var $getExistingHash;
|
||||
var $mapSet;
|
||||
var $mapHas;
|
||||
var $mapDelete;
|
||||
var $setAdd;
|
||||
var $setHas;
|
||||
var $setDelete;
|
||||
var $mapFromArray;
|
||||
var $setFromArray;
|
||||
|
||||
(function(global, utils) {
|
||||
"use strict";
|
||||
@ -487,15 +479,8 @@ utils.InstallFunctions(GlobalMap.prototype, DONT_ENUM, [
|
||||
// Expose to the global scope.
|
||||
$getHash = GetHash;
|
||||
$getExistingHash = GetExistingHash;
|
||||
$mapGet = MapGet;
|
||||
$mapSet = MapSet;
|
||||
$mapHas = MapHas;
|
||||
$mapDelete = MapDelete;
|
||||
$setAdd = SetAdd;
|
||||
$setHas = SetHas;
|
||||
$setDelete = SetDelete;
|
||||
|
||||
$mapFromArray = function(array) {
|
||||
function MapFromArray(array) {
|
||||
var map = new GlobalMap;
|
||||
var length = array.length;
|
||||
for (var i = 0; i < length; i += 2) {
|
||||
@ -506,7 +491,7 @@ $mapFromArray = function(array) {
|
||||
return map;
|
||||
};
|
||||
|
||||
$setFromArray = function(array) {
|
||||
function SetFromArray(array) {
|
||||
var set = new GlobalSet;
|
||||
var length = array.length;
|
||||
for (var i = 0; i < length; ++i) {
|
||||
@ -515,4 +500,19 @@ $setFromArray = function(array) {
|
||||
return set;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Exports
|
||||
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.MapGet = MapGet;
|
||||
to.MapSet = MapSet;
|
||||
to.MapHas = MapHas;
|
||||
to.MapDelete = MapDelete;
|
||||
to.SetAdd = SetAdd;
|
||||
to.SetHas = SetHas;
|
||||
to.SetDelete = SetDelete;
|
||||
to.MapFromArray = MapFromArray;
|
||||
to.SetFromArray = SetFromArray;
|
||||
});
|
||||
|
||||
})
|
||||
|
@ -880,7 +880,8 @@ utils.InstallFunctions(GlobalDate.prototype, DONT_ENUM, [
|
||||
"toJSON", DateToJSON
|
||||
]);
|
||||
|
||||
// Expose to the global scope.
|
||||
$createDate = CreateDate;
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.CreateDate = CreateDate;
|
||||
});
|
||||
|
||||
})
|
||||
|
@ -1015,7 +1015,6 @@ utils.InstallFunctions(GlobalError.prototype, DONT_ENUM,
|
||||
['toString', ErrorToString]);
|
||||
|
||||
$errorToString = ErrorToString;
|
||||
$getStackTraceLine = GetStackTraceLine;
|
||||
$messageGetPositionInLine = GetPositionInLine;
|
||||
$messageGetLineNumber = GetLineNumber;
|
||||
$messageGetSourceLine = GetSourceLine;
|
||||
@ -1076,4 +1075,8 @@ captureStackTrace = function captureStackTrace(obj, cons_opt) {
|
||||
|
||||
GlobalError.captureStackTrace = captureStackTrace;
|
||||
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.GetStackTraceLine = GetStackTraceLine;
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -2,13 +2,9 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
var $observeNotifyChange;
|
||||
var $observeEnqueueSpliceRecord;
|
||||
var $observeBeginPerformSplice;
|
||||
var $observeEndPerformSplice;
|
||||
var $observeNativeObjectObserve;
|
||||
var $observeNativeObjectGetNotifier;
|
||||
var $observeNativeObjectNotifierPerformChange;
|
||||
|
||||
var $observeObjectMethods;
|
||||
var $observeArrayMethods;
|
||||
@ -703,12 +699,19 @@ var removePrototypeFn = function(f, i) {
|
||||
$observeObjectMethods.forEach(removePrototypeFn);
|
||||
$observeArrayMethods.forEach(removePrototypeFn);
|
||||
|
||||
$observeNotifyChange = NotifyChange;
|
||||
$observeEnqueueSpliceRecord = EnqueueSpliceRecord;
|
||||
$observeBeginPerformSplice = BeginPerformSplice;
|
||||
$observeEndPerformSplice = EndPerformSplice;
|
||||
$observeNativeObjectObserve = NativeObjectObserve;
|
||||
$observeNativeObjectGetNotifier = NativeObjectGetNotifier;
|
||||
$observeNativeObjectNotifierPerformChange = NativeObjectNotifierPerformChange;
|
||||
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.ObserveNotifyChange = NotifyChange;
|
||||
to.ObserveEnqueueSpliceRecord = EnqueueSpliceRecord;
|
||||
to.ObserveBeginPerformSplice = BeginPerformSplice;
|
||||
to.ObserveEndPerformSplice = EndPerformSplice;
|
||||
to.ObserveNativeObjectObserve = NativeObjectObserve;
|
||||
to.ObserveNativeObjectGetNotifier = NativeObjectGetNotifier;
|
||||
to.ObserveNativeObjectNotifierPerformChange =
|
||||
NativeObjectNotifierPerformChange;
|
||||
});
|
||||
|
||||
})
|
||||
|
@ -14,7 +14,7 @@
|
||||
var imports = UNDEFINED;
|
||||
var exports = UNDEFINED;
|
||||
var imports_from_experimental = UNDEFINED;
|
||||
|
||||
var exports_to_runtime = UNDEFINED;
|
||||
|
||||
// Export to other scripts.
|
||||
// In normal natives, this exports functions to other normal natives.
|
||||
@ -26,6 +26,12 @@ function Export(f) {
|
||||
};
|
||||
|
||||
|
||||
// Export to the native context for calls from the runtime.
|
||||
function ExportToRuntime(f) {
|
||||
f.next = exports_to_runtime;
|
||||
exports_to_runtime = f;
|
||||
}
|
||||
|
||||
// Import from other scripts.
|
||||
// In normal natives, this imports from other normal natives.
|
||||
// In experimental natives, this imports from other experimental natives and
|
||||
@ -152,6 +158,13 @@ function PostNatives(utils) {
|
||||
for ( ; !IS_UNDEFINED(exports); exports = exports.next) exports(container);
|
||||
for ( ; !IS_UNDEFINED(imports); imports = imports.next) imports(container);
|
||||
|
||||
var runtime_container = {};
|
||||
for ( ; !IS_UNDEFINED(exports_to_runtime);
|
||||
exports_to_runtime = exports_to_runtime.next) {
|
||||
exports_to_runtime(runtime_container);
|
||||
}
|
||||
%ImportToRuntime(runtime_container);
|
||||
|
||||
// Whitelist of exports from normal natives to experimental natives.
|
||||
var expose_to_experimental = [
|
||||
"ArrayToString",
|
||||
@ -205,6 +218,12 @@ function PostExperimentals(utils) {
|
||||
imports_from_experimental = imports_from_experimental.next) {
|
||||
imports_from_experimental(experimental_exports);
|
||||
}
|
||||
var runtime_container = {};
|
||||
for ( ; !IS_UNDEFINED(exports_to_runtime);
|
||||
exports_to_runtime = exports_to_runtime.next) {
|
||||
exports_to_runtime(runtime_container);
|
||||
}
|
||||
%ImportExperimentalToRuntime(runtime_container);
|
||||
|
||||
experimental_exports = UNDEFINED;
|
||||
|
||||
@ -234,6 +253,7 @@ function PostDebug(utils) {
|
||||
InstallFunctions(utils, NONE, [
|
||||
"Import", Import,
|
||||
"Export", Export,
|
||||
"ExportToRuntime", ExportToRuntime,
|
||||
"ImportFromExperimental", ImportFromExperimental,
|
||||
"SetFunctionName", SetFunctionName,
|
||||
"InstallConstants", InstallConstants,
|
||||
@ -246,4 +266,13 @@ InstallFunctions(utils, NONE, [
|
||||
"PostDebug", PostDebug,
|
||||
]);
|
||||
|
||||
// TODO(yangguo): run prologue.js before runtime.js
|
||||
ExportToRuntime(function(to) {
|
||||
to.ToNumber = $toNumber;
|
||||
to.ToString = $toString;
|
||||
to.ToDetailString = $toDetailString;
|
||||
to.ToInteger = $toInteger;
|
||||
to.ToLength = $toLength;
|
||||
});
|
||||
|
||||
})
|
||||
|
@ -2,12 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
var $promiseCreate;
|
||||
var $promiseResolve;
|
||||
var $promiseReject;
|
||||
var $promiseChain;
|
||||
var $promiseCatch;
|
||||
var $promiseThen;
|
||||
var $promiseHasUserDefinedRejectHandler;
|
||||
var $promiseStatus;
|
||||
var $promiseValue;
|
||||
@ -386,14 +380,19 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [
|
||||
"catch", PromiseCatch
|
||||
]);
|
||||
|
||||
$promiseCreate = PromiseCreate;
|
||||
$promiseResolve = PromiseResolve;
|
||||
$promiseReject = PromiseReject;
|
||||
$promiseChain = PromiseChain;
|
||||
$promiseCatch = PromiseCatch;
|
||||
$promiseThen = PromiseThen;
|
||||
$promiseHasUserDefinedRejectHandler = PromiseHasUserDefinedRejectHandler;
|
||||
$promiseStatus = promiseStatus;
|
||||
$promiseValue = promiseValue;
|
||||
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.promiseStatus = promiseStatus;
|
||||
to.promiseValue = promiseValue;
|
||||
to.PromiseCreate = PromiseCreate;
|
||||
to.PromiseResolve = PromiseResolve;
|
||||
to.PromiseReject = PromiseReject;
|
||||
to.PromiseChain = PromiseChain;
|
||||
to.PromiseCatch = PromiseCatch;
|
||||
to.PromiseThen = PromiseThen;
|
||||
});
|
||||
|
||||
})
|
||||
|
17
src/proxy.js
17
src/proxy.js
@ -2,11 +2,6 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
var $proxyDerivedGetTrap;
|
||||
var $proxyDerivedHasTrap;
|
||||
var $proxyDerivedSetTrap;
|
||||
var $proxyEnumerate;
|
||||
|
||||
(function(global, utils) {
|
||||
|
||||
"use strict";
|
||||
@ -199,15 +194,17 @@ utils.InstallFunctions(Proxy, DONT_ENUM, [
|
||||
// -------------------------------------------------------------------
|
||||
// Exports
|
||||
|
||||
$proxyDerivedGetTrap = DerivedGetTrap;
|
||||
$proxyDerivedHasTrap = DerivedHasTrap;
|
||||
$proxyDerivedSetTrap = DerivedSetTrap;
|
||||
$proxyEnumerate = ProxyEnumerate;
|
||||
|
||||
utils.Export(function(to) {
|
||||
to.ProxyDelegateCallAndConstruct = DelegateCallAndConstruct;
|
||||
to.ProxyDerivedHasOwnTrap = DerivedHasOwnTrap;
|
||||
to.ProxyDerivedKeysTrap = DerivedKeysTrap;
|
||||
});
|
||||
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.ProxyDerivedGetTrap = DerivedGetTrap;
|
||||
to.ProxyDerivedHasTrap = DerivedHasTrap;
|
||||
to.ProxyDerivedSetTrap = DerivedSetTrap;
|
||||
to.ProxyEnumerate = ProxyEnumerate;
|
||||
});
|
||||
|
||||
})
|
||||
|
@ -915,7 +915,7 @@ function ToPositiveInteger(x, rangeErrorIndex) {
|
||||
// boilerplate gets the right prototype.
|
||||
%FunctionSetPrototype(GlobalArray, new GlobalArray(0));
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
$concatIterableToArray = ConcatIterableToArray;
|
||||
$defaultNumber = DefaultNumber;
|
||||
|
@ -24,6 +24,26 @@ RUNTIME_FUNCTION(Runtime_CheckIsBootstrapping) {
|
||||
}
|
||||
|
||||
|
||||
RUNTIME_FUNCTION(Runtime_ImportToRuntime) {
|
||||
HandleScope scope(isolate);
|
||||
DCHECK(args.length() == 1);
|
||||
CONVERT_ARG_HANDLE_CHECKED(JSObject, container, 0);
|
||||
RUNTIME_ASSERT(isolate->bootstrapper()->IsActive());
|
||||
Bootstrapper::ImportNatives(isolate, container);
|
||||
return isolate->heap()->undefined_value();
|
||||
}
|
||||
|
||||
|
||||
RUNTIME_FUNCTION(Runtime_ImportExperimentalToRuntime) {
|
||||
HandleScope scope(isolate);
|
||||
DCHECK(args.length() == 1);
|
||||
CONVERT_ARG_HANDLE_CHECKED(JSObject, container, 0);
|
||||
RUNTIME_ASSERT(isolate->bootstrapper()->IsActive());
|
||||
Bootstrapper::ImportExperimentalNatives(isolate, container);
|
||||
return isolate->heap()->undefined_value();
|
||||
}
|
||||
|
||||
|
||||
RUNTIME_FUNCTION(Runtime_Throw) {
|
||||
HandleScope scope(isolate);
|
||||
DCHECK(args.length() == 1);
|
||||
|
@ -301,6 +301,8 @@ namespace internal {
|
||||
|
||||
#define FOR_EACH_INTRINSIC_INTERNAL(F) \
|
||||
F(CheckIsBootstrapping, 0, 1) \
|
||||
F(ImportToRuntime, 1, 1) \
|
||||
F(ImportExperimentalToRuntime, 1, 1) \
|
||||
F(Throw, 1, 1) \
|
||||
F(ReThrow, 1, 1) \
|
||||
F(UnwindAndFindExceptionHandler, 0, 1) \
|
||||
|
@ -3,10 +3,8 @@
|
||||
// found in the LICENSE file.
|
||||
|
||||
var $functionSourceString;
|
||||
var $globalEval;
|
||||
var $objectDefineOwnProperty;
|
||||
var $objectGetOwnPropertyDescriptor;
|
||||
var $toCompletePropertyDescriptor;
|
||||
|
||||
(function(global, utils) {
|
||||
|
||||
@ -1787,10 +1785,8 @@ function GetIterator(obj, method) {
|
||||
// Exports
|
||||
|
||||
$functionSourceString = FunctionSourceString;
|
||||
$globalEval = GlobalEval;
|
||||
$objectDefineOwnProperty = DefineOwnPropertyFromAPI;
|
||||
$objectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor;
|
||||
$toCompletePropertyDescriptor = ToCompletePropertyDescriptor;
|
||||
|
||||
utils.ObjectDefineProperties = ObjectDefineProperties;
|
||||
utils.ObjectDefineProperty = ObjectDefineProperty;
|
||||
@ -1814,4 +1810,9 @@ utils.Export(function(to) {
|
||||
to.ToNameArray = ToNameArray;
|
||||
});
|
||||
|
||||
utils.ExportToRuntime(function(to) {
|
||||
to.GlobalEval = GlobalEval;
|
||||
to.ToCompletePropertyDescriptor = ToCompletePropertyDescriptor;
|
||||
});
|
||||
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user