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):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index 3351f4a..5da62fa 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,17 @@
+2019-10-16  Keith Miller  <keith_miller@apple.com>
+
+        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):
+
 2019-10-16  Paulo Matos  <pmatos@igalia.com> and Caio Lima  <ticaiolima@gmail.com>
 
         Invalid instruction generated for ARM_THUMB2 in llint
diff --git a/Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp b/Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp
index ea2c7cc..c1e1300 100644
--- a/Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp
+++ b/Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp
@@ -47,30 +47,31 @@
 
 ALWAYS_INLINE void GenerateAndAllocateRegisters::checkConsistency()
 {
-#if !ASSERT_DISABLED
-    m_code.forEachTmp([&] (Tmp tmp) {
-        Reg reg = m_map[tmp].reg;
-        if (!reg)
-            return;
+    // This isn't exactly the right option for this but adding a new one for just this seems silly.
+    if (Options::validateGraph() || Options::validateGraphAtEachPhase()) {
+        m_code.forEachTmp([&] (Tmp tmp) {
+            Reg reg = m_map[tmp].reg;
+            if (!reg)
+                return;
 
-        ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
-        ASSERT(m_currentAllocation->at(reg) == tmp);
-    });
+            ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
+            ASSERT(m_currentAllocation->at(reg) == tmp);
+        });
 
-    for (Reg reg : RegisterSet::allRegisters()) {
-        if (isDisallowedRegister(reg))
-            continue;
+        for (Reg reg : RegisterSet::allRegisters()) {
+            if (isDisallowedRegister(reg))
+                continue;
 
-        Tmp tmp = m_currentAllocation->at(reg);
-        if (!tmp) {
-            ASSERT(m_availableRegs[bankForReg(reg)].contains(reg));
-            continue;
+            Tmp tmp = m_currentAllocation->at(reg);
+            if (!tmp) {
+                ASSERT(m_availableRegs[bankForReg(reg)].contains(reg));
+                continue;
+            }
+
+            ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
+            ASSERT(m_map[tmp].reg == reg);
         }
-
-        ASSERT(!m_availableRegs[tmp.bank()].contains(reg));
-        ASSERT(m_map[tmp].reg == reg);
     }
-#endif
 }
 
 void GenerateAndAllocateRegisters::buildLiveRanges(UnifiedTmpLiveness& liveness)