From a77825799e83b05833f22b4d7f8950ff2bc3fe00 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Wed, 22 Jun 2022 22:52:03 -0700 Subject: Move builtins to src/javascript/jsc/builtins --- .../jsc/builtins/cpp/JSBufferConstructorBuiltins.h | 127 +++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 src/javascript/jsc/builtins/cpp/JSBufferConstructorBuiltins.h (limited to 'src/javascript/jsc/builtins/cpp/JSBufferConstructorBuiltins.h') diff --git a/src/javascript/jsc/builtins/cpp/JSBufferConstructorBuiltins.h b/src/javascript/jsc/builtins/cpp/JSBufferConstructorBuiltins.h new file mode 100644 index 000000000..1495b852d --- /dev/null +++ b/src/javascript/jsc/builtins/cpp/JSBufferConstructorBuiltins.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2015 Igalia + * Copyright (c) 2015 Igalia S.L. + * Copyright (c) 2015 Igalia. + * Copyright (c) 2015, 2016 Canon Inc. All rights reserved. + * Copyright (c) 2015, 2016, 2017 Canon Inc. + * Copyright (c) 2016, 2020 Apple Inc. All rights reserved. + * Copyright (c) 2022 Codeblog Corp. 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 + +#include +#include +#include +#include + +namespace JSC { +class FunctionExecutable; +} + +namespace WebCore { + +/* JSBufferConstructor */ +extern const char* const s_jsBufferConstructorFromCode; +extern const int s_jsBufferConstructorFromCodeLength; +extern const JSC::ConstructAbility s_jsBufferConstructorFromCodeConstructAbility; +extern const JSC::ConstructorKind s_jsBufferConstructorFromCodeConstructorKind; + +#define WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_DATA(macro) \ + macro(from, jsBufferConstructorFrom, 1) \ + +#define WEBCORE_BUILTIN_JSBUFFERCONSTRUCTOR_FROM 1 + +#define WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(macro) \ + macro(jsBufferConstructorFromCode, from, ASCIILiteral(), s_jsBufferConstructorFromCodeLength) \ + +#define WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(macro) \ + macro(from) \ + +#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ + JSC::FunctionExecutable* codeName##Generator(JSC::VM&); + +WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) +#undef DECLARE_BUILTIN_GENERATOR + +class JSBufferConstructorBuiltinsWrapper : private JSC::WeakHandleOwner { +public: + explicit JSBufferConstructorBuiltinsWrapper(JSC::VM& vm) + : m_vm(vm) + WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) +#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) + WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_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_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) +#undef EXPOSE_BUILTIN_EXECUTABLES + + WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) + + void exportNames(); + +private: + JSC::VM& m_vm; + + WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_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_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) +#undef DECLARE_BUILTIN_SOURCE_MEMBERS + +}; + +#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ +inline JSC::UnlinkedFunctionExecutable* JSBufferConstructorBuiltinsWrapper::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_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) +#undef DEFINE_BUILTIN_EXECUTABLES + +inline void JSBufferConstructorBuiltinsWrapper::exportNames() +{ +#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); + WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) +#undef EXPORT_FUNCTION_NAME +} + +} // namespace WebCore -- cgit v1.2.3 ion value='jarred/clipboard-objc'>jarred/clipboard-objc Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2022-10-11Fix crash when decoding latin1 rope strings and the GC is runningGravatar Jarred Sumner 1-1/+1
2022-10-11Implement `Bun.spawnSync`Gravatar Jarred Sumner 4-81/+214
2022-10-11Make `Bun.spawn` work on LinuxGravatar Jarred Sumner 6-174/+245
2022-10-11Fixup exampleGravatar Jarred Sumner 1-15/+45
2022-10-11Handle eintr in uSocketsGravatar Jarred Sumner 1-0/+0
2022-10-11Add test for Bun.file() for stdin and stdoutGravatar Jarred Sumner 2-2/+40
2022-10-11Maybe fix linux bug?Gravatar Jarred Sumner 1-1/+4
2022-10-11Update server.zigGravatar Jarred Sumner 1-1/+1
2022-10-11Work around Zig C ABI bug on LinuxGravatar Jarred Sumner 3-12/+8
2022-10-11Use poll() to check if writableGravatar Jarred Sumner 1-4/+14
2022-10-11Add test that reads & writes stdin/stderrGravatar Jarred Sumner 3-8/+32
2022-10-11Update bun-write.test.jsGravatar Jarred Sumner 1-4/+3
2022-10-11Implement `fs.rm` cross-platformlyGravatar Jarred Sumner 2-3/+139
2022-10-10Automatically close stdout/stderr on subprocess exit if possibleGravatar Jarred Sumner 2-5/+21
2022-10-10Change behavior of Bun.writeGravatar Jarred Sumner 1-3/+3
2022-10-10Keep the process aliveGravatar Jarred Sumner 7-86/+62
2022-10-10Use write() and read() since not every file type supports positionalGravatar Jarred Sumner 1-7/+6
2022-10-10Handle EAGAIN in Bun.write() for short inputGravatar Jarred Sumner 1-4/+63
2022-10-10Ensure we set globalThis in the FileBlob / FileSinkGravatar Jarred Sumner 1-0/+2
2022-10-10Support cache with same name applied to multiple gettersGravatar Jarred Sumner 2-11/+26
2022-10-10Fix issue with exit callback in Bun.spawn() never firingGravatar Jarred Sumner 5-13/+115
2022-10-10Process inherits from EventEmitterGravatar Jarred Sumner 2-14/+12