Index: runtime/vm/intermediate_language_arm64.cc |
diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc |
index d6b87182bb81156cf3b1faa4d740b4f5f5465ac3..a26030244a92bae2e97bd595740efed05ece7b92 100644 |
--- a/runtime/vm/intermediate_language_arm64.cc |
+++ b/runtime/vm/intermediate_language_arm64.cc |
@@ -222,22 +222,19 @@ void ClosureCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
__ LoadImmediate(R5, 0, PP); |
__ AddImmediate(R2, R2, Instructions::HeaderSize() - kHeapObjectTag, PP); |
__ blr(R2); |
- compiler->AddCurrentDescriptor(RawPcDescriptors::kClosureCall, |
- deopt_id(), |
- token_pos()); |
compiler->RecordSafepoint(locs()); |
// Marks either the continuation point in unoptimized code or the |
// deoptimization point in optimized code, after call. |
const intptr_t deopt_id_after = Isolate::ToDeoptAfter(deopt_id()); |
if (compiler->is_optimizing()) { |
compiler->AddDeoptIndexAtCall(deopt_id_after, token_pos()); |
- } else { |
- // Add deoptimization continuation point after the call and before the |
- // arguments are removed. |
- compiler->AddCurrentDescriptor(RawPcDescriptors::kDeopt, |
- deopt_id_after, |
- token_pos()); |
} |
+ // Add deoptimization continuation point after the call and before the |
+ // arguments are removed. |
+ // In optimized code this descriptor is needed for exception handling. |
+ compiler->AddCurrentDescriptor(RawPcDescriptors::kDeopt, |
+ deopt_id_after, |
+ token_pos()); |
__ Drop(argument_count); |
} |