Title: [112504] trunk/Source/_javascript_Core
- Revision
- 112504
- Author
- [email protected]
- Date
- 2012-03-28 23:52:09 -0700 (Wed, 28 Mar 2012)
Log Message
DFG object equality speculations should be simplified
https://bugs.webkit.org/show_bug.cgi?id=82557
Reviewed by Gavin Barraclough.
* dfg/DFGNode.h:
(JSC::DFG::Node::shouldSpeculateFinalObject):
(JSC::DFG::Node::shouldSpeculateArray):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (112503 => 112504)
--- trunk/Source/_javascript_Core/ChangeLog 2012-03-29 06:00:23 UTC (rev 112503)
+++ trunk/Source/_javascript_Core/ChangeLog 2012-03-29 06:52:09 UTC (rev 112504)
@@ -1,3 +1,14 @@
+2012-03-28 Filip Pizlo <[email protected]>
+
+ DFG object equality speculations should be simplified
+ https://bugs.webkit.org/show_bug.cgi?id=82557
+
+ Reviewed by Gavin Barraclough.
+
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::shouldSpeculateFinalObject):
+ (JSC::DFG::Node::shouldSpeculateArray):
+
2012-03-28 David Kilzer <[email protected]>
minidom configurations should be based on ToolExecutable.xcconfig
Modified: trunk/Source/_javascript_Core/dfg/DFGNode.h (112503 => 112504)
--- trunk/Source/_javascript_Core/dfg/DFGNode.h 2012-03-29 06:00:23 UTC (rev 112503)
+++ trunk/Source/_javascript_Core/dfg/DFGNode.h 2012-03-29 06:52:09 UTC (rev 112504)
@@ -788,14 +788,12 @@
static bool shouldSpeculateFinalObject(Node& op1, Node& op2)
{
- return (op1.shouldSpeculateFinalObject() && op2.shouldSpeculateObject())
- || (op1.shouldSpeculateObject() && op2.shouldSpeculateFinalObject());
+ return op1.shouldSpeculateFinalObject() && op2.shouldSpeculateFinalObject();
}
static bool shouldSpeculateArray(Node& op1, Node& op2)
{
- return (op1.shouldSpeculateArray() && op2.shouldSpeculateObject())
- || (op1.shouldSpeculateObject() && op2.shouldSpeculateArray());
+ return op1.shouldSpeculateArray() && op2.shouldSpeculateArray();
}
bool canSpeculateInteger()
Modified: trunk/Source/_javascript_Core/dfg/DFGOperations.cpp (112503 => 112504)
--- trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2012-03-29 06:00:23 UTC (rev 112503)
+++ trunk/Source/_javascript_Core/dfg/DFGOperations.cpp 2012-03-29 06:52:09 UTC (rev 112504)
@@ -364,6 +364,9 @@
JSGlobalData* globalData = &exec->globalData();
NativeCallFrameTracer tracer(globalData, exec);
+ if (false)
+ dataLog("getById(%s, %s)\n", JSValue::decode(base).description(), propertyName->ascii().data());
+
JSValue baseValue = JSValue::decode(base);
PropertySlot slot(baseValue);
return JSValue::encode(baseValue.get(exec, *propertyName, slot));
@@ -743,11 +746,28 @@
return jsLessEq<false>(exec, JSValue::decode(encodedOp2), JSValue::decode(encodedOp1));
}
+static const char *classNameSpace(JSValue value)
+{
+ return value.isCell() ? " " : "";
+}
+
+static const char* className(JSValue value)
+{
+ if (!value.isCell())
+ return "";
+ return value.asCell()->classInfo()->className;
+}
+
size_t DFG_OPERATION operationCompareEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2)
{
JSGlobalData* globalData = &exec->globalData();
NativeCallFrameTracer tracer(globalData, exec);
+ if (false) {
+ dataLog("compareEq(%s%s%s, ", JSValue::decode(encodedOp1).description(), classNameSpace(JSValue::decode(encodedOp1)), className(JSValue::decode(encodedOp1)));
+ dataLog("%s%s%s)\n", JSValue::decode(encodedOp2).description(), classNameSpace(JSValue::decode(encodedOp2)), className(JSValue::decode(encodedOp2)));
+ }
+
return JSValue::equalSlowCaseInline(exec, JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes