Title: [143057] trunk/Source/_javascript_Core
Revision
143057
Author
fpi...@apple.com
Date
2013-02-15 14:57:55 -0800 (Fri, 15 Feb 2013)

Log Message

DFG SpeculativeJIT64 should be more precise about when it's dealing with a cell (even though it probably doesn't matter)
https://bugs.webkit.org/show_bug.cgi?id=109625

Reviewed by Mark Hahnenberg.

* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compile):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (143056 => 143057)


--- trunk/Source/_javascript_Core/ChangeLog	2013-02-15 22:49:58 UTC (rev 143056)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-02-15 22:57:55 UTC (rev 143057)
@@ -1,3 +1,16 @@
+2013-02-15  Filip Pizlo  <fpi...@apple.com>
+
+        DFG SpeculativeJIT64 should be more precise about when it's dealing with a cell (even though it probably doesn't matter)
+        https://bugs.webkit.org/show_bug.cgi?id=109625
+
+        Reviewed by Mark Hahnenberg.
+
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::compileObjectEquality):
+        (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
+        (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
+        (JSC::DFG::SpeculativeJIT::compile):
+
 2013-02-15  Geoffrey Garen  <gga...@apple.com>
 
         Merged the global function cache into the source code cache

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (143056 => 143057)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2013-02-15 22:49:58 UTC (rev 143056)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2013-02-15 22:57:55 UTC (rev 143057)
@@ -1547,7 +1547,7 @@
         m_jit.graph().globalObjectFor(node->codeOrigin)->masqueradesAsUndefinedWatchpoint()->add(speculationWatchpoint());
         if (m_state.forNode(node->child1()).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op1GPR), node->child1(),
+                BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
                 m_jit.branchPtr(
                     MacroAssembler::Equal, 
                     MacroAssembler::Address(op1GPR, JSCell::structureOffset()), 
@@ -1555,7 +1555,7 @@
         }
         if (m_state.forNode(node->child2()).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op2GPR), node->child2(),
+                BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
                 m_jit.branchPtr(
                     MacroAssembler::Equal, 
                     MacroAssembler::Address(op2GPR, JSCell::structureOffset()), 
@@ -1568,13 +1568,13 @@
         m_jit.loadPtr(MacroAssembler::Address(op1GPR, JSCell::structureOffset()), structureGPR);
         if (m_state.forNode(node->child1()).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op1GPR), node->child1(),
+                BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
                 m_jit.branchPtr(
                     MacroAssembler::Equal, 
                     structureGPR, 
                     MacroAssembler::TrustedImmPtr(m_jit.globalData()->stringStructure.get())));
         }
-        speculationCheck(BadType, JSValueRegs(op1GPR), node->child1(),
+        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
             m_jit.branchTest8(
                 MacroAssembler::NonZero, 
                 MacroAssembler::Address(structureGPR, Structure::typeInfoFlagsOffset()), 
@@ -1583,13 +1583,13 @@
         m_jit.loadPtr(MacroAssembler::Address(op2GPR, JSCell::structureOffset()), structureGPR);
         if (m_state.forNode(node->child2()).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op2GPR), node->child2(),
+                BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
                 m_jit.branchPtr(
                     MacroAssembler::Equal, 
                     structureGPR, 
                     MacroAssembler::TrustedImmPtr(m_jit.globalData()->stringStructure.get())));
         }
-        speculationCheck(BadType, JSValueRegs(op2GPR), node->child2(),
+        speculationCheck(BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
             m_jit.branchTest8(
                 MacroAssembler::NonZero, 
                 MacroAssembler::Address(structureGPR, Structure::typeInfoFlagsOffset()), 
@@ -1620,7 +1620,7 @@
         m_jit.graph().globalObjectFor(m_currentNode->codeOrigin)->masqueradesAsUndefinedWatchpoint()->add(speculationWatchpoint());
         if (m_state.forNode(leftChild).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op1GPR), leftChild, 
+                BadType, JSValueSource::unboxedCell(op1GPR), leftChild, 
                 m_jit.branchPtr(
                     MacroAssembler::Equal, 
                     MacroAssembler::Address(op1GPR, JSCell::structureOffset()), 
@@ -1633,13 +1633,13 @@
         m_jit.loadPtr(MacroAssembler::Address(op1GPR, JSCell::structureOffset()), structureGPR);
         if (m_state.forNode(leftChild).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op1GPR), leftChild, 
+                BadType, JSValueSource::unboxedCell(op1GPR), leftChild, 
                 m_jit.branchPtr(
                     MacroAssembler::Equal,
                     structureGPR,
                     MacroAssembler::TrustedImmPtr(m_jit.globalData()->stringStructure.get())));
         }
-        speculationCheck(BadType, JSValueRegs(op1GPR), leftChild,
+        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), leftChild,
             m_jit.branchTest8(
                 MacroAssembler::NonZero, 
                 MacroAssembler::Address(structureGPR, Structure::typeInfoFlagsOffset()), 
@@ -1730,7 +1730,7 @@
         m_jit.graph().globalObjectFor(m_currentNode->codeOrigin)->masqueradesAsUndefinedWatchpoint()->add(speculationWatchpoint());
         if (m_state.forNode(leftChild).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op1GPR), leftChild, 
+                BadType, JSValueSource::unboxedCell(op1GPR), leftChild, 
                 m_jit.branchPtr(
                     MacroAssembler::Equal, 
                     MacroAssembler::Address(op1GPR, JSCell::structureOffset()), 
@@ -1743,13 +1743,13 @@
         m_jit.loadPtr(MacroAssembler::Address(op1GPR, JSCell::structureOffset()), structureGPR);
         if (m_state.forNode(leftChild).m_type & ~SpecObject) {
             speculationCheck(
-                BadType, JSValueRegs(op1GPR), leftChild, 
+                BadType, JSValueSource::unboxedCell(op1GPR), leftChild, 
                 m_jit.branchPtr(
                     MacroAssembler::Equal, 
                     structureGPR, 
                     MacroAssembler::TrustedImmPtr(m_jit.globalData()->stringStructure.get())));
         }
-        speculationCheck(BadType, JSValueRegs(op1GPR), leftChild, 
+        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), leftChild, 
             m_jit.branchTest8(
                 MacroAssembler::NonZero, 
                 MacroAssembler::Address(structureGPR, Structure::typeInfoFlagsOffset()), 
@@ -3865,7 +3865,7 @@
             GPRReg resultGPR = result.gpr();
             
             if (!isObjectSpeculation(m_state.forNode(node->child1()).m_type))
-                speculationCheck(BadType, JSValueRegs(thisValueGPR), node->child1(), m_jit.branchPtr(JITCompiler::Equal, JITCompiler::Address(thisValueGPR, JSCell::structureOffset()), JITCompiler::TrustedImmPtr(m_jit.globalData()->stringStructure.get())));
+                speculationCheck(BadType, JSValueSource::unboxedCell(thisValueGPR), node->child1(), m_jit.branchPtr(JITCompiler::Equal, JITCompiler::Address(thisValueGPR, JSCell::structureOffset()), JITCompiler::TrustedImmPtr(m_jit.globalData()->stringStructure.get())));
             
             m_jit.move(thisValueGPR, resultGPR);
             
@@ -4131,14 +4131,14 @@
         
     case CheckFunction: {
         SpeculateCellOperand function(this, node->child1());
-        speculationCheck(BadFunction, JSValueRegs(function.gpr()), node->child1(), m_jit.branchWeakPtr(JITCompiler::NotEqual, function.gpr(), node->function()));
+        speculationCheck(BadFunction, JSValueSource::unboxedCell(function.gpr()), node->child1(), m_jit.branchWeakPtr(JITCompiler::NotEqual, function.gpr(), node->function()));
         noResult(node);
         break;
     }
         
     case CheckExecutable: {
         SpeculateCellOperand function(this, node->child1());
-        speculationCheck(BadExecutable, JSValueRegs(function.gpr()), node->child1(), m_jit.branchWeakPtr(JITCompiler::NotEqual, JITCompiler::Address(function.gpr(), JSFunction::offsetOfExecutable()), node->executable()));
+        speculationCheck(BadExecutable, JSValueSource::unboxedCell(function.gpr()), node->child1(), m_jit.branchWeakPtr(JITCompiler::NotEqual, JITCompiler::Address(function.gpr(), JSFunction::offsetOfExecutable()), node->executable()));
         noResult(node);
         break;
     }
@@ -4165,7 +4165,7 @@
         
         if (node->structureSet().size() == 1) {
             speculationCheck(
-                exitKind, JSValueRegs(base.gpr()), 0,
+                exitKind, JSValueSource::unboxedCell(base.gpr()), 0,
                 m_jit.branchWeakPtr(
                     JITCompiler::NotEqual,
                     JITCompiler::Address(base.gpr(), JSCell::structureOffset()),
@@ -4182,7 +4182,7 @@
                 done.append(m_jit.branchWeakPtr(JITCompiler::Equal, structure.gpr(), node->structureSet()[i]));
             
             speculationCheck(
-                exitKind, JSValueRegs(base.gpr()), 0,
+                exitKind, JSValueSource::unboxedCell(base.gpr()), 0,
                 m_jit.branchWeakPtr(
                     JITCompiler::NotEqual, structure.gpr(), node->structureSet().last()),
                 direction);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to