Changeset 44356 in webkit for trunk/JavaScriptCore
- Timestamp:
- Jun 2, 2009, 2:34:28 AM (16 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r44347 r44356 1 2009-06-02 Gavin Barraclough <[email protected]> 2 3 Reviewed by Oliver ">>" Hunt. 4 5 emitSlow_op_rshift is linking the wrong number of slow cases, if !supportsFloatingPoint(). 6 Fixerate, and refactor/comment the code a little to make it clearer what is going on. 7 8 * jit/JITArithmetic.cpp: 9 (JSC::JIT::emit_op_rshift): 10 (JSC::JIT::emitSlow_op_rshift): 11 1 12 2009-06-01 Gavin Barraclough <[email protected]> 2 13 -
trunk/JavaScriptCore/jit/JITArithmetic.cpp
r43781 r44356 106 106 107 107 if (isOperandConstantImmediateInt(op2)) { 108 // isOperandConstantImmediateInt(op2) => 1 SlowCase 108 109 emitGetVirtualRegister(op1, regT0); 109 110 emitJumpSlowCaseIfNotImmediateInteger(regT0); … … 119 120 Jump lhsIsInt = emitJumpIfImmediateInteger(regT0); 120 121 #if USE(ALTERNATE_JSIMMEDIATE) 122 // supportsFloatingPoint() && USE(ALTERNATE_JSIMMEDIATE) => 3 SlowCases 121 123 addSlowCase(emitJumpIfNotImmediateNumber(regT0)); 122 124 movePtrToDouble(regT0, fpRegT0); 123 #else 125 addSlowCase(branchTruncateDoubleToInt32(fpRegT0, regT0)); 126 #else 127 // supportsFloatingPoint() && !USE(ALTERNATE_JSIMMEDIATE) => 5 SlowCases (of which 1 IfNotJSCell) 124 128 emitJumpSlowCaseIfNotJSCell(regT0, op1); 125 129 addSlowCase(checkStructure(regT0, m_globalData->numberStructure.get())); 126 130 loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0); 127 #endif128 131 addSlowCase(branchTruncateDoubleToInt32(fpRegT0, regT0)); 129 #if !USE(ALTERNATE_JSIMMEDIATE)130 132 addSlowCase(branchAdd32(Overflow, regT0, regT0)); 131 133 #endif 132 134 lhsIsInt.link(this); 133 } else 135 emitJumpSlowCaseIfNotImmediateInteger(regT2); 136 } else { 137 // !supportsFloatingPoint() => 2 SlowCases 134 138 emitJumpSlowCaseIfNotImmediateInteger(regT0); 135 emitJumpSlowCaseIfNotImmediateInteger(regT2); 139 emitJumpSlowCaseIfNotImmediateInteger(regT2); 140 } 136 141 emitFastArithImmToInt(regT2); 137 142 #if !PLATFORM(X86) … … 160 165 unsigned op2 = currentInstruction[3].u.operand; 161 166 162 linkSlowCase(iter);163 167 JITStubCall stubCall(this, JITStubs::cti_op_rshift); 164 168 165 169 if (isOperandConstantImmediateInt(op2)) { 170 linkSlowCase(iter); 166 171 stubCall.addArgument(regT0); 167 172 stubCall.addArgument(op2, regT2); … … 170 175 #if USE(ALTERNATE_JSIMMEDIATE) 171 176 linkSlowCase(iter); 177 linkSlowCase(iter); 178 linkSlowCase(iter); 172 179 #else 173 180 linkSlowCaseIfNotJSCell(iter, op1); 174 181 linkSlowCase(iter); 175 182 linkSlowCase(iter); 176 #endif177 183 linkSlowCase(iter); 184 linkSlowCase(iter); 185 #endif 178 186 // We're reloading op1 to regT0 as we can no longer guarantee that 179 187 // we have not munged the operand. It may have already been shifted
Note:
See TracChangeset
for help on using the changeset viewer.