Chromium Code Reviews| Index: runtime/vm/flow_graph_compiler_arm.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_compiler_arm.cc (revision 40149) |
| +++ runtime/vm/flow_graph_compiler_arm.cc (working copy) |
| @@ -1103,8 +1103,7 @@ |
| RawPcDescriptors::Kind kind, |
| LocationSummary* locs) { |
| __ BranchLinkPatchable(label); |
| - AddCurrentDescriptor(kind, Isolate::kNoDeoptId, token_pos); |
| - RecordSafepoint(locs); |
| + RecordCallInfo(token_pos, kind, Isolate::kNoDeoptId, locs, 0); |
| } |
| @@ -1114,19 +1113,7 @@ |
| RawPcDescriptors::Kind kind, |
| LocationSummary* locs) { |
| __ BranchLinkPatchable(label); |
| - AddCurrentDescriptor(kind, deopt_id, token_pos); |
| - 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 (is_optimizing()) { |
| - AddDeoptIndexAtCall(deopt_id_after, token_pos); |
| - } else { |
| - // Add deoptimization continuation point after the call and before the |
| - // arguments are removed. |
| - AddCurrentDescriptor(RawPcDescriptors::kDeopt, |
| - deopt_id_after, token_pos); |
| - } |
| + RecordCallInfo(token_pos, kind, deopt_id, locs, locs->input_count()); |
| } |
| @@ -1136,22 +1123,7 @@ |
| intptr_t argument_count, |
| LocationSummary* locs) { |
| __ CallRuntime(entry, argument_count); |
| - AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id, token_pos); |
| - RecordSafepoint(locs); |
| - if (deopt_id != Isolate::kNoDeoptId) { |
| - // 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 (is_optimizing()) { |
| - AddDeoptIndexAtCall(deopt_id_after, token_pos); |
| - } else { |
| - // Add deoptimization continuation point after the call and before the |
| - // arguments are removed. |
| - AddCurrentDescriptor(RawPcDescriptors::kDeopt, |
| - deopt_id_after, |
| - token_pos); |
| - } |
| - } |
| + RecordCallInfo(token_pos, RawPcDescriptors::kOther, deopt_id, locs, 0); |
|
Vyacheslav Egorov (Google)
2014/09/15 14:35:56
this seems fragile that some of the call instructi
Florian Schneider
2014/09/15 15:46:31
I agree - the problem is that deoptimization envir
|
| } |
| @@ -1271,10 +1243,8 @@ |
| __ LoadObject(R4, arguments_descriptor); |
| __ AddImmediate(R1, Instructions::HeaderSize() - kHeapObjectTag); |
| __ blx(R1); |
| - AddCurrentDescriptor(RawPcDescriptors::kOther, |
| - Isolate::kNoDeoptId, token_pos); |
| - RecordSafepoint(locs); |
| - AddDeoptIndexAtCall(Isolate::ToDeoptAfter(deopt_id), token_pos); |
| + RecordCallInfo( |
| + token_pos, RawPcDescriptors::kOther, deopt_id, locs, locs->input_count()); |
| __ Drop(argument_count); |
| } |