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

Reply via email to