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)