Skip to content
2 changes: 2 additions & 0 deletions Source/JavaScriptCore/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1421,6 +1421,8 @@ set(JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS
runtime/JSCJSValueInlines.h
runtime/JSCJSValuePropertyInlines.h
runtime/JSCJSValueStructure.h
runtime/JSCPrimordials.h
runtime/JSCPrimordialsTable.h
runtime/JSCallee.h
runtime/JSCalleeInlines.h
runtime/JSCast.h
Expand Down
1 change: 1 addition & 0 deletions Source/JavaScriptCore/Sources.txt
Original file line number Diff line number Diff line change
Expand Up @@ -912,6 +912,7 @@ runtime/JSBoundFunction.cpp
runtime/JSCBytecodeCacheVersion.cpp
runtime/JSCConfig.cpp
runtime/JSCJSValue.cpp
runtime/JSCPrimordials.cpp
runtime/JSCPtrTag.cpp
runtime/JSCallee.cpp
runtime/JSCell.cpp
Expand Down
19 changes: 19 additions & 0 deletions Source/JavaScriptCore/builtins/BuiltinNames.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_STATIC_
#define INITIALIZE_BUILTIN_PRIVATE_NAMES(name) SymbolImpl::StaticSymbolImpl name##PrivateName { #name, SymbolImpl::s_flagIsPrivate };
JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_PRIVATE_NAMES)
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_PRIVATE_NAMES)
#if USE(BUN_JSC_ADDITIONS)
#define INITIALIZE_PRIMORDIAL_PRIVATE_NAMES(name, key, kind) INITIALIZE_BUILTIN_PRIVATE_NAMES(name)
JSC_FOREACH_PRIMORDIAL_NAME(INITIALIZE_PRIMORDIAL_PRIVATE_NAMES)
#undef INITIALIZE_PRIMORDIAL_PRIVATE_NAMES
#endif
#undef INITIALIZE_BUILTIN_PRIVATE_NAMES

SymbolImpl::StaticSymbolImpl dollarVMPrivateName { "$vm", SymbolImpl::s_flagIsPrivate };
Expand All @@ -48,6 +53,10 @@ SymbolImpl::StaticSymbolImpl polyProtoPrivateName { "PolyProto", SymbolImpl::s_f
} // namespace Symbols

#define INITIALIZE_BUILTIN_NAMES_IN_JSC(name) , m_##name(JSC::Identifier::fromString(vm, #name ""_s))
#if USE(BUN_JSC_ADDITIONS)
#define INITIALIZE_PRIMORDIAL_NAMES_IN_JSC(name, key, kind) INITIALIZE_BUILTIN_NAMES_IN_JSC(name)
#define INITIALIZE_PRIMORDIAL_PUBLIC_TO_PRIVATE_ENTRY(name, key, kind) INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY(name)
#endif
#define INITIALIZE_BUILTIN_SYMBOLS_IN_JSC(name) \
, m_##name##Symbol(JSC::Identifier::fromUid(vm, &static_cast<SymbolImpl&>(JSC::Symbols::name##Symbol))) \
, m_##name##SymbolPrivateIdentifier(JSC::Identifier::fromString(vm, #name ""_s))
Expand All @@ -73,13 +82,19 @@ BuiltinNames::BuiltinNames(VM& vm, CommonIdentifiers* commonIdentifiers)
: m_emptyIdentifier(commonIdentifiers->emptyIdentifier)
JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC)
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC)
#if USE(BUN_JSC_ADDITIONS)
JSC_FOREACH_PRIMORDIAL_NAME(INITIALIZE_PRIMORDIAL_NAMES_IN_JSC)
#endif
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_SYMBOLS_IN_JSC)
, m_dollarVMName(Identifier::fromString(vm, "$vm"_s))
, m_dollarVMPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::dollarVMPrivateName)))
, m_polyProtoPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::polyProtoPrivateName)))
{
JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY)
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY)
#if USE(BUN_JSC_ADDITIONS)
JSC_FOREACH_PRIMORDIAL_NAME(INITIALIZE_PRIMORDIAL_PUBLIC_TO_PRIVATE_ENTRY)
#endif
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_WELL_KNOWN_SYMBOL_PUBLIC_TO_PRIVATE_ENTRY)
m_privateNameSet.add(static_cast<SymbolImpl*>(m_dollarVMPrivateName.impl()));
}
Expand All @@ -88,6 +103,10 @@ BuiltinNames::BuiltinNames(VM& vm, CommonIdentifiers* commonIdentifiers)
#undef INITIALIZE_BUILTIN_SYMBOLS_IN_JSC
#undef INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY
#undef INITIALIZE_WELL_KNOWN_SYMBOL_PUBLIC_TO_PRIVATE_ENTRY
#if USE(BUN_JSC_ADDITIONS)
#undef INITIALIZE_PRIMORDIAL_NAMES_IN_JSC
#undef INITIALIZE_PRIMORDIAL_PUBLIC_TO_PRIVATE_ENTRY
#endif


