### Begin File: BuiltinPromiseBuiltins.h /* * Copyright (c) 2015 Yusuke Suzuki . * Copyright (c) 2016 Apple Inc. All rights reserved. * * 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 #pragma once namespace JSC { class FunctionExecutable; } namespace JSC { /* Builtin.Promise */ extern const char* const s_builtinPromiseRejectPromiseCode; extern const int s_builtinPromiseRejectPromiseCodeLength; extern const JSC::ConstructAbility s_builtinPromiseRejectPromiseCodeConstructAbility; extern const JSC::ConstructorKind s_builtinPromiseRejectPromiseCodeConstructorKind; extern const char* const s_builtinPromiseFulfillPromiseCode; extern const int s_builtinPromiseFulfillPromiseCodeLength; extern const JSC::ConstructAbility s_builtinPromiseFulfillPromiseCodeConstructAbility; extern const JSC::ConstructorKind s_builtinPromiseFulfillPromiseCodeConstructorKind; #define JSC_FOREACH_BUILTIN_PROMISE_BUILTIN_DATA(macro) \ macro(rejectPromise, builtinPromiseRejectPromise, 2) \ macro(fulfillPromise, builtinPromiseFulfillPromise, 2) \ #define JSC_BUILTIN_BUILTIN_PROMISE_REJECTPROMISE 1 #define JSC_BUILTIN_BUILTIN_PROMISE_FULFILLPROMISE 1 #define JSC_FOREACH_BUILTIN.PROMISE_BUILTIN_CODE(macro) \ macro(builtinPromiseRejectPromiseCode, rejectPromise, ASCIILiteral(), s_builtinPromiseRejectPromiseCodeLength) \ macro(builtinPromiseFulfillPromiseCode, fulfillPromise, ASCIILiteral(), s_builtinPromiseFulfillPromiseCodeLength) \ #define JSC_FOREACH_BUILTIN.PROMISE_BUILTIN_FUNCTION_NAME(macro) \ macro(fulfillPromise) \ macro(rejectPromise) \ #define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM&); JSC_FOREACH_BUILTIN.PROMISE_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) #undef DECLARE_BUILTIN_GENERATOR } // namespace JSC ### End File: BuiltinPromiseBuiltins.h ### Begin File: BuiltinPromiseBuiltins.cpp /* * Copyright (c) 2015 Yusuke Suzuki . * Copyright (c) 2016 Apple Inc. All rights reserved. * * 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 "BuiltinPromiseBuiltins.h" #include "BuiltinExecutables.h" #include "HeapInlines.h" #include "IdentifierInlines.h" #include "Intrinsic.h" #include "JSCellInlines.h" #include "VM.h" namespace JSC { const JSC::ConstructAbility s_builtinPromiseRejectPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const JSC::ConstructorKind s_builtinPromiseRejectPromiseCodeConstructorKind = JSC::ConstructorKind::None; const int s_builtinPromiseRejectPromiseCodeLength = 337; static const JSC::Intrinsic s_builtinPromiseRejectPromiseCodeIntrinsic = JSC::NoIntrinsic; const char* const s_builtinPromiseRejectPromiseCode = "(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" \ " @triggerPromiseReactions(reactions, reason);\n" \ "})\n" \ ; const JSC::ConstructAbility s_builtinPromiseFulfillPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const JSC::ConstructorKind s_builtinPromiseFulfillPromiseCodeConstructorKind = JSC::ConstructorKind::None; const int s_builtinPromiseFulfillPromiseCodeLength = 336; static const JSC::Intrinsic s_builtinPromiseFulfillPromiseCodeIntrinsic = JSC::NoIntrinsic; const char* const s_builtinPromiseFulfillPromiseCode = "(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" \ " @triggerPromiseReactions(reactions, value);\n" \ "})\n" \ ; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ {\ return vm.builtinExecutables()->codeName##Executable()->link(vm, nullptr, vm.builtinExecutables()->codeName##Source(), std::nullopt, s_##codeName##Intrinsic); } JSC_FOREACH_BUILTIN.PROMISE_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) #undef DEFINE_BUILTIN_GENERATOR } // namespace JSC ### End File: BuiltinPromiseBuiltins.cpp