Index: runtime/vm/deferred_objects.cc |
diff --git a/runtime/vm/deferred_objects.cc b/runtime/vm/deferred_objects.cc |
index 7a0b08e975e51c610d0695c14fdf2e6b0db351cd..a647af1768a356b2db103551cd94df8463f4cd59 100644 |
--- a/runtime/vm/deferred_objects.cc |
+++ b/runtime/vm/deferred_objects.cc |
@@ -161,8 +161,11 @@ void DeferredPcMarker::Materialize(DeoptContext* deopt_context) { |
uword* dest_addr = reinterpret_cast<uword*>(slot()); |
Function& function = Function::Handle(zone); |
function ^= deopt_context->ObjectAt(index_); |
- // Null case is already handled in DeoptPcMarkerInstr::Execute. |
- ASSERT(!function.IsNull()); |
+ if (function.IsNull()) { |
+ // Callee's PC marker is not used (pc of Deoptimize stub). Set to 0. |
+ *dest_addr = 0; |
+ return; |
+ } |
const Error& error = Error::Handle(zone, |
Compiler::EnsureUnoptimizedCode(thread, function)); |
if (!error.IsNull()) { |