Ignore:
Timestamp:
Dec 12, 2008, 5:39:38 PM (16 years ago)
Author:
[email protected]
Message:

2008-12-12 Gavin Barraclough <[email protected]>

Reviewed by Geoff Garen.

Move slow-cases of JIT code generation over to the MacroAssembler interface.

  • assembler/MacroAssembler.h: (JSC::MacroAssembler::Label::Label): (JSC::MacroAssembler::jae32): (JSC::MacroAssembler::jg32): (JSC::MacroAssembler::jzPtr):
  • jit/JIT.cpp: (JSC::JIT::privateCompileSlowCases): (JSC::JIT::privateCompile): (JSC::JIT::emitGetVariableObjectRegister): (JSC::JIT::emitPutVariableObjectRegister):
  • jit/JIT.h: (JSC::SlowCaseEntry::SlowCaseEntry): (JSC::JIT::getSlowCase): (JSC::JIT::linkSlowCase):
  • jit/JITArithmetic.cpp: (JSC::JIT::compileBinaryArithOpSlowCase):
  • jit/JITCall.cpp: (JSC::JIT::compileOpCallInitializeCallFrame): (JSC::JIT::compileOpCall): (JSC::JIT::compileOpCallSlowCase):
  • jit/JITInlineMethods.h: (JSC::JIT::emitJumpSlowCaseIfNotJSCell): (JSC::JIT::linkSlowCaseIfNotJSCell):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::compileGetByIdHotPath): (JSC::JIT::compilePutByIdHotPath): (JSC::JIT::compileGetByIdSlowCase): (JSC::JIT::compilePutByIdSlowCase):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JITArithmetic.cpp

    r39020 r39261  
    298298void JIT::compileBinaryArithOpSlowCase(OpcodeID opcodeID, Vector<SlowCaseEntry>::iterator& iter, unsigned dst, unsigned src1, unsigned src2, OperandTypes types, unsigned i)
    299299{
    300     JmpDst here = __ label();
    301     __ link(iter->from, here);
     300    linkSlowCase(iter);
    302301    if (types.second().isReusable() && isSSE2Present()) {
    303302        if (!types.first().definitelyIsNumber()) {
    304             if (linkSlowCaseIfNotJSCell(++iter, src1))
    305                 ++iter;
    306             __ link(iter->from, here);
     303            linkSlowCaseIfNotJSCell(iter, src1);
     304            linkSlowCase(iter);
    307305        }
    308306        if (!types.second().definitelyIsNumber()) {
    309             if (linkSlowCaseIfNotJSCell(++iter, src2))
    310                 ++iter;
    311             __ link(iter->from, here);
    312         }
    313         __ link((++iter)->from, here);
     307            linkSlowCaseIfNotJSCell(iter, src2);
     308            linkSlowCase(iter);
     309        }
    314310    } else if (types.first().isReusable() && isSSE2Present()) {
    315311        if (!types.first().definitelyIsNumber()) {
    316             if (linkSlowCaseIfNotJSCell(++iter, src1))
    317                 ++iter;
    318             __ link(iter->from, here);
     312            linkSlowCaseIfNotJSCell(iter, src1);
     313            linkSlowCase(iter);
    319314        }
    320315        if (!types.second().definitelyIsNumber()) {
    321             if (linkSlowCaseIfNotJSCell(++iter, src2))
    322                 ++iter;
    323             __ link(iter->from, here);
    324         }
    325         __ link((++iter)->from, here);
    326     } else
    327         __ link((++iter)->from, here);
     316            linkSlowCaseIfNotJSCell(iter, src2);
     317            linkSlowCase(iter);
     318        }
     319    }
     320    linkSlowCase(iter);
    328321
    329322    // additional entry point to handle -0 cases.
    330323    if (opcodeID == op_mul)
    331         __ link((++iter)->from, here);
     324        linkSlowCase(iter);
    332325
    333326    emitPutCTIArgFromVirtualRegister(src1, 0, X86::ecx);
Note: See TracChangeset for help on using the changeset viewer.