Changeset 40562 in webkit for trunk/JavaScriptCore/jit/JITArithmetic.cpp
- Timestamp:
- Feb 3, 2009, 6:02:32 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITArithmetic.cpp
r40004 r40562 62 62 lshift32(X86::ecx, X86::eax); 63 63 #if !USE(ALTERNATE_JSIMMEDIATE) 64 addSlowCase( joAdd32(X86::eax, X86::eax));64 addSlowCase(branchAdd32(Overflow, X86::eax, X86::eax)); 65 65 signExtend32ToPtr(X86::eax, X86::eax); 66 66 #endif … … 193 193 emitJumpSlowCaseIfNotImmediateInteger(X86::ecx); 194 194 #if USE(ALTERNATE_JSIMMEDIATE) 195 addSlowCase( jePtr(X86::ecx, ImmPtr(JSValuePtr::encode(js0()))));195 addSlowCase(branchPtr(Equal, X86::ecx, ImmPtr(JSValuePtr::encode(js0())))); 196 196 mod32(X86::ecx, X86::eax, X86::edx); 197 197 #else … … 231 231 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 232 232 #if USE(ALTERNATE_JSIMMEDIATE) 233 addSlowCase( joAdd32(Imm32(1), X86::edx));233 addSlowCase(branchAdd32(Overflow, Imm32(1), X86::edx)); 234 234 emitFastArithIntToImmNoCheck(X86::edx, X86::edx); 235 235 #else 236 addSlowCase( joAdd32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::edx));236 addSlowCase(branchAdd32(Overflow, Imm32(1 << JSImmediate::IntegerPayloadShift), X86::edx)); 237 237 signExtend32ToPtr(X86::edx, X86::edx); 238 238 #endif … … 256 256 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 257 257 #if USE(ALTERNATE_JSIMMEDIATE) 258 addSlowCase( joSub32(Imm32(1), X86::edx));258 addSlowCase(branchSub32(Zero, Imm32(1), X86::edx)); 259 259 emitFastArithIntToImmNoCheck(X86::edx, X86::edx); 260 260 #else 261 addSlowCase( joSub32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::edx));261 addSlowCase(branchSub32(Zero, Imm32(1 << JSImmediate::IntegerPayloadShift), X86::edx)); 262 262 signExtend32ToPtr(X86::edx, X86::edx); 263 263 #endif … … 280 280 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 281 281 #if USE(ALTERNATE_JSIMMEDIATE) 282 addSlowCase( joAdd32(Imm32(1), X86::eax));282 addSlowCase(branchAdd32(Overflow, Imm32(1), X86::eax)); 283 283 emitFastArithIntToImmNoCheck(X86::eax, X86::eax); 284 284 #else 285 addSlowCase( joAdd32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::eax));285 addSlowCase(branchAdd32(Overflow, Imm32(1 << JSImmediate::IntegerPayloadShift), X86::eax)); 286 286 signExtend32ToPtr(X86::eax, X86::eax); 287 287 #endif … … 304 304 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 305 305 #if USE(ALTERNATE_JSIMMEDIATE) 306 addSlowCase( joSub32(Imm32(1), X86::eax));306 addSlowCase(branchSub32(Zero, Imm32(1), X86::eax)); 307 307 emitFastArithIntToImmNoCheck(X86::eax, X86::eax); 308 308 #else 309 addSlowCase( joSub32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::eax));309 addSlowCase(branchSub32(Zero, Imm32(1 << JSImmediate::IntegerPayloadShift), X86::eax)); 310 310 signExtend32ToPtr(X86::eax, X86::eax); 311 311 #endif … … 382 382 emitJumpSlowCaseIfNotImmediateInteger(X86::edx); 383 383 if (opcodeID == op_add) 384 addSlowCase( joAdd32(X86::edx, X86::eax));384 addSlowCase(branchAdd32(Overflow, X86::edx, X86::eax)); 385 385 else if (opcodeID == op_sub) 386 addSlowCase( joSub32(X86::edx, X86::eax));386 addSlowCase(branchSub32(Zero, X86::edx, X86::eax)); 387 387 else { 388 388 ASSERT(opcodeID == op_mul); 389 addSlowCase( joMul32(X86::edx, X86::eax));390 addSlowCase( jz32(X86::eax));389 addSlowCase(branchMul32(Overflow, X86::edx, X86::eax)); 390 addSlowCase(branchTest32(Zero, X86::eax)); 391 391 } 392 392 emitFastArithIntToImmNoCheck(X86::eax, X86::eax); … … 473 473 emitGetVirtualRegister(op2, X86::eax); 474 474 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 475 addSlowCase( joAdd32(Imm32(getConstantOperandImmediateInt(op1)), X86::eax));475 addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op1)), X86::eax)); 476 476 emitFastArithIntToImmNoCheck(X86::eax, X86::eax); 477 477 } else if (isOperandConstantImmediateInt(op2)) { 478 478 emitGetVirtualRegister(op1, X86::eax); 479 479 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 480 addSlowCase( joAdd32(Imm32(getConstantOperandImmediateInt(op2)), X86::eax));480 addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op2)), X86::eax)); 481 481 emitFastArithIntToImmNoCheck(X86::eax, X86::eax); 482 482 } else … … 522 522 emitGetVirtualRegister(op2, X86::eax); 523 523 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 524 addSlowCase( joMul32(Imm32(value), X86::eax, X86::eax));524 addSlowCase(branchMul32(Overflow, Imm32(value), X86::eax, X86::eax)); 525 525 emitFastArithReTagImmediate(X86::eax, X86::eax); 526 526 } else if (isOperandConstantImmediateInt(op2) && ((value = getConstantOperandImmediateInt(op2)) > 0)) { 527 527 emitGetVirtualRegister(op1, X86::eax); 528 528 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 529 addSlowCase( joMul32(Imm32(value), X86::eax, X86::eax));529 addSlowCase(branchMul32(Overflow, Imm32(value), X86::eax, X86::eax)); 530 530 emitFastArithReTagImmediate(X86::eax, X86::eax); 531 531 } else … … 861 861 emitGetVirtualRegister(op2, X86::eax); 862 862 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 863 addSlowCase( joAdd32(Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), X86::eax));863 addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), X86::eax)); 864 864 signExtend32ToPtr(X86::eax, X86::eax); 865 865 emitPutVirtualRegister(result); … … 867 867 emitGetVirtualRegister(op1, X86::eax); 868 868 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 869 addSlowCase( joAdd32(Imm32(getConstantOperandImmediateInt(op2) << JSImmediate::IntegerPayloadShift), X86::eax));869 addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op2) << JSImmediate::IntegerPayloadShift), X86::eax)); 870 870 signExtend32ToPtr(X86::eax, X86::eax); 871 871 emitPutVirtualRegister(result); … … 925 925 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 926 926 emitFastArithDeTagImmediate(X86::eax); 927 addSlowCase( joMul32(Imm32(value), X86::eax, X86::eax));927 addSlowCase(branchMul32(Overflow, Imm32(value), X86::eax, X86::eax)); 928 928 signExtend32ToPtr(X86::eax, X86::eax); 929 929 emitFastArithReTagImmediate(X86::eax, X86::eax); … … 933 933 emitJumpSlowCaseIfNotImmediateInteger(X86::eax); 934 934 emitFastArithDeTagImmediate(X86::eax); 935 addSlowCase( joMul32(Imm32(value), X86::eax, X86::eax));935 addSlowCase(branchMul32(Overflow, Imm32(value), X86::eax, X86::eax)); 936 936 signExtend32ToPtr(X86::eax, X86::eax); 937 937 emitFastArithReTagImmediate(X86::eax, X86::eax);
Note:
See TracChangeset
for help on using the changeset viewer.