Ignore:
Timestamp:
Dec 5, 2008, 2:14:11 PM (16 years ago)
Author:
[email protected]
Message:

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

Reviewed by Geoff Garen.

Remove m_assembler from MacroAssembler::Jump.
Keeping a pointer allowed for some syntactic sugar - "link()" looks nicer
than "link(this)". But maintaining this doubles the size of Jump, which
is even more unfortunate for the JIT, since there are many large structures
holding JmpSrcs. Probably best to remove it.

https://bugs.webkit.org/show_bug.cgi?id=22693

  • assembler/MacroAssembler.h: (JSC::MacroAssembler::Jump::Jump): (JSC::MacroAssembler::Jump::link): (JSC::MacroAssembler::Jump::linkTo): (JSC::MacroAssembler::JumpList::link): (JSC::MacroAssembler::JumpList::linkTo): (JSC::MacroAssembler::jae32): (JSC::MacroAssembler::je32): (JSC::MacroAssembler::je16): (JSC::MacroAssembler::jg32): (JSC::MacroAssembler::jge32): (JSC::MacroAssembler::jl32): (JSC::MacroAssembler::jle32): (JSC::MacroAssembler::jnePtr): (JSC::MacroAssembler::jne32): (JSC::MacroAssembler::jnset32): (JSC::MacroAssembler::jset32): (JSC::MacroAssembler::jump): (JSC::MacroAssembler::jzSub32): (JSC::MacroAssembler::joAdd32): (JSC::MacroAssembler::call):
  • wrec/WREC.cpp: (JSC::WREC::Generator::compileRegExp):
  • wrec/WRECGenerator.cpp: (JSC::WREC::Generator::generateEnter): (JSC::WREC::Generator::generateBackreferenceQuantifier): (JSC::WREC::Generator::generateNonGreedyQuantifier): (JSC::WREC::Generator::generateGreedyQuantifier): (JSC::WREC::Generator::generatePatternCharacter): (JSC::WREC::Generator::generateCharacterClassInvertedRange): (JSC::WREC::Generator::generateCharacterClassInverted): (JSC::WREC::Generator::generateCharacterClass): (JSC::WREC::Generator::generateParenthesesAssertion): (JSC::WREC::Generator::generateParenthesesInvertedAssertion): (JSC::WREC::Generator::generateParenthesesNonGreedy): (JSC::WREC::Generator::generateParenthesesResetTrampoline): (JSC::WREC::Generator::generateAssertionBOL): (JSC::WREC::Generator::generateAssertionEOL): (JSC::WREC::Generator::generateAssertionWordBoundary): (JSC::WREC::Generator::generateBackreference): (JSC::WREC::Generator::terminateAlternative): (JSC::WREC::Generator::terminateDisjunction):
  • wrec/WRECParser.h:
File:
1 edited

