Index: runtime/vm/intermediate_language_ia32.cc |
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc |
index e88e35ef2324ae3343c185b6dd8919f568f2a2ef..a4c8d4153c11f06172889a1a6fecd1ac62c7ba01 100644 |
--- a/runtime/vm/intermediate_language_ia32.cc |
+++ b/runtime/vm/intermediate_language_ia32.cc |
@@ -6787,22 +6787,19 @@ void ClosureCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
__ xorl(ECX, ECX); |
__ addl(EBX, Immediate(Instructions::HeaderSize() - kHeapObjectTag)); |
__ call(EBX); |
- 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); |
} |