Changeset 40004 in webkit for trunk/JavaScriptCore/assembler


Ignore:
Timestamp:
Jan 16, 2009, 8:57:56 PM (16 years ago)
Author:
[email protected]
Message:

2009-01-16 Gavin Barraclough <[email protected]>

Reviewed by Oliver Hunt.

On x86-64 jit, cache JSImmedate::TagMask & JSImmedate::TagTypeNumber in
registers, save reloading them every time they're used.

Draws x86-64 jit performance close to that of i386 jit.

  • assembler/MacroAssembler.h: (JSC::MacroAssembler::subPtr): (JSC::MacroAssembler::jnzPtr): (JSC::MacroAssembler::jzPtr):
  • jit/JIT.cpp: (JSC::JIT::privateCompileMainPass):
  • jit/JIT.h:
  • jit/JITArithmetic.cpp: (JSC::JIT::compileBinaryArithOpSlowCase):
  • jit/JITInlineMethods.h: (JSC::JIT::emitJumpIfJSCell): (JSC::JIT::emitJumpIfNotJSCell): (JSC::JIT::emitJumpIfImmediateNumber): (JSC::JIT::emitJumpIfNotImmediateNumber): (JSC::JIT::emitJumpIfImmediateInteger): (JSC::JIT::emitJumpIfNotImmediateInteger): (JSC::JIT::emitFastArithIntToImmNoCheck):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/assembler/MacroAssembler.h

    r39998 r40004  
    700700    }
    701701
     702    void subPtr(RegisterID src, RegisterID dest)
     703    {
     704#if PLATFORM(X86_64)
     705        m_assembler.subq_rr(src, dest);
     706#else
     707        sub32(src, dest);
     708#endif
     709    }
     710   
    702711    void subPtr(Imm32 imm, RegisterID dest)
    703712    {
     
    15901599    }
    15911600   
     1601    Jump jnzPtr(RegisterID reg, RegisterID mask)
     1602    {
     1603#if PLATFORM(X86_64)
     1604        m_assembler.testq_rr(reg, mask);
     1605        return Jump(m_assembler.jne());
     1606#else
     1607        return jnz32(reg, mask);
     1608#endif
     1609    }
     1610
    15921611    Jump jnzPtr(RegisterID reg, Imm32 mask = Imm32(-1))
    15931612    {
     
    16211640    }
    16221641
     1642    Jump jnz32(RegisterID reg, RegisterID mask)
     1643    {
     1644        m_assembler.testl_rr(reg, mask);
     1645        return Jump(m_assembler.jne());
     1646    }
     1647
    16231648    Jump jnz32(RegisterID reg, Imm32 mask = Imm32(-1))
    16241649    {
     
    16311656        testImm32(address, mask);
    16321657        return Jump(m_assembler.jne());
     1658    }
     1659
     1660    Jump jzPtr(RegisterID reg, RegisterID mask)
     1661    {
     1662#if PLATFORM(X86_64)
     1663        m_assembler.testq_rr(reg, mask);
     1664        return Jump(m_assembler.je());
     1665#else
     1666        return jz32(reg, mask);
     1667#endif
    16331668    }
    16341669
     
    16721707        return jz32(address, mask);
    16731708#endif
     1709    }
     1710
     1711    Jump jz32(RegisterID reg, RegisterID mask)
     1712    {
     1713        m_assembler.testl_rr(reg, mask);
     1714        return Jump(m_assembler.je());
    16741715    }
    16751716
Note: See TracChangeset for help on using the changeset viewer.