Index: runtime/vm/intermediate_language_x64.cc |
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc |
index a7bad0ae93136a7c569365d3d94ff6d3a4c3ca1d..830df847bc4a9f25b94238128a8c2bcbe8c5f3dd 100644 |
--- a/runtime/vm/intermediate_language_x64.cc |
+++ b/runtime/vm/intermediate_language_x64.cc |
@@ -6364,22 +6364,19 @@ void ClosureCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
__ xorq(RBX, RBX); |
__ addq(RCX, Immediate(Instructions::HeaderSize() - kHeapObjectTag)); |
__ call(RCX); |
- 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); |
} |