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