| Index: runtime/vm/flow_graph_compiler_x64.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_compiler_x64.cc (revision 13457)
|
| +++ runtime/vm/flow_graph_compiler_x64.cc (working copy)
|
| @@ -43,21 +43,6 @@
|
|
|
| ASSERT(deoptimization_env() != NULL);
|
|
|
| - if (compiler->IsLeaf()) {
|
| - __ Comment("Leaf method, lazy PC marker setup");
|
| - // TODO(srdjan): Can we use TMP instead of RAX? We must guarantee that
|
| - // TMP is never part of deoptimization environment.
|
| - __ pushq(RAX); // Preserve RAX.
|
| - Label L;
|
| - __ call(&L);
|
| - const intptr_t offset = assem->CodeSize();
|
| - __ Bind(&L);
|
| - __ popq(RAX);
|
| - __ subq(RAX,
|
| - Immediate(offset - AssemblerMacros::kOffsetOfSavedPCfromEntrypoint));
|
| - __ movq(Address(RBP, -kWordSize), RAX);
|
| - __ popq(RAX); // Restore RAX.
|
| - }
|
| __ call(&StubCode::DeoptimizeLabel());
|
| set_pc_offset(assem->CodeSize());
|
| __ int3();
|
| @@ -831,7 +816,6 @@
|
| Isolate::kNoDeoptId,
|
| 0); // No token position.
|
| } else {
|
| - ASSERT(!IsLeaf());
|
| // Invoke noSuchMethod function.
|
| const int kNumArgsChecked = 1;
|
| ICData& ic_data = ICData::ZoneHandle();
|
| @@ -940,11 +924,7 @@
|
| const int num_copied_params = parsed_function().num_copied_params();
|
| const int num_locals = parsed_function().num_stack_locals();
|
| __ Comment("Enter frame");
|
| - if (IsLeaf()) {
|
| - AssemblerMacros::EnterDartLeafFrame(assembler(), (StackSize() * kWordSize));
|
| - } else {
|
| - AssemblerMacros::EnterDartFrame(assembler(), (StackSize() * kWordSize));
|
| - }
|
| + AssemblerMacros::EnterDartFrame(assembler(), (StackSize() * kWordSize));
|
|
|
| // For optimized code, keep a bitmap of the frame in order to build
|
| // stackmaps for GC safepoints in the prologue.
|
| @@ -1049,7 +1029,6 @@
|
| const ExternalLabel* label,
|
| PcDescriptors::Kind kind,
|
| LocationSummary* locs) {
|
| - ASSERT(!IsLeaf());
|
| __ call(label);
|
| AddCurrentDescriptor(kind, Isolate::kNoDeoptId, token_pos);
|
| RecordSafepoint(locs);
|
| @@ -1061,7 +1040,6 @@
|
| const ExternalLabel* label,
|
| PcDescriptors::Kind kind,
|
| LocationSummary* locs) {
|
| - ASSERT(!IsLeaf());
|
| __ call(label);
|
| AddCurrentDescriptor(kind, deopt_id, token_pos);
|
| RecordSafepoint(locs);
|
| @@ -1082,7 +1060,6 @@
|
| void FlowGraphCompiler::GenerateCallRuntime(intptr_t token_pos,
|
| const RuntimeEntry& entry,
|
| LocationSummary* locs) {
|
| - ASSERT(!IsLeaf());
|
| __ CallRuntime(entry);
|
| AddCurrentDescriptor(PcDescriptors::kOther, Isolate::kNoDeoptId, token_pos);
|
| RecordSafepoint(locs);
|
| @@ -1096,7 +1073,6 @@
|
| intptr_t deopt_id,
|
| intptr_t token_pos,
|
| LocationSummary* locs) {
|
| - ASSERT(!IsLeaf());
|
| __ LoadObject(RBX, ic_data);
|
| __ LoadObject(R10, arguments_descriptor);
|
| GenerateDartCall(deopt_id,
|
| @@ -1114,7 +1090,6 @@
|
| intptr_t deopt_id,
|
| intptr_t token_pos,
|
| LocationSummary* locs) {
|
| - ASSERT(!IsLeaf());
|
| __ LoadObject(RBX, function);
|
| __ LoadObject(R10, arguments_descriptor);
|
| if (function.HasCode()) {
|
|
|