Changeset 41103 in webkit for trunk/JavaScriptCore/assembler


Ignore:
Timestamp:
Feb 20, 2009, 5:14:28 AM (16 years ago)
Author:
[email protected]
Message:

<rdar://problem/6606660> 2==null returns true in 64bit jit

Reviewed by Mark Rowe

Code for op_eq_null and op_neq_null was incorrectly performing
a 32bit compare, which truncated the type tag from an integer
immediate, leading to incorrect behaviour.

Location:
trunk/JavaScriptCore/assembler
Files:
2 edited

Legend:

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

    r40660 r41103  
    228228    }
    229229
     230    void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
     231    {
     232        set32(cond, left, right, dest);
     233    }
     234
    230235    void storePtr(RegisterID src, ImplicitAddress address)
    231236    {
  • trunk/JavaScriptCore/assembler/MacroAssemblerX86_64.h

    r41089 r41103  
    255255    }
    256256
     257    void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
     258    {
     259        if (((cond == Equal) || (cond == NotEqual)) && !right.m_value)
     260            m_assembler.testq_rr(left, left);
     261        else
     262            m_assembler.cmpq_ir(right.m_value, left);
     263        m_assembler.setCC_r(cond, dest);
     264        m_assembler.movzbl_rr(dest, dest);
     265    }
    257266
    258267    Jump branchPtr(Condition cond, RegisterID left, RegisterID right)
Note: See TracChangeset for help on using the changeset viewer.