Changeset 51739 in webkit for trunk/JavaScriptCore/jit/JITOpcodes.cpp
- Timestamp:
- Dec 6, 2009, 2:30:32 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITOpcodes.cpp
r51738 r51739 746 746 void JIT::emit_op_loop_if_false(Instruction* currentInstruction) 747 747 { 748 unsigned cond = currentInstruction[1].u.operand; 749 unsigned target = currentInstruction[2].u.operand; 750 748 751 emitTimeoutCheck(); 749 752 750 unsigned target = currentInstruction[2].u.operand; 751 emitGetVirtualRegister(currentInstruction[1].u.operand, regT0); 752 753 addJump(branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsNumber(m_globalData, 0)))), target); 754 Jump isNonZero = emitJumpIfImmediateInteger(regT0); 755 756 addJump(branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsBoolean(false)))), target); 757 addSlowCase(branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(jsBoolean(true))))); 758 759 isNonZero.link(this); 760 RECORD_JUMP_TARGET(target); 753 emitLoad(cond, regT1, regT0); 754 755 Jump isTrue = branch32(Equal, regT1, Imm32(JSValue::TrueTag)); 756 addJump(branch32(Equal, regT1, Imm32(JSValue::FalseTag)), target); 757 758 Jump isNotInteger = branch32(NotEqual, regT1, Imm32(JSValue::Int32Tag)); 759 Jump isTrue2 = branch32(NotEqual, regT0, Imm32(0)); 760 addJump(jump(), target); 761 762 if (supportsFloatingPoint()) { 763 isNotInteger.link(this); 764 765 addSlowCase(branch32(Above, regT1, Imm32(JSValue::LowestTag))); 766 767 zeroDouble(fpRegT0); 768 emitLoadDouble(cond, fpRegT1); 769 addJump(branchDouble(DoubleEqualOrUnordered, fpRegT0, fpRegT1), target); 770 } else 771 addSlowCase(isNotInteger); 772 773 isTrue.link(this); 774 isTrue2.link(this); 761 775 } 762 776
Note:
See TracChangeset
for help on using the changeset viewer.