Index: runtime/vm/code_generator.cc |
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc |
index ee94ebf41da46e44c1330508d723768199ab094c..6bfbdb8158e818cc13aa4517f7602d438c824626 100644 |
--- a/runtime/vm/code_generator.cc |
+++ b/runtime/vm/code_generator.cc |
@@ -2020,20 +2020,22 @@ void DeoptimizeAt(const Code& optimized_code, uword pc) { |
} |
// Patch call site (lazy deoptimization is quite rare, patching it twice |
// is not a performance issue). |
- uword lazy_deopt_jump = optimized_code.GetLazyDeoptPc(); |
+ uword lazy_deopt_jump_return = optimized_code.GetLazyDeoptReturnPc(); |
+ uword lazy_deopt_jump_throw = optimized_code.GetLazyDeoptThrowPc(); |
#if !defined(TARGET_ARCH_DBC) |
- ASSERT(lazy_deopt_jump != 0); |
+ ASSERT(lazy_deopt_jump_return != 0); |
+ ASSERT(lazy_deopt_jump_throw != 0); |
#endif |
const Instructions& instrs = |
Instructions::Handle(zone, optimized_code.instructions()); |
{ |
WritableInstructionsScope writable(instrs.PayloadStart(), instrs.size()); |
- CodePatcher::InsertDeoptimizationCallAt(pc, lazy_deopt_jump); |
+ CodePatcher::InsertDeoptimizationCallAt(pc, lazy_deopt_jump_return); |
if (FLAG_trace_patching) { |
const String& name = String::Handle(function.name()); |
OS::PrintErr( |
"InsertDeoptimizationCallAt: 0x%" Px " to 0x%" Px " for %s\n", |
- pc, lazy_deopt_jump, name.ToCString()); |
+ pc, lazy_deopt_jump_return, name.ToCString()); |
} |
const ExceptionHandlers& handlers = |
ExceptionHandlers::Handle(zone, optimized_code.exception_handlers()); |
@@ -2041,7 +2043,7 @@ void DeoptimizeAt(const Code& optimized_code, uword pc) { |
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, lazy_deopt_jump); |
+ CodePatcher::InsertDeoptimizationCallAt(patch_pc, lazy_deopt_jump_throw); |
if (FLAG_trace_patching) { |
OS::PrintErr(" at handler 0x%" Px "\n", patch_pc); |
} |