Changeset 241104 in webkit for trunk/Source/JavaScriptCore/builtins/BuiltinNames.cpp
- Timestamp:
- Feb 6, 2019, 2:58:00 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/builtins/BuiltinNames.cpp
r240255 r241104 39 39 #undef INITIALIZE_BUILTIN_STATIC_SYMBOLS 40 40 41 #define INITIALIZE_BUILTIN_PRIVATE_NAMES(name) SymbolImpl::StaticSymbolImpl name##PrivateName { "PrivateSymbol."#name, SymbolImpl::s_flagIsPrivate };41 #define INITIALIZE_BUILTIN_PRIVATE_NAMES(name) SymbolImpl::StaticSymbolImpl name##PrivateName { #name, SymbolImpl::s_flagIsPrivate }; 42 42 JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_PRIVATE_NAMES) 43 43 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_PRIVATE_NAMES) 44 44 #undef INITIALIZE_BUILTIN_PRIVATE_NAMES 45 45 46 SymbolImpl::StaticSymbolImpl dollarVMPrivateName { " PrivateSymbol.$vm", SymbolImpl::s_flagIsPrivate };47 SymbolImpl::StaticSymbolImpl polyProtoPrivateName { "P rivateSymbol.PolyProto", SymbolImpl::s_flagIsPrivate };46 SymbolImpl::StaticSymbolImpl dollarVMPrivateName { "$vm", SymbolImpl::s_flagIsPrivate }; 47 SymbolImpl::StaticSymbolImpl polyProtoPrivateName { "PolyProto", SymbolImpl::s_flagIsPrivate }; 48 48 49 49 } // namespace Symbols 50 51 #define INITIALIZE_BUILTIN_NAMES_IN_JSC(name) , m_##name(JSC::Identifier::fromString(vm, #name)) 52 #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 "Symbol")) 53 54 #define INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY(name) \ 55 do { \ 56 SymbolImpl* symbol = &static_cast<SymbolImpl&>(JSC::Symbols::name##PrivateName); \ 57 checkPublicToPrivateMapConsistency(m_##name.impl(), symbol); \ 58 m_publicToPrivateMap.add(m_##name.impl(), symbol); \ 59 } while (0); 60 61 // We commandeer the publicToPrivateMap to allow us to convert private symbol names into the appropriate symbol. 62 // e.g. @iteratorSymbol points to Symbol.iterator in this map rather than to a an actual private name. 63 // FIXME: This is a weird hack and we shouldn't need to do this. 64 #define INITIALIZE_SYMBOL_PUBLIC_TO_PRIVATE_ENTRY(name) \ 65 do { \ 66 SymbolImpl* symbol = static_cast<SymbolImpl*>(m_##name##Symbol.impl()); \ 67 checkPublicToPrivateMapConsistency(m_##name##SymbolPrivateIdentifier.impl(), symbol); \ 68 m_publicToPrivateMap.add(m_##name##SymbolPrivateIdentifier.impl(), symbol); \ 69 } while (0); 50 70 51 71 // We treat the dollarVM name as a special case below for $vm (because CommonIdentifiers does not … … 55 75 JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC) 56 76 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC) 57 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_SYMBOLS )77 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_SYMBOLS_IN_JSC) 58 78 , m_dollarVMName(Identifier::fromString(vm, "$vm")) 59 79 , m_dollarVMPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::dollarVMPrivateName))) 60 80 , m_polyProtoPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::polyProtoPrivateName))) 61 81 { 62 JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY)63 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY)64 82 JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY) 65 83 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY) 66 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_SYMBOL_PRIVATE_TO_PUBLIC_ENTRY)67 84 JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_SYMBOL_PUBLIC_TO_PRIVATE_ENTRY) 68 m_privateToPublicMap.add(m_dollarVMPrivateName.impl(), &m_dollarVMName); 69 m_publicToPrivateMap.add(m_dollarVMName.impl(), &m_dollarVMPrivateName); 85 m_publicToPrivateMap.add(m_dollarVMName.impl(), static_cast<SymbolImpl*>(m_dollarVMPrivateName.impl())); 70 86 } 87 88 #undef INITIALIZE_BUILTIN_NAMES_IN_JSC 89 #undef INITIALIZE_BUILTIN_SYMBOLS_IN_JSC 90 #undef INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY 91 #undef INITIALIZE_SYMBOL_PUBLIC_TO_PRIVATE_ENTRY 71 92 72 93 } // namespace JSC
Note:
See TracChangeset
for help on using the changeset viewer.