using Latin1Buffer = WTF::HashTranslatorCharBuffer<Latin1Character>;
Expand Down
19 changes: 19 additions & 0 deletions Source/JavaScriptCore/builtins/BuiltinNames.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
#include <wtf/RobinHoodHashSet.h>
#include <wtf/TZoneMalloc.h>

#if USE(BUN_JSC_ADDITIONS)
#include "JSCPrimordials.h"
#endif

namespace JSC {

#define DECLARE_BUILTIN_NAMES_IN_JSC(name) const JSC::Identifier m_##name;
Expand Down Expand Up @@ -239,6 +243,11 @@ JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(DECLARE_BUILTIN_STATIC_SYM
#define DECLARE_BUILTIN_PRIVATE_NAMES(name) extern JS_EXPORT_PRIVATE SymbolImpl::StaticSymbolImpl name##PrivateName;
JSC_FOREACH_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_PRIVATE_NAMES)
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_PRIVATE_NAMES)
#if USE(BUN_JSC_ADDITIONS)
#define DECLARE_PRIMORDIAL_PRIVATE_NAMES(name, key, kind) DECLARE_BUILTIN_PRIVATE_NAMES(name)
JSC_FOREACH_PRIMORDIAL_NAME(DECLARE_PRIMORDIAL_PRIVATE_NAMES)
#undef DECLARE_PRIMORDIAL_PRIVATE_NAMES
#endif
#undef DECLARE_BUILTIN_PRIVATE_NAMES

extern JS_EXPORT_PRIVATE SymbolImpl::StaticSymbolImpl dollarVMPrivateName;
Expand Down Expand Up @@ -269,6 +278,11 @@ class BuiltinNames {

JSC_FOREACH_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR_IN_JSC)
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR_IN_JSC)
#if USE(BUN_JSC_ADDITIONS)
#define DECLARE_PRIMORDIAL_IDENTIFIER_ACCESSOR(name, key, kind) DECLARE_BUILTIN_IDENTIFIER_ACCESSOR_IN_JSC(name)
JSC_FOREACH_PRIMORDIAL_NAME(DECLARE_PRIMORDIAL_IDENTIFIER_ACCESSOR)
#undef DECLARE_PRIMORDIAL_IDENTIFIER_ACCESSOR
#endif
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(DECLARE_BUILTIN_SYMBOL_ACCESSOR)
const JSC::Identifier& dollarVMPublicName() const { return m_dollarVMName; }
const JSC::Identifier& dollarVMPrivateName() const { return m_dollarVMPrivateName; }
Expand All @@ -280,6 +294,11 @@ class BuiltinNames {
Identifier m_emptyIdentifier;
JSC_FOREACH_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES_IN_JSC)
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_NAMES_IN_JSC)
#if USE(BUN_JSC_ADDITIONS)
#define DECLARE_PRIMORDIAL_NAMES(name, key, kind) DECLARE_BUILTIN_NAMES_IN_JSC(name)
JSC_FOREACH_PRIMORDIAL_NAME(DECLARE_PRIMORDIAL_NAMES)
#undef DECLARE_PRIMORDIAL_NAMES
#endif
JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(DECLARE_BUILTIN_SYMBOLS_IN_JSC)
const JSC::Identifier m_dollarVMName;
const JSC::Identifier m_dollarVMPrivateName;
Expand Down
5 changes: 5 additions & 0 deletions Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry(VM& vm)
JSC_COMMON_BYTECODE_INTRINSIC_FUNCTIONS_EACH_NAME(INITIALIZE_BYTECODE_INTRINSIC_NAMES_TO_SET)
JSC_COMMON_BYTECODE_INTRINSIC_CONSTANTS_EACH_NAME(INITIALIZE_BYTECODE_INTRINSIC_NAMES_TO_SET)
JSC_FOREACH_LINK_TIME_CONSTANTS(INITIALIZE_BYTECODE_INTRINSIC_NAMES_TO_SET_FOR_LINK_TIME_CONSTANT)
#if USE(BUN_JSC_ADDITIONS)
#define INITIALIZE_PRIMORDIAL_BYTECODE_INTRINSIC_NAMES(name, key, kind) INITIALIZE_BYTECODE_INTRINSIC_NAMES_TO_SET_FOR_LINK_TIME_CONSTANT(name, nullptr)
JSC_FOREACH_PRIMORDIAL_NAME(INITIALIZE_PRIMORDIAL_BYTECODE_INTRINSIC_NAMES)
#undef INITIALIZE_PRIMORDIAL_BYTECODE_INTRINSIC_NAMES
#endif

