Index: runtime/vm/deopt_instructions.cc |
diff --git a/runtime/vm/deopt_instructions.cc b/runtime/vm/deopt_instructions.cc |
index d6e2568a9856fe51b78a38b57cc1319986d4f4ac..2632261a0fb63083396aeadc3cf63592c8aff99e 100644 |
--- a/runtime/vm/deopt_instructions.cc |
+++ b/runtime/vm/deopt_instructions.cc |
@@ -651,7 +651,13 @@ class DeoptPcMarkerInstr : public DeoptInstr { |
} |
void Execute(DeoptContext* deopt_context, intptr_t* dest_addr) { |
- *dest_addr = Smi::RawValue(0); |
+ Function& function = Function::Handle(deopt_context->zone()); |
+ function ^= deopt_context->ObjectAt(object_table_index_); |
+ if (function.IsNull()) { |
+ // Callee's PC marker is not used (pc of Deoptimize stub). Set to 0. |
+ *dest_addr = Smi::RawValue(0); |
+ return; |
+ } |
deopt_context->DeferPcMarkerMaterialization( |
object_table_index_, dest_addr); |
} |