| 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",
|
|
|