Ignore:
Timestamp:
Sep 12, 2013, 1:40:03 PM (12 years ago)
Author:
[email protected]
Message:

DFG::GenerationInfo init/fill methods shouldn't duplicate a bunch of logic
https://bugs.webkit.org/show_bug.cgi?id=121253

Reviewed by Oliver Hunt.

  • dfg/DFGGenerationInfo.h:

(JSC::DFG::GenerationInfo::initGPR):
(JSC::DFG::GenerationInfo::initInt32):
(JSC::DFG::GenerationInfo::initJSValue):
(JSC::DFG::GenerationInfo::initCell):
(JSC::DFG::GenerationInfo::initBoolean):
(JSC::DFG::GenerationInfo::initStorage):
(JSC::DFG::GenerationInfo::fillGPR):
(JSC::DFG::GenerationInfo::fillJSValue):
(JSC::DFG::GenerationInfo::fillCell):
(JSC::DFG::GenerationInfo::fillInt32):
(JSC::DFG::GenerationInfo::fillBoolean):
(JSC::DFG::GenerationInfo::fillStorage):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGGenerationInfo.h

    r155595 r155645  
    7070        ASSERT(m_useCount);
    7171    }
    72     void initInt32(Node* node, uint32_t useCount, GPRReg gpr)
    73     {
     72    void initGPR(Node* node, uint32_t useCount, GPRReg gpr, DataFormat format)
     73    {
     74        ASSERT(gpr != InvalidGPRReg);
    7475        m_node = node;
    7576        m_useCount = useCount;
    76         m_registerFormat = DataFormatInt32;
     77        m_registerFormat = format;
    7778        m_spillFormat = DataFormatNone;
    7879        m_canFill = false;
     
    8283        ASSERT(m_useCount);
    8384    }
     85    void initInt32(Node* node, uint32_t useCount, GPRReg gpr)
     86    {
     87        initGPR(node, useCount, gpr, DataFormatInt32);
     88    }
    8489#if USE(JSVALUE64)
    8590    void initJSValue(Node* node, uint32_t useCount, GPRReg gpr, DataFormat format = DataFormatJS)
    8691    {
    8792        ASSERT(format & DataFormatJS);
    88 
    89         m_node = node;
    90         m_useCount = useCount;
    91         m_registerFormat = format;
    92         m_spillFormat = DataFormatNone;
    93         m_canFill = false;
    94         u.gpr = gpr;
    95         m_bornForOSR = false;
    96         m_isConstant = false;
    97         ASSERT(m_useCount);
     93        initGPR(node, useCount, gpr, format);
    9894    }
    9995#elif USE(JSVALUE32_64)
     
    116112    void initCell(Node* node, uint32_t useCount, GPRReg gpr)
    117113    {
    118         m_node = node;
    119         m_useCount = useCount;
    120         m_registerFormat = DataFormatCell;
    121         m_spillFormat = DataFormatNone;
    122         m_canFill = false;
    123         u.gpr = gpr;
    124         m_bornForOSR = false;
    125         m_isConstant = false;
    126         ASSERT(m_useCount);
     114        initGPR(node, useCount, gpr, DataFormatCell);
    127115    }
    128116    void initBoolean(Node* node, uint32_t useCount, GPRReg gpr)
    129117    {
    130         m_node = node;
    131         m_useCount = useCount;
    132         m_registerFormat = DataFormatBoolean;
    133         m_spillFormat = DataFormatNone;
    134         m_canFill = false;
    135         u.gpr = gpr;
    136         m_bornForOSR = false;
    137         m_isConstant = false;
    138         ASSERT(m_useCount);
     118        initGPR(node, useCount, gpr, DataFormatBoolean);
    139119    }
    140120    void initDouble(Node* node, uint32_t useCount, FPRReg fpr)
     
    153133    void initStorage(Node* node, uint32_t useCount, GPRReg gpr)
    154134    {
    155         m_node = node;
    156         m_useCount = useCount;
    157         m_registerFormat = DataFormatStorage;
    158         m_spillFormat = DataFormatNone;
    159         m_canFill = false;
    160         u.gpr = gpr;
    161         m_bornForOSR = false;
    162         m_isConstant = false;
    163         ASSERT(m_useCount);
     135        initGPR(node, useCount, gpr, DataFormatStorage);
    164136    }
    165137
     
    305277        m_canFill = false;
    306278    }
     279   
     280    void fillGPR(VariableEventStream& stream, GPRReg gpr, DataFormat format)
     281    {
     282        ASSERT(gpr != InvalidGPRReg);
     283        m_registerFormat = format;
     284        u.gpr = gpr;
     285        if (m_bornForOSR)
     286            appendFill(Fill, stream);
     287    }
    307288
    308289    // Record that this value is filled into machine registers,
     
    312293    {
    313294        ASSERT(format & DataFormatJS);
    314         m_registerFormat = format;
    315         u.gpr = gpr;
    316        
    317         if (m_bornForOSR)
    318             appendFill(Fill, stream);
     295        fillGPR(stream, gpr, format);
    319296    }
    320297#elif USE(JSVALUE32_64)
     
    331308    void fillCell(VariableEventStream& stream, GPRReg gpr)
    332309    {
    333         m_registerFormat = DataFormatCell;
    334         u.gpr = gpr;
    335        
    336         if (m_bornForOSR)
    337             appendFill(Fill, stream);
     310        fillGPR(stream, gpr, DataFormatCell);
    338311    }
    339312#endif
    340313    void fillInt32(VariableEventStream& stream, GPRReg gpr)
    341314    {
    342         m_registerFormat = DataFormatInt32;
    343         u.gpr = gpr;
    344        
    345         if (m_bornForOSR)
    346             appendFill(Fill, stream);
     315        fillGPR(stream, gpr, DataFormatInt32);
    347316    }
    348317    void fillBoolean(VariableEventStream& stream, GPRReg gpr)
    349318    {
    350         m_registerFormat = DataFormatBoolean;
    351         u.gpr = gpr;
    352        
    353         if (m_bornForOSR)
    354             appendFill(Fill, stream);
     319        fillGPR(stream, gpr, DataFormatBoolean);
    355320    }
    356321    void fillDouble(VariableEventStream& stream, FPRReg fpr)
     
    365330    void fillStorage(VariableEventStream& stream, GPRReg gpr)
    366331    {
    367         m_registerFormat = DataFormatStorage;
    368         u.gpr = gpr;
    369        
    370         if (m_bornForOSR)
    371             appendFill(Fill, stream);
     332        fillGPR(stream, gpr, DataFormatStorage);
    372333    }
    373334
Note: See TracChangeset for help on using the changeset viewer.