Changeset 39020 in webkit for trunk/JavaScriptCore/assembler/X86Assembler.h
- Timestamp:
- Dec 4, 2008, 10:58:40 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/X86Assembler.h
r38989 r39020 115 115 PRE_SSE_F2 = 0xF2, 116 116 OP_HLT = 0xF4, 117 OP_GROUP3_EbIb = 0xF6, 117 118 OP_GROUP3_Ev = 0xF7, 118 119 OP_GROUP3_EvIz = 0xF7, // OP_GROUP3_Ev has an immediate, when instruction is a test. … … 391 392 #endif 392 393 394 void cmpl_i8m(int imm, RegisterID dst) 395 { 396 m_buffer.putByte(OP_GROUP1_EvIb); 397 modRm_opm(GROUP1_OP_CMP, dst); 398 m_buffer.putByte(imm); 399 } 400 401 void cmpl_i8m(int imm, int offset, RegisterID dst) 402 { 403 m_buffer.putByte(OP_GROUP1_EvIb); 404 modRm_opm(GROUP1_OP_CMP, dst, offset); 405 m_buffer.putByte(imm); 406 } 407 393 408 void cmpl_i8m(int imm, int offset, RegisterID base, RegisterID index, int scale) 394 409 { … … 495 510 m_buffer.putByte(OP_SUB_GvEv); 496 511 modRm_rm(dst, base, offset); 512 } 513 514 void testb_i8r(int imm, RegisterID dst) 515 { 516 m_buffer.ensureSpace(maxInstructionSize); 517 m_buffer.putByteUnchecked(OP_GROUP3_EbIb); 518 modRm_opr_Unchecked(GROUP3_OP_TEST, dst); 519 m_buffer.putByteUnchecked(imm); 497 520 } 498 521 … … 556 579 } 557 580 558 void shl _i8r(int imm, RegisterID dst)581 void shll_i8r(int imm, RegisterID dst) 559 582 { 560 583 if (imm == 1) { … … 720 743 } 721 744 745 void movl_i32m(int imm, RegisterID base) 746 { 747 m_buffer.ensureSpace(maxInstructionSize); 748 m_buffer.putByteUnchecked(OP_GROUP11_EvIz); 749 modRm_opm_Unchecked(GROUP11_MOV, base); 750 m_buffer.putIntUnchecked(imm); 751 } 752 722 753 void movl_i32m(int imm, int offset, RegisterID base) 723 754 { … … 1090 1121 } 1091 1122 1092 #if USE(CTI_ARGUMENT)1093 void restoreArgumentReference()1094 {1095 #if USE(FAST_CALL_CTI_ARGUMENT)1096 movl_rr(X86::esp, X86::ecx);1097 #else1098 movl_rm(X86::esp, 0, X86::esp);1099 #endif1100 }1101 1102 void restoreArgumentReferenceForTrampoline()1103 {1104 #if USE(FAST_CALL_CTI_ARGUMENT)1105 movl_rr(X86::esp, X86::ecx);1106 addl_i32r(4, X86::ecx);1107 #endif1108 }1109 #else1110 void restoreArgumentReference() {}1111 void restoreArgumentReferenceForTrampoline() {}1112 #endif1113 1114 1123 private: 1115 1124 void modRm_rr(RegisterID reg, RegisterID rm) … … 1131 1140 } 1132 1141 #endif 1142 1143 void modRm_rm_Unchecked(RegisterID reg, RegisterID base) 1144 { 1145 if (base == X86::esp) { 1146 m_buffer.putByteUnchecked(MODRM(0, reg, X86::hasSib)); 1147 m_buffer.putByteUnchecked(SIB(0, X86::noScale, X86::esp)); 1148 } else { 1149 m_buffer.putByteUnchecked(MODRM(0, reg, base)); 1150 } 1151 } 1133 1152 1134 1153 void modRm_rm(RegisterID reg, RegisterID base) … … 1213 1232 } 1214 1233 1234 void modRm_opm_Unchecked(OpcodeID opcodeID, RegisterID base) 1235 { 1236 modRm_rm_Unchecked(static_cast<RegisterID>(opcodeID), base); 1237 } 1238 1215 1239 void modRm_opm_Unchecked(OpcodeID opcodeID, RegisterID base, int offset) 1216 1240 {
Note:
See TracChangeset
for help on using the changeset viewer.