// /* // * Copyright (c) 2016 Apple Inc. All rights reserved. // * Copyright (c) 2017 Apple Inc. // * // * 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 // #include "JavaScriptCore/BuiltinUtils.h" // #include "JavaScriptCore/Identifier.h" // #include "JavaScriptCore/JSFunction.h" // #include "JavaScriptCore/UnlinkedFunctionExecutable.h" // namespace JSC { // class FunctionExecutable; // } // namespace WebCore { // /* JSDOMBindingInternals */ // extern const char* const s_jsDOMBindingInternalsForEachWrapperCode; // extern const int s_jsDOMBindingInternalsForEachWrapperCodeLength; // extern const JSC::ConstructAbility s_jsDOMBindingInternalsForEachWrapperCodeConstructAbility; // extern const JSC::ConstructorKind s_jsDOMBindingInternalsForEachWrapperCodeConstructorKind; // extern const char* const s_jsDOMBindingInternalsGetUserMediaShimCode; // extern const int s_jsDOMBindingInternalsGetUserMediaShimCodeLength; // extern const JSC::ConstructAbility s_jsDOMBindingInternalsGetUserMediaShimCodeConstructAbility; // extern const JSC::ConstructorKind s_jsDOMBindingInternalsGetUserMediaShimCodeConstructorKind; // #define WEBCORE_BUILTIN_JSDOMBINDINGINTERNALS_FOREACHWRAPPER 0 // #define WEBCORE_BUILTIN_JSDOMBINDINGINTERNALS_GETUSERMEDIASHIM 0 // #define WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_CODE(macro) \ // macro(jsDOMBindingInternalsForEachWrapperCode, forEachWrapper, static_cast(nullptr), s_jsDOMBindingInternalsForEachWrapperCodeLength) \ // macro(jsDOMBindingInternalsGetUserMediaShimCode, getUserMediaShim, static_cast(nullptr), s_jsDOMBindingInternalsGetUserMediaShimCodeLength) // #define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ // JSC::FunctionExecutable* codeName##Generator(JSC::VM&); // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) // #undef DECLARE_BUILTIN_GENERATOR // class JSDOMBindingInternalsBuiltinsWrapper : private JSC::WeakHandleOwner { // public: // explicit JSDOMBindingInternalsBuiltinsWrapper(JSC::VM& vm) // : m_vm(vm) // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) // #define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length), {})) // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) // #undef INITIALIZE_BUILTIN_SOURCE_MEMBERS // { // } // #define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ // JSC::UnlinkedFunctionExecutable* name##Executable(); \ // const JSC::SourceCode& name##Source() const { return m_##name##Source; } // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) // #undef EXPOSE_BUILTIN_EXECUTABLES // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) // void exportNames(); // private: // JSC::VM& m_vm; // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) // #define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ // JSC::SourceCode m_##name##Source; \ // JSC::Weak m_##name##Executable; // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) // #undef DECLARE_BUILTIN_SOURCE_MEMBERS // }; // #define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ // inline JSC::UnlinkedFunctionExecutable* JSDOMBindingInternalsBuiltinsWrapper::name##Executable() \ // { \ // if (!m_##name##Executable) { \ // JSC::Identifier executableName = functionName##PublicName(); \ // if (overriddenName) \ // executableName = JSC::Identifier::fromString(m_vm, overriddenName); \ // m_##name##Executable = JSC::Weak(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable); \ // } \ // return m_##name##Executable.get(); \ // } // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) // #undef DEFINE_BUILTIN_EXECUTABLES // inline void JSDOMBindingInternalsBuiltinsWrapper::exportNames() // { // #define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) // #undef EXPORT_FUNCTION_NAME // } // class JSDOMBindingInternalsBuiltinFunctions { // public: // explicit JSDOMBindingInternalsBuiltinFunctions(JSC::VM& vm) // : m_vm(vm) // { // } // void init(JSC::JSGlobalObject&); // template void visit(Visitor&); // public: // JSC::VM& m_vm; // #define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \ // JSC::WriteBarrier m_##functionName##Function; // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS) // #undef DECLARE_BUILTIN_SOURCE_MEMBERS // }; // inline void JSDOMBindingInternalsBuiltinFunctions::init(JSC::JSGlobalObject& globalObject) // { // #define EXPORT_FUNCTION(codeName, functionName, overriddenName, length) \ // m_##functionName##Function.set(m_vm, &globalObject, JSC::JSFunction::create(m_vm, codeName##Generator(m_vm), &globalObject)); // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_CODE(EXPORT_FUNCTION) // #undef EXPORT_FUNCTION // } // template // inline void JSDOMBindingInternalsBuiltinFunctions::visit(Visitor& visitor) // { // #define VISIT_FUNCTION(name) visitor.append(m_##name##Function); // WEBCORE_FOREACH_JSDOMBINDINGINTERNALS_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION) // #undef VISIT_FUNCTION // } // template void JSDOMBindingInternalsBuiltinFunctions::visit(JSC::AbstractSlotVisitor&); // template void JSDOMBindingInternalsBuiltinFunctions::visit(JSC::SlotVisitor&); // } // namespace WebCore