Changeset 42481 in webkit for trunk/JavaScriptCore/assembler
- Timestamp:
- Apr 14, 2009, 12:06:41 AM (16 years ago)
- Location:
- trunk/JavaScriptCore/assembler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssemblerX86Common.h
r41089 r42481 328 328 void move(RegisterID src, RegisterID dest) 329 329 { 330 m_assembler.movl_rr(src, dest); 330 if (src != dest) 331 m_assembler.movl_rr(src, dest); 331 332 } 332 333 … … 338 339 void swap(RegisterID reg1, RegisterID reg2) 339 340 { 340 m_assembler.xchgl_rr(reg1, reg2); 341 if (reg1 != reg2) 342 m_assembler.xchgl_rr(reg1, reg2); 341 343 } 342 344 343 345 void signExtend32ToPtr(RegisterID src, RegisterID dest) 344 346 { 345 if (src != dest) 346 move(src, dest); 347 move(src, dest); 347 348 } 348 349 349 350 void zeroExtend32ToPtr(RegisterID src, RegisterID dest) 350 351 { 351 if (src != dest) 352 move(src, dest); 352 move(src, dest); 353 353 } 354 354 #endif … … 407 407 } 408 408 409 Jump branch32(Condition cond, BaseIndex left, Imm32 right) 410 { 411 m_assembler.cmpl_im(right.m_value, left.offset, left.base, left.index, left.scale); 412 return Jump(m_assembler.jCC(cond)); 413 } 414 409 415 Jump branch16(Condition cond, BaseIndex left, RegisterID right) 410 416 { 411 417 m_assembler.cmpw_rm(right, left.offset, left.base, left.index, left.scale); 418 return Jump(m_assembler.jCC(cond)); 419 } 420 421 Jump branch16(Condition cond, BaseIndex left, Imm32 right) 422 { 423 ASSERT(!(right.m_value & 0xFFFF0000)); 424 425 m_assembler.cmpw_im(right.m_value, left.offset, left.base, left.index, left.scale); 412 426 return Jump(m_assembler.jCC(cond)); 413 427 } -
trunk/JavaScriptCore/assembler/X86Assembler.h
r41544 r42481 727 727 } 728 728 729 void cmpw_im(int imm, int offset, RegisterID base, RegisterID index, int scale) 730 { 731 if (CAN_SIGN_EXTEND_8_32(imm)) { 732 m_formatter.prefix(PRE_OPERAND_SIZE); 733 m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_CMP, base, index, scale, offset); 734 m_formatter.immediate8(imm); 735 } else { 736 m_formatter.prefix(PRE_OPERAND_SIZE); 737 m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_CMP, base, index, scale, offset); 738 m_formatter.immediate16(imm); 739 } 740 } 741 729 742 void testl_rr(RegisterID src, RegisterID dst) 730 743 { … … 775 788 #endif 776 789 790 void testw_rr(RegisterID src, RegisterID dst) 791 { 792 m_formatter.prefix(PRE_OPERAND_SIZE); 793 m_formatter.oneByteOp(OP_TEST_EvGv, src, dst); 794 } 795 777 796 void testb_i8r(int imm, RegisterID dst) 778 797 { … … 1605 1624 } 1606 1625 1626 void immediate16(int imm) 1627 { 1628 m_buffer.putShortUnchecked(imm); 1629 } 1630 1607 1631 void immediate32(int imm) 1608 1632 {
Note:
See TracChangeset
for help on using the changeset viewer.