Legend:

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

    r39020 r39043  
    168168    public:
    169169        Jump()
    170             : m_assembler(0)
    171         {
    172         }
    173 
    174         Jump(X86Assembler& assembler, X86Assembler::JmpSrc jmp)
    175             : m_assembler(&assembler)
    176             , m_jmp(jmp)
    177170        {
    178171        }
    179172       
    180         void link()
    181         {
    182             ASSERT(m_assembler);
    183             m_assembler->link(m_jmp, m_assembler->label());
     173        Jump(X86Assembler::JmpSrc jmp)
     174            : m_jmp(jmp)
     175        {
    184176        }
    185177       
    186         void linkTo(Label label)
    187         {
    188             ASSERT(m_assembler);
    189             m_assembler->link(m_jmp, label.m_label);
     178        void link(MacroAssembler* masm)
     179        {
     180            masm->m_assembler.link(m_jmp, masm->m_assembler.label());
     181        }
     182       
     183        void linkTo(Label label, MacroAssembler* masm)
     184        {
     185            masm->m_assembler.link(m_jmp, label.m_label);
    190186        }
    191187       
     
    197193
    198194    private:
    199         X86Assembler* m_assembler;
    200195        X86Assembler::JmpSrc m_jmp;
    201196    };
     
    207202    class JumpList {
    208203    public:
    209         void link()
     204        void link(MacroAssembler* masm)
    210205        {
    211206            size_t size = m_jumps.size();
    212207            for (size_t i = 0; i < size; ++i)
    213                 m_jumps[i].link();
     208                m_jumps[i].link(masm);
    214209            m_jumps.clear();
    215210        }
    216211       
    217         void linkTo(Label label)
     212        void linkTo(Label label, MacroAssembler* masm)
    218213        {
    219214            size_t size = m_jumps.size();
    220215            for (size_t i = 0; i < size; ++i)
    221                 m_jumps[i].linkTo(label);
     216                m_jumps[i].linkTo(label, masm);
    222217            m_jumps.clear();
    223218        }
     
    564559    {
    565560        compareImm32ForBranch(left, right.m_value);
    566         return Jump(m_assembler, m_assembler.jae());
     561        return Jump(m_assembler.jae());
    567562    }
    568563   
     
    570565    {
    571566        m_assembler.cmpl_rr(op1, op2);
    572         return Jump(m_assembler, m_assembler.je());
     567        return Jump(m_assembler.je());
    573568    }
    574569   
     
    576571    {
    577572        m_assembler.cmpl_rm(op1, op2.offset, op2.base);
    578         return Jump(m_assembler, m_assembler.je());
     573        return Jump(m_assembler.je());
    579574    }
    580575   
     
    582577    {
    583578        compareImm32ForBranchEquality(reg, imm.m_value);
    584         return Jump(m_assembler, m_assembler.je());
     579        return Jump(m_assembler.je());
    585580    }
    586581   
     
    592587            m_assembler.cmpw_rm(op1, op2.offset, op2.base, op2.index, op2.scale);
    593588
    594         return Jump(m_assembler, m_assembler.je());
     589        return Jump(m_assembler.je());
    595590    }
    596591   
     
    598593    {
    599594        m_assembler.cmpl_rr(right, left);
    600         return Jump(m_assembler, m_assembler.jg());
     595        return Jump(m_assembler.jg());
    601596    }
    602597   
     
    604599    {
    605600        m_assembler.cmpl_rr(right, left);
    606         return Jump(m_assembler, m_assembler.jge());
     601        return Jump(m_assembler.jge());
    607602    }
    608603
     
    610605    {
    611606        compareImm32ForBranch(left, right.m_value);
    612         return Jump(m_assembler, m_assembler.jge());
     607        return Jump(m_assembler.jge());
    613608    }
    614609   
     
    616611    {
    617612        compareImm32ForBranch(left, right.m_value);
    618         return Jump(m_assembler, m_assembler.jl());
     613        return Jump(m_assembler.jl());
    619614    }
    620615
     
    622617    {
    623618        m_assembler.cmpl_rr(right, left);
    624         return Jump(m_assembler, m_assembler.jle());
     619        return Jump(m_assembler.jle());
    625620    }
    626621   
     
    628623    {
    629624        compareImm32ForBranch(left, right.m_value);
    630         return Jump(m_assembler, m_assembler.jle());
     625        return Jump(m_assembler.jle());
    631626    }
    632627
     
    635630    {
    636631        compareImm32ForBranchEquality(address, reinterpret_cast<uint32_t>(ptr));
    637         return Jump(m_assembler, m_assembler.jne());
     632        return Jump(m_assembler.jne());
    638633    }
    639634#endif
     
    642637    {
    643638        m_assembler.cmpl_rr(op1, op2);
    644         return Jump(m_assembler, m_assembler.jne());
     639        return Jump(m_assembler.jne());
    645640    }
    646641
     
    648643    {
    649644        compareImm32ForBranchEquality(reg, imm.m_value);
    650         return Jump(m_assembler, m_assembler.jne());
     645        return Jump(m_assembler.jne());
    651646    }
    652647
     
    658653        else
    659654            m_assembler.testl_i32r(imm.m_value, reg);
    660         return Jump(m_assembler, m_assembler.je());
     655        return Jump(m_assembler.je());
    661656    }
    662657
     
    668663        else
    669664            m_assembler.testl_i32r(imm.m_value, reg);
    670         return Jump(m_assembler, m_assembler.jne());
     665        return Jump(m_assembler.jne());
    671666    }
    672667
    673668    Jump jump()
    674669    {
    675         return Jump(m_assembler, m_assembler.jmp());
     670        return Jump(m_assembler.jmp());
    676671    }
    677672
     
    699694    void je32(Imm32 imm, RegisterID op2, Label target)
    700695    {
    701         je32(imm, op2).linkTo(target);
     696        je32(imm, op2).linkTo(target, this);
    702697    }
    703698
    704699    void je16(RegisterID op1, BaseIndex op2, Label target)
    705700    {
    706         je16(op1, op2).linkTo(target);
     701        je16(op1, op2).linkTo(target, this);
    707702    }
    708703   
    709704    void jl32(RegisterID left, Imm32 right, Label target)
    710705    {
    711         jl32(left, right).linkTo(target);
     706        jl32(left, right).linkTo(target, this);
    712707    }
    713708   
    714709    void jle32(RegisterID left, RegisterID right, Label target)
    715710    {
    716         jle32(left, right).linkTo(target);
     711        jle32(left, right).linkTo(target, this);
    717712    }
    718713   
    719714    void jne32(RegisterID op1, RegisterID op2, Label target)
    720715    {
    721         jne32(op1, op2).linkTo(target);
     716        jne32(op1, op2).linkTo(target, this);
    722717    }
    723718
    724719    void jne32(Imm32 imm, RegisterID op2, Label target)
    725720    {
    726         jne32(imm, op2).linkTo(target);
     721        jne32(imm, op2).linkTo(target, this);
    727722    }
    728723
     
    749744        else
    750745            m_assembler.subl_i32r(imm.m_value, dest);
    751         return Jump(m_assembler, m_assembler.je());
     746        return Jump(m_assembler.je());
    752747    }
    753748   
     
    755750    {
    756751        m_assembler.addl_rr(src, dest);
    757         return Jump(m_assembler, m_assembler.jo());
     752        return Jump(m_assembler.jo());
    758753    }
    759754   
     
    768763    Jump call()
    769764    {
    770         return Jump(m_assembler, m_assembler.call());
     765        return Jump(m_assembler.call());
    771766    }
    772767
    773768    Jump call(RegisterID target)
    774769    {
    775         return Jump(m_assembler, m_assembler.call(target));
     770        return Jump(m_assembler.call(target));
    776771    }
    777772
Note: See TracChangeset for help on using the changeset viewer.