Index: runtime/vm/code_generator.cc |
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc |
index 1d73b6b92011594142bb95f3c69e3973ea702025..17b094b2c867b2eead4bde9cb2f6ecb56c429876 100644 |
--- a/runtime/vm/code_generator.cc |
+++ b/runtime/vm/code_generator.cc |
@@ -1935,30 +1935,6 @@ void DeoptimizeAt(const Code& optimized_code, StackFrame* frame) { |
function.SwitchToUnoptimizedCode(); |
} |
-#if defined(TARGET_ARCH_DBC) |
- const Instructions& instrs = |
- Instructions::Handle(zone, optimized_code.instructions()); |
- { |
- WritableInstructionsScope writable(instrs.PayloadStart(), instrs.Size()); |
- CodePatcher::InsertDeoptimizationCallAt(frame->pc()); |
- if (FLAG_trace_patching) { |
- const String& name = String::Handle(function.name()); |
- OS::PrintErr("InsertDeoptimizationCallAt: 0x%" Px " for %s\n", |
- frame->pc(), name.ToCString()); |
- } |
- const ExceptionHandlers& handlers = |
- ExceptionHandlers::Handle(zone, optimized_code.exception_handlers()); |
- ExceptionHandlerInfo info; |
- for (intptr_t i = 0; i < handlers.num_entries(); ++i) { |
- handlers.GetHandlerInfo(i, &info); |
- const uword patch_pc = instrs.PayloadStart() + info.handler_pc_offset; |
- CodePatcher::InsertDeoptimizationCallAt(patch_pc); |
- if (FLAG_trace_patching) { |
- OS::PrintErr(" at handler 0x%" Px "\n", patch_pc); |
- } |
- } |
- } |
-#else // !DBC |
if (frame->IsMarkedForLazyDeopt()) { |
// Deopt already scheduled. |
if (FLAG_trace_deoptimization) { |
@@ -1982,7 +1958,6 @@ void DeoptimizeAt(const Code& optimized_code, StackFrame* frame) { |
frame->fp(), deopt_pc); |
} |
} |
-#endif // !DBC |
// Mark code as dead (do not GC its embedded objects). |
optimized_code.set_is_alive(false); |
@@ -2080,7 +2055,6 @@ DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, |
is_lazy_deopt ? "lazy-deopt" : ""); |
} |
-#if !defined(TARGET_ARCH_DBC) |
if (is_lazy_deopt) { |
uword deopt_pc = isolate->FindPendingDeopt(caller_frame->fp()); |
if (FLAG_trace_deoptimization) { |
@@ -2091,6 +2065,7 @@ DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, |
// N.B.: Update frame before updating pending deopt table. The profiler |
// may attempt a stack walk in between. |
caller_frame->set_pc(deopt_pc); |
+ ASSERT(!caller_frame->IsMarkedForLazyDeopt()); |
ASSERT(caller_frame->pc() == deopt_pc); |
ASSERT(optimized_code.ContainsInstructionAt(caller_frame->pc())); |
isolate->ClearPendingDeoptsAtOrBelow(caller_frame->fp()); |
@@ -2100,7 +2075,6 @@ DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, |
caller_frame->pc()); |
} |
} |
-#endif // !DBC |
// Copy the saved registers from the stack. |
fpu_register_t* fpu_registers; |