m_undefined.set(m_vm, jsUndefined());
m_Infinity.set(m_vm, jsDoubleNumber(std::numeric_limits<double>::infinity()));
Expand Down
5 changes: 5 additions & 0 deletions Source/JavaScriptCore/bytecode/LinkTimeConstant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ void printInternal(PrintStream& out, JSC::LinkTimeConstant constant)
{
switch (constant) {
JSC_FOREACH_LINK_TIME_CONSTANTS(PRINT_LINK_TIME_CONSTANT)
#if USE(BUN_JSC_ADDITIONS)
#define PRINT_PRIMORDIAL_LINK_TIME_CONSTANT(name, key, kind) PRINT_LINK_TIME_CONSTANT(name, nullptr)
JSC_FOREACH_PRIMORDIAL_NAME(PRINT_PRIMORDIAL_LINK_TIME_CONSTANT)
#undef PRINT_PRIMORDIAL_LINK_TIME_CONSTANT
#endif
}
}

Expand Down
15 changes: 15 additions & 0 deletions Source/JavaScriptCore/bytecode/LinkTimeConstant.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
#include "JSCBuiltins.h"
#include <cstdint>

#if USE(BUN_JSC_ADDITIONS)
#include "JSCPrimordials.h"
#endif

namespace JSC {

class CodeBlock;
Expand Down Expand Up @@ -162,10 +166,21 @@ class JSGlobalObject;
#define DECLARE_LINK_TIME_CONSTANT(name, code) name,
enum class LinkTimeConstant : int32_t {
JSC_FOREACH_LINK_TIME_CONSTANTS(DECLARE_LINK_TIME_CONSTANT)
#if USE(BUN_JSC_ADDITIONS)
#define DECLARE_PRIMORDIAL_LINK_TIME_CONSTANT(name, key, kind) name,
JSC_FOREACH_PRIMORDIAL_NAME(DECLARE_PRIMORDIAL_LINK_TIME_CONSTANT)
#undef DECLARE_PRIMORDIAL_LINK_TIME_CONSTANT
#endif
};
#undef DECLARE_LINK_TIME_CONSTANT
#define COUNT_LINK_TIME_CONSTANT(name, code) 1 +
#if USE(BUN_JSC_ADDITIONS)
#define COUNT_PRIMORDIAL_LINK_TIME_CONSTANT(name, key, kind) 1 +
static constexpr unsigned numberOfLinkTimeConstants = JSC_FOREACH_LINK_TIME_CONSTANTS(COUNT_LINK_TIME_CONSTANT) JSC_FOREACH_PRIMORDIAL_NAME(COUNT_PRIMORDIAL_LINK_TIME_CONSTANT) 0;
#undef COUNT_PRIMORDIAL_LINK_TIME_CONSTANT
#else
static constexpr unsigned numberOfLinkTimeConstants = JSC_FOREACH_LINK_TIME_CONSTANTS(COUNT_LINK_TIME_CONSTANT) 0;
#endif
#undef COUNT_LINK_TIME_CONSTANT
Comment thread
coderabbitai[bot] marked this conversation as resolved.

} // namespace JSC
Expand Down
Loading
Loading