Changeset 154207 in webkit for trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
- Timestamp:
- Aug 16, 2013, 4:34:21 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
r154158 r154207 1139 1139 Jump branchTest32(ResultCondition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) 1140 1140 { 1141 // if we are only interested in the low seven bits, this can be tested with a testb1142 1141 if (mask.m_value == -1) 1143 1142 m_assembler.testl_rr(reg, reg); 1143 else if (!(mask.m_value & ~0xff)) 1144 m_assembler.testb_i8r(mask.m_value, reg); 1144 1145 else 1145 1146 m_assembler.testl_i32r(mask.m_value, reg); … … 1149 1150 Jump branchTest32(ResultCondition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) 1150 1151 { 1151 if (mask.m_value == -1) 1152 m_assembler.cmpl_im(0, address.offset, address.base); 1153 else 1154 m_assembler.testl_i32m(mask.m_value, address.offset, address.base); 1152 generateTest32(address, mask); 1155 1153 return Jump(m_assembler.jCC(x86Condition(cond))); 1156 1154 } … … 1420 1418 void test32(ResultCondition cond, Address address, TrustedImm32 mask, RegisterID dest) 1421 1419 { 1422 if (mask.m_value == -1) 1423 m_assembler.cmpl_im(0, address.offset, address.base); 1424 else 1425 m_assembler.testl_i32m(mask.m_value, address.offset, address.base); 1420 generateTest32(address, mask); 1426 1421 set32(x86Condition(cond), dest); 1427 1422 } … … 1504 1499 // x86_64, and clients & subclasses of MacroAssembler should be using 'supportsFloatingPoint()'. 1505 1500 friend class MacroAssemblerX86; 1501 1502 ALWAYS_INLINE void generateTest32(Address address, TrustedImm32 mask = TrustedImm32(-1)) 1503 { 1504 if (mask.m_value == -1) 1505 m_assembler.cmpl_im(0, address.offset, address.base); 1506 else if (!(mask.m_value & ~0xff)) 1507 m_assembler.testb_im(mask.m_value, address.offset, address.base); 1508 else if (!(mask.m_value & ~0xff00)) 1509 m_assembler.testb_im(mask.m_value >> 8, address.offset + 1, address.base); 1510 else if (!(mask.m_value & ~0xff0000)) 1511 m_assembler.testb_im(mask.m_value >> 16, address.offset + 2, address.base); 1512 else if (!(mask.m_value & ~0xff000000)) 1513 m_assembler.testb_im(mask.m_value >> 24, address.offset + 3, address.base); 1514 else 1515 m_assembler.testl_i32m(mask.m_value, address.offset, address.base); 1516 } 1506 1517 1507 1518 #if CPU(X86)
Note:
See TracChangeset
for help on using the changeset viewer.