Title: [198855] trunk/Source/_javascript_Core
Revision
198855
Author
[email protected]
Date
2016-03-30 13:47:33 -0700 (Wed, 30 Mar 2016)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (198854 => 198855)


--- trunk/Source/_javascript_Core/ChangeLog	2016-03-30 20:39:08 UTC (rev 198854)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-03-30 20:47:33 UTC (rev 198855)
@@ -1,3 +1,29 @@
+2016-03-30  Mark Lam  <[email protected]>
+
+        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):
+
 2016-03-30  Keith Miller  <[email protected]>
 
         Unreviewed, buildfix.

Modified: trunk/Source/_javascript_Core/builtins/BuiltinNames.h (198854 => 198855)


--- trunk/Source/_javascript_Core/builtins/BuiltinNames.h	2016-03-30 20:39:08 UTC (rev 198854)
+++ trunk/Source/_javascript_Core/builtins/BuiltinNames.h	2016-03-30 20:47:33 UTC (rev 198855)
@@ -39,16 +39,23 @@
     WTF_MAKE_NONCOPYABLE(BuiltinNames); WTF_MAKE_FAST_ALLOCATED;
     
 public:
+    // We treat the dollarVM name as a special case below for $vm (because CommonIdentifiers does not
+    // yet support the $ character).
+
     BuiltinNames(VM* vm, CommonIdentifiers* commonIdentifiers)
         : m_emptyIdentifier(commonIdentifiers->emptyIdentifier)
         JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES)
         JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_NAMES)
         JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_SYMBOLS)
+        , m_dollarVMName(Identifier::fromString(vm, "$vm"))
+        , m_dollarVMPrivateName(Identifier::fromUid(PrivateName(PrivateName::Description, ASCIILiteral("PrivateSymbol.$vm"))))
     {
         JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY)
         JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY)
         JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY)
         JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY)
+        m_privateToPublicMap.add(m_dollarVMPrivateName.impl(), &m_dollarVMName);
+        m_publicToPrivateMap.add(m_dollarVMName.impl(), &m_dollarVMPrivateName);
     }
 
     bool isPrivateName(SymbolImpl& uid) const;
@@ -62,12 +69,16 @@
     JSC_FOREACH_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR)
     JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR)
     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; }
 
 private:
     Identifier m_emptyIdentifier;
     JSC_FOREACH_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES)
     JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_NAMES)
     JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(DECLARE_BUILTIN_SYMBOLS)
+    const JSC::Identifier m_dollarVMName;
+    const JSC::Identifier m_dollarVMPrivateName;
     typedef HashMap<RefPtr<UniquedStringImpl>, const Identifier*, IdentifierRepHash> BuiltinNamesMap;
     BuiltinNamesMap m_publicToPrivateMap;
     BuiltinNamesMap m_privateToPublicMap;

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp (198854 => 198855)


--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2016-03-30 20:39:08 UTC (rev 198854)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2016-03-30 20:47:33 UTC (rev 198855)
@@ -622,6 +622,12 @@
         JSDollarVMPrototype* dollarVMPrototype = JSDollarVMPrototype::create(vm, this, JSDollarVMPrototype::createStructure(vm, this, m_objectPrototype.get()));
         m_dollarVMStructure.set(vm, this, JSDollarVM::createStructure(vm, this, dollarVMPrototype));
         JSDollarVM* dollarVM = JSDollarVM::create(vm, m_dollarVMStructure.get());
+
+        GlobalPropertyInfo extraStaticGlobals[] = {
+            GlobalPropertyInfo(vm.propertyNames->builtinNames().dollarVMPrivateName(), dollarVM, DontEnum | DontDelete | ReadOnly),
+        };
+        addStaticGlobals(extraStaticGlobals, WTF_ARRAY_LENGTH(extraStaticGlobals));
+
         putDirectWithoutTransition(vm, Identifier::fromString(exec, "$vm"), dollarVM, DontEnum);
     }
 

Modified: trunk/Source/_javascript_Core/tools/JSDollarVMPrototype.cpp (198854 => 198855)


--- trunk/Source/_javascript_Core/tools/JSDollarVMPrototype.cpp	2016-03-30 20:39:08 UTC (rev 198854)
+++ trunk/Source/_javascript_Core/tools/JSDollarVMPrototype.cpp	2016-03-30 20:47:33 UTC (rev 198855)
@@ -301,8 +301,6 @@
 static EncodedJSValue JSC_HOST_CALL functionPrint(ExecState* exec)
 {
     for (unsigned i = 0; i < exec->argumentCount(); ++i) {
-        if (i)
-            dataLog(" ");
         String argStr = exec->uncheckedArgument(i).toString(exec)->value(exec);
         if (exec->hadException())
             return JSValue::encode(jsUndefined());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to