### Begin File: JSCBuiltins.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; class VM; enum class ConstructAbility : unsigned; } namespace JSC { /* Builtin.Promise */ extern const char* s_builtinPromiseRejectPromiseCode; extern const int s_builtinPromiseRejectPromiseCodeLength; extern const JSC::ConstructAbility s_builtinPromiseRejectPromiseCodeConstructAbility; extern const char* s_builtinPromiseFulfillPromiseCode; extern const int s_builtinPromiseFulfillPromiseCodeLength; extern const JSC::ConstructAbility s_builtinPromiseFulfillPromiseCodeConstructAbility; #define JSC_FOREACH_BUILTINPROMISE_BUILTIN_DATA(macro) \ macro(rejectPromise, builtinPromiseRejectPromise, 2) \ macro(fulfillPromise, builtinPromiseFulfillPromise, 2) \ #define JSC_FOREACH_BUILTIN_CODE(macro) \ macro(builtinPromiseRejectPromiseCode, rejectPromise, static_cast(nullptr), s_builtinPromiseRejectPromiseCodeLength) \ macro(builtinPromiseFulfillPromiseCode, fulfillPromise, static_cast(nullptr), s_builtinPromiseFulfillPromiseCodeLength) \ #define JSC_FOREACH_BUILTIN_FUNCTION_NAME(macro) \ macro(fulfillPromise) \ macro(rejectPromise) \ #define JSC_FOREACH_BUILTIN_FUNCTION_PRIVATE_GLOBAL_NAME(macro) \ #define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM&); JSC_FOREACH_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) #undef DECLARE_BUILTIN_GENERATOR } // namespace JSC ### End File: JSCBuiltins.h ### Begin File: JSCBuiltins.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 "JSCBuiltins.h" #include "BuiltinExecutables.h" #include "HeapInlines.h" #include "IdentifierInlines.h" #include "Intrinsic.h" #include "JSCellInlines.h" #include "UnlinkedFunctionExecutable.h" #include "VM.h" namespace JSC { const JSC::ConstructAbility s_builtinPromiseRejectPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const int s_builtinPromiseRejectPromiseCodeLength = 410; static const JSC::Intrinsic s_builtinPromiseRejectPromiseCodeIntrinsic = JSC::NoIntrinsic; const char* s_builtinPromiseRejectPromiseCode = "(function (promise, reason)\n" \ "{\n" \ " \"use strict\";\n" \ " var reactions = promise.@promiseRejectReactions;\n" \ " promise.@promiseResult = reason;\n" \ " promise.@promiseFulfillReactions = undefined;\n" \ " promise.@promiseRejectReactions = undefined;\n" \ " promise.@promiseState = @promiseRejected;\n" \ " @InspectorInstrumentation.promiseRejected(promise, reason, reactions);\n" \ " @triggerPromiseReactions(reactions, reason);\n" \ "})\n" \ ; const JSC::ConstructAbility s_builtinPromiseFulfillPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const int s_builtinPromiseFulfillPromiseCodeLength = 409; static const JSC::Intrinsic s_builtinPromiseFulfillPromiseCodeIntrinsic = JSC::NoIntrinsic; const char* s_builtinPromiseFulfillPromiseCode = "(function (promise, value)\n" \ "{\n" \ " \"use strict\";\n" \ " var reactions = promise.@promiseFulfillReactions;\n" \ " promise.@promiseResult = value;\n" \ " promise.@promiseFulfillReactions = undefined;\n" \ " promise.@promiseRejectReactions = undefined;\n" \ " promise.@promiseState = @promiseFulfilled;\n" \ " @InspectorInstrumentation.promiseFulfilled(promise, value, reactions);\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, vm.builtinExecutables()->codeName##Source(), std::nullopt, s_##codeName##Intrinsic); } JSC_FOREACH_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) #undef DEFINE_BUILTIN_GENERATOR } // namespace JSC ### End File: JSCBuiltins.cpp