JavaScriptCore-Operations.Promise-Combined.js-result [plain text]
### Begin File: JSCBuiltins.h
/*
* Copyright (c) 2015 Yusuke Suzuki <utatane.tea@gmail.com>.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for
// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py
#ifndef JSCBuiltins_h
#define JSCBuiltins_h
namespace JSC {
class FunctionExecutable;
class VM;
enum class ConstructAbility : unsigned;
}
namespace JSC {
/* Operations.Promise */
extern const char* s_operationsPromiseIsPromiseCode;
extern const int s_operationsPromiseIsPromiseCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseIsPromiseCodeConstructAbility;
extern const char* s_operationsPromiseNewPromiseReactionCode;
extern const int s_operationsPromiseNewPromiseReactionCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseNewPromiseReactionCodeConstructAbility;
extern const char* s_operationsPromiseNewPromiseCapabilityCode;
extern const int s_operationsPromiseNewPromiseCapabilityCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseNewPromiseCapabilityCodeConstructAbility;
extern const char* s_operationsPromiseTriggerPromiseReactionsCode;
extern const int s_operationsPromiseTriggerPromiseReactionsCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseTriggerPromiseReactionsCodeConstructAbility;
extern const char* s_operationsPromiseRejectPromiseCode;
extern const int s_operationsPromiseRejectPromiseCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseRejectPromiseCodeConstructAbility;
extern const char* s_operationsPromiseFulfillPromiseCode;
extern const int s_operationsPromiseFulfillPromiseCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseFulfillPromiseCodeConstructAbility;
extern const char* s_operationsPromiseCreateResolvingFunctionsCode;
extern const int s_operationsPromiseCreateResolvingFunctionsCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseCreateResolvingFunctionsCodeConstructAbility;
extern const char* s_operationsPromisePromiseReactionJobCode;
extern const int s_operationsPromisePromiseReactionJobCodeLength;
extern const JSC::ConstructAbility s_operationsPromisePromiseReactionJobCodeConstructAbility;
extern const char* s_operationsPromisePromiseResolveThenableJobCode;
extern const int s_operationsPromisePromiseResolveThenableJobCodeLength;
extern const JSC::ConstructAbility s_operationsPromisePromiseResolveThenableJobCodeConstructAbility;
extern const char* s_operationsPromiseInitializePromiseCode;
extern const int s_operationsPromiseInitializePromiseCodeLength;
extern const JSC::ConstructAbility s_operationsPromiseInitializePromiseCodeConstructAbility;
#define JSC_FOREACH_OPERATIONSPROMISE_BUILTIN_DATA(macro) \
macro(isPromise, operationsPromiseIsPromise, 1) \
macro(newPromiseReaction, operationsPromiseNewPromiseReaction, 2) \
macro(newPromiseCapability, operationsPromiseNewPromiseCapability, 1) \
macro(triggerPromiseReactions, operationsPromiseTriggerPromiseReactions, 2) \
macro(rejectPromise, operationsPromiseRejectPromise, 2) \
macro(fulfillPromise, operationsPromiseFulfillPromise, 2) \
macro(createResolvingFunctions, operationsPromiseCreateResolvingFunctions, 1) \
macro(promiseReactionJob, operationsPromisePromiseReactionJob, 2) \
macro(promiseResolveThenableJob, operationsPromisePromiseResolveThenableJob, 3) \
macro(initializePromise, operationsPromiseInitializePromise, 1) \
#define JSC_BUILTIN_OPERATIONSPROMISE_ISPROMISE 1
#define JSC_BUILTIN_OPERATIONSPROMISE_NEWPROMISEREACTION 1
#define JSC_BUILTIN_OPERATIONSPROMISE_NEWPROMISECAPABILITY 1
#define JSC_BUILTIN_OPERATIONSPROMISE_TRIGGERPROMISEREACTIONS 1
#define JSC_BUILTIN_OPERATIONSPROMISE_REJECTPROMISE 1
#define JSC_BUILTIN_OPERATIONSPROMISE_FULFILLPROMISE 1
#define JSC_BUILTIN_OPERATIONSPROMISE_CREATERESOLVINGFUNCTIONS 1
#define JSC_BUILTIN_OPERATIONSPROMISE_PROMISEREACTIONJOB 1
#define JSC_BUILTIN_OPERATIONSPROMISE_PROMISERESOLVETHENABLEJOB 1
#define JSC_BUILTIN_OPERATIONSPROMISE_INITIALIZEPROMISE 1
#define JSC_FOREACH_BUILTIN_CODE(macro) \
macro(operationsPromiseIsPromiseCode, isPromise, s_operationsPromiseIsPromiseCodeLength) \
macro(operationsPromiseNewPromiseReactionCode, newPromiseReaction, s_operationsPromiseNewPromiseReactionCodeLength) \
macro(operationsPromiseNewPromiseCapabilityCode, newPromiseCapability, s_operationsPromiseNewPromiseCapabilityCodeLength) \
macro(operationsPromiseTriggerPromiseReactionsCode, triggerPromiseReactions, s_operationsPromiseTriggerPromiseReactionsCodeLength) \
macro(operationsPromiseRejectPromiseCode, rejectPromise, s_operationsPromiseRejectPromiseCodeLength) \
macro(operationsPromiseFulfillPromiseCode, fulfillPromise, s_operationsPromiseFulfillPromiseCodeLength) \
macro(operationsPromiseCreateResolvingFunctionsCode, createResolvingFunctions, s_operationsPromiseCreateResolvingFunctionsCodeLength) \
macro(operationsPromisePromiseReactionJobCode, promiseReactionJob, s_operationsPromisePromiseReactionJobCodeLength) \
macro(operationsPromisePromiseResolveThenableJobCode, promiseResolveThenableJob, s_operationsPromisePromiseResolveThenableJobCodeLength) \
macro(operationsPromiseInitializePromiseCode, initializePromise, s_operationsPromiseInitializePromiseCodeLength) \
#define JSC_FOREACH_BUILTIN_FUNCTION_NAME(macro) \
macro(createResolvingFunctions) \
macro(fulfillPromise) \
macro(initializePromise) \
macro(isPromise) \
macro(newPromiseCapability) \
macro(newPromiseReaction) \
macro(promiseReactionJob) \
macro(promiseResolveThenableJob) \
macro(rejectPromise) \
macro(triggerPromiseReactions) \
#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
JSC::FunctionExecutable* codeName##Generator(JSC::VM&);
JSC_FOREACH_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR)
#undef DECLARE_BUILTIN_GENERATOR
#define JSC_BUILTIN_EXISTS(object, func) defined JSC_BUILTIN_ ## object ## _ ## func
} // namespace JSC
#endif // JSCBuiltins_h
### End File: JSCBuiltins.h
### Begin File: JSCBuiltins.cpp
/*
* Copyright (c) 2015 Yusuke Suzuki <utatane.tea@gmail.com>.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for
// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py
#include "config.h"
#include "JSCBuiltins.h"
#include "BuiltinExecutables.h"
#include "Executable.h"
#include "JSCellInlines.h"
#include "VM.h"
namespace JSC {
const JSC::ConstructAbility s_operationsPromiseIsPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseIsPromiseCodeLength = 158;
const char* s_operationsPromiseIsPromiseCode =
"(function (promise)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" return @isObject(promise) && !!promise.@promiseState;\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromiseNewPromiseReactionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseNewPromiseReactionCodeLength = 220;
const char* s_operationsPromiseNewPromiseReactionCode =
"(function (capability, handler)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" return {\n" \
" @capabilities: capability,\n" \
" @handler: handler\n" \
" };\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromiseNewPromiseCapabilityCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseNewPromiseCapabilityCodeLength = 1427;
const char* s_operationsPromiseNewPromiseCapabilityCode =
"(function (constructor)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" //\n" \
" if (typeof constructor !== \"function\")\n" \
" throw new @TypeError(\"promise capability requires a constructor function\");\n" \
"\n" \
" var promiseCapability = {\n" \
" @promise: undefined,\n" \
" @resolve: undefined,\n" \
" @reject: undefined\n" \
" };\n" \
"\n" \
" function executor(resolve, reject)\n" \
" {\n" \
" if (promiseCapability.@resolve !== undefined)\n" \
" throw new @TypeError(\"resolve function is already set\");\n" \
" if (promiseCapability.@reject !== undefined)\n" \
" throw new @TypeError(\"reject function is already set\");\n" \
"\n" \
" promiseCapability.@resolve = resolve;\n" \
" promiseCapability.@reject = reject;\n" \
" }\n" \
"\n" \
" var promise = new constructor(executor);\n" \
"\n" \
" if (typeof promiseCapability.@resolve !== \"function\")\n" \
" throw new @TypeError(\"executor did not take a resolve function\");\n" \
"\n" \
" if (typeof promiseCapability.@reject !== \"function\")\n" \
" throw new @TypeError(\"executor did not take a reject function\");\n" \
"\n" \
" promiseCapability.@promise = promise;\n" \
"\n" \
" return promiseCapability;\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromiseTriggerPromiseReactionsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseTriggerPromiseReactionsCodeLength = 269;
const char* s_operationsPromiseTriggerPromiseReactionsCode =
"(function (reactions, argument)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" for (var index = 0, length = reactions.length; index < length; ++index)\n" \
" @enqueueJob(@promiseReactionJob, [reactions[index], argument]);\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromiseRejectPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseRejectPromiseCodeLength = 541;
const char* s_operationsPromiseRejectPromiseCode =
"(function (promise, reason)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" var reactions = promise.@promiseRejectReactions;\n" \
" promise.@promiseResult = reason;\n" \
" promise.@promiseFulfillReactions = undefined;\n" \
" promise.@promiseRejectReactions = undefined;\n" \
" promise.@promiseState = @promiseRejected;\n" \
"\n" \
" @InspectorInstrumentation.promiseRejected(promise, reason, reactions);\n" \
"\n" \
" @triggerPromiseReactions(reactions, reason);\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromiseFulfillPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseFulfillPromiseCodeLength = 540;
const char* s_operationsPromiseFulfillPromiseCode =
"(function (promise, value)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" var reactions = promise.@promiseFulfillReactions;\n" \
" promise.@promiseResult = value;\n" \
" promise.@promiseFulfillReactions = undefined;\n" \
" promise.@promiseRejectReactions = undefined;\n" \
" promise.@promiseState = @promiseFulfilled;\n" \
"\n" \
" @InspectorInstrumentation.promiseFulfilled(promise, value, reactions);\n" \
"\n" \
" @triggerPromiseReactions(reactions, value);\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromiseCreateResolvingFunctionsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseCreateResolvingFunctionsCodeLength = 1468;
const char* s_operationsPromiseCreateResolvingFunctionsCode =
"(function (promise)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" var alreadyResolved = false;\n" \
"\n" \
" var resolve = function (resolution) {\n" \
" if (alreadyResolved)\n" \
" return undefined;\n" \
" alreadyResolved = true;\n" \
"\n" \
" if (resolution === promise)\n" \
" return @rejectPromise(promise, new @TypeError(\"Resolve a promise with itself\"));\n" \
"\n" \
" if (!@isObject(resolution))\n" \
" return @fulfillPromise(promise, resolution);\n" \
"\n" \
" var then;\n" \
" try {\n" \
" then = resolution.then;\n" \
" } catch (error) {\n" \
" return @rejectPromise(promise, error);\n" \
" }\n" \
"\n" \
" if (typeof then !== 'function')\n" \
" return @fulfillPromise(promise, resolution);\n" \
"\n" \
" @enqueueJob(@promiseResolveThenableJob, [promise, resolution, then]);\n" \
"\n" \
" return undefined;\n" \
" };\n" \
"\n" \
" var reject = function (reason) {\n" \
" if (alreadyResolved)\n" \
" return undefined;\n" \
" alreadyResolved = true;\n" \
"\n" \
" return @rejectPromise(promise, reason);\n" \
" };\n" \
"\n" \
" return {\n" \
" @resolve: resolve,\n" \
" @reject: reject\n" \
" };\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromisePromiseReactionJobCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromisePromiseReactionJobCodeLength = 493;
const char* s_operationsPromisePromiseReactionJobCode =
"(function (reaction, argument)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" var promiseCapability = reaction.@capabilities;\n" \
"\n" \
" var result;\n" \
" try {\n" \
" result = reaction.@handler.@call(undefined, argument);\n" \
" } catch (error) {\n" \
" return promiseCapability.@reject.@call(undefined, error);\n" \
" }\n" \
"\n" \
" return promiseCapability.@resolve.@call(undefined, result);\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromisePromiseResolveThenableJobCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromisePromiseResolveThenableJobCodeLength = 453;
const char* s_operationsPromisePromiseResolveThenableJobCode =
"(function (promiseToResolve, thenable, then)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" var resolvingFunctions = @createResolvingFunctions(promiseToResolve);\n" \
"\n" \
" try {\n" \
" return then.@call(thenable, resolvingFunctions.@resolve, resolvingFunctions.@reject);\n" \
" } catch (error) {\n" \
" return resolvingFunctions.@reject.@call(undefined, error);\n" \
" }\n" \
"})\n" \
;
const JSC::ConstructAbility s_operationsPromiseInitializePromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const int s_operationsPromiseInitializePromiseCodeLength = 731;
const char* s_operationsPromiseInitializePromiseCode =
"(function (executor)\n" \
"{\n" \
" \"use strict\";\n" \
"\n" \
" if (typeof executor !== 'function')\n" \
" throw new @TypeError(\"Promise constructor takes a function argument\");\n" \
"\n" \
" this.@promiseState = @promisePending;\n" \
" this.@promiseFulfillReactions = [];\n" \
" this.@promiseRejectReactions = [];\n" \
"\n" \
" var resolvingFunctions = @createResolvingFunctions(this);\n" \
" try {\n" \
" executor(resolvingFunctions.@resolve, resolvingFunctions.@reject);\n" \
" } catch (error) {\n" \
" return resolvingFunctions.@reject.@call(undefined, error);\n" \
" }\n" \
"\n" \
" return this;\n" \
"})\n" \
;
#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \
{\
return vm.builtinExecutables()->codeName##Executable()->link(vm, vm.builtinExecutables()->codeName##Source()); }
JSC_FOREACH_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR)
#undef DEFINE_BUILTIN_GENERATOR
} // namespace JSC
### End File: JSCBuiltins.cpp