Changeset 39121 in webkit for trunk/JavaScriptCore/jit/JIT.cpp


Ignore:
Timestamp:
Dec 8, 2008, 6:10:41 PM (16 years ago)
Author:
[email protected]
Message:

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

Reviewed by Geoff Garen.

Expand MacroAssembler to support more operations, required by the JIT.

Generally adds more operations and permutations of operands to the existing
interface. Rename 'jset' to 'jnz' and 'jnset' to 'jz', which seem clearer,
and require that immediate pointer operands (though not pointer addresses to
load and store instructions) are wrapped in a ImmPtr() type, akin to Imm32().

No performance impact.

  • assembler/MacroAssembler.h: (JSC::MacroAssembler::): (JSC::MacroAssembler::ImmPtr::ImmPtr): (JSC::MacroAssembler::add32): (JSC::MacroAssembler::and32): (JSC::MacroAssembler::or32): (JSC::MacroAssembler::sub32): (JSC::MacroAssembler::xor32): (JSC::MacroAssembler::loadPtr): (JSC::MacroAssembler::load32): (JSC::MacroAssembler::storePtr): (JSC::MacroAssembler::store32): (JSC::MacroAssembler::poke): (JSC::MacroAssembler::move): (JSC::MacroAssembler::testImm32): (JSC::MacroAssembler::jae32): (JSC::MacroAssembler::jb32): (JSC::MacroAssembler::jePtr): (JSC::MacroAssembler::je32): (JSC::MacroAssembler::jnePtr): (JSC::MacroAssembler::jne32): (JSC::MacroAssembler::jnzPtr): (JSC::MacroAssembler::jnz32): (JSC::MacroAssembler::jzPtr): (JSC::MacroAssembler::jz32): (JSC::MacroAssembler::joSub32): (JSC::MacroAssembler::jump): (JSC::MacroAssembler::sete32): (JSC::MacroAssembler::setne32): (JSC::MacroAssembler::setnz32): (JSC::MacroAssembler::setz32):
  • assembler/X86Assembler.h: (JSC::X86Assembler::addl_mr): (JSC::X86Assembler::andl_i8r): (JSC::X86Assembler::cmpl_rm): (JSC::X86Assembler::cmpl_mr): (JSC::X86Assembler::cmpl_i8m): (JSC::X86Assembler::subl_mr): (JSC::X86Assembler::testl_i32m): (JSC::X86Assembler::xorl_i32r): (JSC::X86Assembler::movl_rm): (JSC::X86Assembler::modRm_opmsib):
  • jit/JIT.cpp: (JSC::JIT::privateCompileMainPass):
  • jit/JITInlineMethods.h: (JSC::JIT::emitGetVirtualRegister): (JSC::JIT::emitPutCTIArgConstant): (JSC::JIT::emitPutCTIParam): (JSC::JIT::emitPutImmediateToCallFrameHeader): (JSC::JIT::emitInitRegister): (JSC::JIT::checkStructure): (JSC::JIT::emitJumpIfJSCell): (JSC::JIT::emitJumpIfNotJSCell): (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
File:
1 edited

Legend:

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

    r39083 r39121  
    517517        case op_get_global_var: {
    518518            JSVariableObject* globalObject = static_cast<JSVariableObject*>(instruction[i + 2].u.jsCell);
    519             move(globalObject, X86::eax);
     519            move(ImmPtr(globalObject), X86::eax);
    520520            emitGetVariableObjectRegister(X86::eax, instruction[i + 3].u.operand, X86::eax);
    521521            emitPutVirtualRegister(instruction[i + 1].u.operand);
     
    526526            emitGetVirtualRegister(instruction[i + 3].u.operand, X86::edx, i);
    527527            JSVariableObject* globalObject = static_cast<JSVariableObject*>(instruction[i + 1].u.jsCell);
    528             move(globalObject, X86::eax);
     528            move(ImmPtr(globalObject), X86::eax);
    529529            emitPutVariableObjectRegister(X86::edx, X86::eax, instruction[i + 2].u.operand);
    530530            i += 4;
Note: See TracChangeset for help on using the changeset viewer.