Changeset 157329 in webkit
- Timestamp:
- Oct 11, 2013 7:21:45 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r157327 r157329 1 2013-10-11 Nadav Rotem <nrotem@apple.com> 2 3 DFG: Add JIT support for LogicalNot(String/StringIdent) 4 https://bugs.webkit.org/show_bug.cgi?id=122627 5 6 Reviewed by Filip Pizlo. 7 8 * dfg/DFGAbstractInterpreterInlines.h: 9 (JSC::DFG::::executeEffects): 10 * dfg/DFGFixupPhase.cpp: 11 (JSC::DFG::FixupPhase::fixupNode): 12 * dfg/DFGSpeculativeJIT.cpp: 13 (JSC::DFG::SpeculativeJIT::compileStringZeroLength): 14 * dfg/DFGSpeculativeJIT.h: 15 * dfg/DFGSpeculativeJIT32_64.cpp: 16 (JSC::DFG::SpeculativeJIT::compileLogicalNot): 17 * dfg/DFGSpeculativeJIT64.cpp: 18 (JSC::DFG::SpeculativeJIT::compileLogicalNot): 19 1 20 2013-10-11 Filip Pizlo <fpizlo@apple.com> 2 21 -
trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
r157047 r157329 569 569 case NumberUse: 570 570 case UntypedUse: 571 case StringUse: 571 572 break; 572 573 case ObjectOrOtherUse: -
trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
r157059 r157329 293 293 else if (node->child1()->shouldSpeculateNumber()) 294 294 fixEdge<NumberUse>(node->child1()); 295 else if (node->child1()->shouldSpeculateString()) 296 fixEdge<StringUse>(node->child1()); 295 297 break; 296 298 } -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
r157313 r157329 4168 4168 } 4169 4169 4170 void SpeculativeJIT::compileStringZeroLength(Node* node) 4171 { 4172 SpeculateCellOperand str(this, node->child1()); 4173 GPRReg strGPR = str.gpr(); 4174 4175 // Make sure that this is a string. 4176 speculateString(node->child1(), strGPR); 4177 4178 GPRTemporary eq(this); 4179 GPRReg eqGPR = eq.gpr(); 4180 4181 // Fetch the length field from the string object. 4182 m_jit.test32(MacroAssembler::Zero, MacroAssembler::Address(strGPR, JSString::offsetOfLength()), MacroAssembler::TrustedImm32(-1), eqGPR); 4183 4184 #if USE(JSVALUE64) 4185 m_jit.or32(TrustedImm32(ValueFalse), eqGPR); 4186 jsValueResult(eqGPR, node, DataFormatJSBoolean); 4187 #else 4188 booleanResult(eqGPR, node); 4189 #endif 4190 } 4191 4170 4192 void SpeculativeJIT::compileGetIndexedPropertyStorage(Node* node) 4171 4193 { -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
r157173 r157329 1982 1982 void compileStringEquality(Node*); 1983 1983 void compileStringIdentEquality(Node*); 1984 void compileStringZeroLength(Node*); 1985 1984 1986 void emitObjectOrOtherBranch(Edge value, BasicBlock* taken, BasicBlock* notTaken); 1985 1987 void emitBranch(Node*); -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
r157266 r157329 1659 1659 return; 1660 1660 } 1661 1661 case StringUse: 1662 return compileStringZeroLength(node); 1663 1662 1664 default: 1663 1665 RELEASE_ASSERT_NOT_REACHED(); -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r157266 r157329 2041 2041 return; 2042 2042 } 2043 2043 case StringUse: 2044 return compileStringZeroLength(node); 2045 2044 2046 default: 2045 2047 RELEASE_ASSERT_NOT_REACHED();
Note: See TracChangeset
for help on using the changeset viewer.