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)
