Changeset 287301 in webkit for trunk/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
- Timestamp:
- Dec 21, 2021, 12:33:18 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
r286424 r287301 280 280 { 281 281 ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value); 282 if (armImm.isValid()) 282 if (armImm.isValid()) { 283 283 m_assembler.ARM_and(dest, src, armImm); 284 else { 285 move(imm, dataTempRegister); 286 m_assembler.ARM_and(dest, src, dataTempRegister); 287 } 284 return; 285 } 286 287 armImm = ARMThumbImmediate::makeEncodedImm(~imm.m_value); 288 if (armImm.isValid()) { 289 m_assembler.bic(dest, src, armImm); 290 return; 291 } 292 293 move(imm, dataTempRegister); 294 m_assembler.ARM_and(dest, src, dataTempRegister); 288 295 } 289 296 … … 1025 1032 } 1026 1033 storePair32(src1, src2, Address(dataTempRegister, address.offset)); 1034 } 1035 1036 void storePair32(RegisterID src1, RegisterID src2, const void* address) 1037 { 1038 move(TrustedImmPtr(address), addressTempRegister); 1039 storePair32(src1, src2, addressTempRegister); 1027 1040 } 1028 1041 … … 1588 1601 int32_t imm = right.m_value; 1589 1602 ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm); 1590 if (armImm.isValid()) 1603 if (armImm.isValid()) { 1591 1604 m_assembler.cmp(left, armImm); 1592 else if ((armImm = ARMThumbImmediate::makeEncodedImm(-imm)).isValid()) 1605 return; 1606 } 1607 1608 armImm = ARMThumbImmediate::makeEncodedImm(-imm); 1609 if (armImm.isValid()) { 1610 if (!(left & 8) && armImm.isUInt3() && (left != addressTempRegister)) { 1611 // This is common enough to warrant a special case to save 2 bytes 1612 m_assembler.add_S(addressTempRegister, left, armImm); 1613 return; 1614 } 1593 1615 m_assembler.cmn(left, armImm); 1594 else { 1595 RegisterID scratch = bestTempRegister(left); 1596 move(TrustedImm32(imm), scratch); 1597 m_assembler.cmp(left, scratch); 1598 } 1616 return; 1617 } 1618 1619 RegisterID scratch = bestTempRegister(left); 1620 move(TrustedImm32(imm), scratch); 1621 m_assembler.cmp(left, scratch); 1599 1622 } 1600 1623 … … 1680 1703 { 1681 1704 if (left == ARMRegisters::sp) { 1682 move(left, dataTempRegister);1683 m_assembler.cmp( dataTempRegister, right);1705 move(left, addressTempRegister); 1706 m_assembler.cmp(addressTempRegister, right); 1684 1707 } else if (right == ARMRegisters::sp) { 1685 move(right, dataTempRegister);1686 m_assembler.cmp(left, dataTempRegister);1708 move(right, addressTempRegister); 1709 m_assembler.cmp(left, addressTempRegister); 1687 1710 } else 1688 1711 m_assembler.cmp(left, right);
Note:
See TracChangeset
for help on using the changeset viewer.