[vm, dbc] Remove bad assert from DBC deoptimization.
DBC's "FPU registers" are in fact stack slots.
Bug: https://github.com/dart-lang/sdk/issues/35395
Change-Id: I64f90f29b55f3f9bb0fec863e1a13c651f364ee7
Reviewed-on: https://dart-review.googlesource.com/c/87271
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
diff --git a/runtime/vm/compiler/assembler/assembler_dbc.cc b/runtime/vm/compiler/assembler/assembler_dbc.cc
index 3465c38..a7643b6 100644
--- a/runtime/vm/compiler/assembler/assembler_dbc.cc
+++ b/runtime/vm/compiler/assembler/assembler_dbc.cc
@@ -75,6 +75,10 @@
return Thread::Current()->zone()->PrintToString("R%d", reg);
}
+const char* Assembler::FpuRegisterName(FpuRegister reg) {
+ return Thread::Current()->zone()->PrintToString("F%d", reg);
+}
+
static int32_t EncodeJump(int32_t relative_pc) {
return SimulatorBytecode::kJump | (relative_pc << 8);
}
diff --git a/runtime/vm/compiler/assembler/assembler_dbc.h b/runtime/vm/compiler/assembler/assembler_dbc.h
index 09a5aa1..9787191 100644
--- a/runtime/vm/compiler/assembler/assembler_dbc.h
+++ b/runtime/vm/compiler/assembler/assembler_dbc.h
@@ -45,7 +45,7 @@
static const char* RegisterName(Register reg);
- static const char* FpuRegisterName(FpuRegister reg) { return "?"; }
+ static const char* FpuRegisterName(FpuRegister reg);
static uword GetBreakInstructionFiller() { return SimulatorBytecode::kTrap; }
diff --git a/runtime/vm/deopt_instructions.h b/runtime/vm/deopt_instructions.h
index e2096b6..9270768 100644
--- a/runtime/vm/deopt_instructions.h
+++ b/runtime/vm/deopt_instructions.h
@@ -97,9 +97,9 @@
double FpuRegisterValue(FpuRegister reg) const {
ASSERT(FlowGraphCompiler::SupportsUnboxedDoubles());
+#if !defined(TARGET_ARCH_DBC)
ASSERT(fpu_registers_ != NULL);
ASSERT(reg >= 0);
-#if !defined(TARGET_ARCH_DBC)
ASSERT(reg < kNumberOfFpuRegisters);
return *reinterpret_cast<double*>(&fpu_registers_[reg]);
#else