Changeset 251208 in webkit for trunk/Source/JavaScriptCore/b3


Ignore:
Timestamp:
Oct 16, 2019, 2:49:16 PM (6 years ago)
Author:
[email protected]
Message:

checkConsistency in Air O0 should only run when validation is enabled
https://bugs.webkit.org/show_bug.cgi?id=203050

Reviewed by Saam Barati.

I resued the validateGraph and validateGraphAtEachPhase options
because adding a new option and threading it through all our
testing infrastructure didn't seem worthwhile for this.

  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:

(JSC::B3::Air::GenerateAndAllocateRegisters::checkConsistency):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp

    r250999 r251208  
    4848ALWAYS_INLINE void GenerateAndAllocateRegisters::checkConsistency()
    4949{
    50 #if !ASSERT_DISABLED
    51     m_code.forEachTmp([&] (Tmp tmp) {
    52         Reg reg = m_map[tmp].reg;
    53         if (!reg)
    54             return;
    55 
    56         ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
    57         ASSERT(m_currentAllocation->at(reg) == tmp);
    58     });
    59 
    60     for (Reg reg : RegisterSet::allRegisters()) {
    61         if (isDisallowedRegister(reg))
    62             continue;
    63 
    64         Tmp tmp = m_currentAllocation->at(reg);
    65         if (!tmp) {
    66             ASSERT(m_availableRegs[bankForReg(reg)].contains(reg));
    67             continue;
    68         }
    69 
    70         ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
    71         ASSERT(m_map[tmp].reg == reg);
    72     }
    73 #endif
     50    // This isn't exactly the right option for this but adding a new one for just this seems silly.
     51    if (Options::validateGraph() || Options::validateGraphAtEachPhase()) {
     52        m_code.forEachTmp([&] (Tmp tmp) {
     53            Reg reg = m_map[tmp].reg;
     54            if (!reg)
     55                return;
     56
     57            ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
     58            ASSERT(m_currentAllocation->at(reg) == tmp);
     59        });
     60
     61        for (Reg reg : RegisterSet::allRegisters()) {
     62            if (isDisallowedRegister(reg))
     63                continue;
     64
     65            Tmp tmp = m_currentAllocation->at(reg);
     66            if (!tmp) {
     67                ASSERT(m_availableRegs[bankForReg(reg)].contains(reg));
     68                continue;
     69            }
     70
     71            ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
     72            ASSERT(m_map[tmp].reg == reg);
     73        }
     74    }
    7475}
    7576
Note: See TracChangeset for help on using the changeset viewer.