Index: runtime/vm/deferred_objects.cc |
diff --git a/runtime/vm/deferred_objects.cc b/runtime/vm/deferred_objects.cc |
index a647af1768a356b2db103551cd94df8463f4cd59..6aac45a6c392a200830157eb44d2c61baadb3381 100644 |
--- a/runtime/vm/deferred_objects.cc |
+++ b/runtime/vm/deferred_objects.cc |
@@ -161,11 +161,7 @@ void DeferredPcMarker::Materialize(DeoptContext* deopt_context) { |
uword* dest_addr = reinterpret_cast<uword*>(slot()); |
Function& function = Function::Handle(zone); |
function ^= deopt_context->ObjectAt(index_); |
- if (function.IsNull()) { |
- // Callee's PC marker is not used (pc of Deoptimize stub). Set to 0. |
- *dest_addr = 0; |
- return; |
- } |
+ ASSERT(!function.IsNull()); |
const Error& error = Error::Handle(zone, |
Compiler::EnsureUnoptimizedCode(thread, function)); |
if (!error.IsNull()) { |
@@ -174,9 +170,7 @@ void DeferredPcMarker::Materialize(DeoptContext* deopt_context) { |
const Code& code = Code::Handle(zone, function.unoptimized_code()); |
ASSERT(!code.IsNull()); |
ASSERT(function.HasCode()); |
- const intptr_t pc_marker = |
- code.EntryPoint() + Assembler::EntryPointToPcMarkerOffset(); |
- *dest_addr = pc_marker; |
+ *reinterpret_cast<RawObject**>(dest_addr) = code.raw(); |
if (FLAG_trace_deoptimization_verbose) { |
OS::PrintErr("materializing pc marker at 0x%" Px ": %s, %s\n", |