Ignore:
Timestamp:
Mar 30, 2016, 1:47:33 PM (9 years ago)
Author:
[email protected]
Message:

Make the $vm debugging tools available to builtins as @$vm.
https://bugs.webkit.org/show_bug.cgi?id=156012

Reviewed by Saam Barati.

We also need some debugging tools for builtin development. The $vm object will
be made available to builtins as @$vm, which gives us, amongst many goodies,
@$vm.print() (which prints the toString() values of its args) and
@$vm.printValue() (which dataLogs its arg as a JSValue). @$vm will only be
available if we run with JSC_useDollarVM=true.

Also changed @$vm.print() to not automatically insert a space between the
printing of each of its args. This makes it clearer as to what will be printed
i.e. it will only print what is passed to it.

  • builtins/BuiltinNames.h:

(JSC::BuiltinNames::BuiltinNames):
(JSC::BuiltinNames::dollarVMPublicName):
(JSC::BuiltinNames::dollarVMPrivateName):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • tools/JSDollarVMPrototype.cpp:

(JSC::functionPrint):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/builtins/BuiltinNames.h

    r196498 r198855  
    4040   
    4141public:
     42    // We treat the dollarVM name as a special case below for $vm (because CommonIdentifiers does not
     43    // yet support the $ character).
     44
    4245    BuiltinNames(VM* vm, CommonIdentifiers* commonIdentifiers)
    4346        : m_emptyIdentifier(commonIdentifiers->emptyIdentifier)
     
    4548        JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_NAMES)
    4649        JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_SYMBOLS)
     50        , m_dollarVMName(Identifier::fromString(vm, "$vm"))
     51        , m_dollarVMPrivateName(Identifier::fromUid(PrivateName(PrivateName::Description, ASCIILiteral("PrivateSymbol.$vm"))))
    4752    {
    4853        JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY)
     
    5055        JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY)
    5156        JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY)
     57        m_privateToPublicMap.add(m_dollarVMPrivateName.impl(), &m_dollarVMName);
     58        m_publicToPrivateMap.add(m_dollarVMName.impl(), &m_dollarVMPrivateName);
    5259    }
    5360
     
    6370    JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR)
    6471    JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(DECLARE_BUILTIN_SYMBOL_ACCESSOR)
     72    const JSC::Identifier& dollarVMPublicName() const { return m_dollarVMName; }
     73    const JSC::Identifier& dollarVMPrivateName() const { return m_dollarVMPrivateName; }
    6574
    6675private:
     
    6978    JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_NAMES)
    7079    JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(DECLARE_BUILTIN_SYMBOLS)
     80    const JSC::Identifier m_dollarVMName;
     81    const JSC::Identifier m_dollarVMPrivateName;
    7182    typedef HashMap<RefPtr<UniquedStringImpl>, const Identifier*, IdentifierRepHash> BuiltinNamesMap;
    7283    BuiltinNamesMap m_publicToPrivateMap;
Note: See TracChangeset for help on using the changeset viewer.