| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_XXX. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_XXX. |
| 6 | 6 |
| 7 #include "vm/flow_graph_compiler.h" | 7 #include "vm/flow_graph_compiler.h" |
| 8 | 8 |
| 9 #include "vm/cha.h" | 9 #include "vm/cha.h" |
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 | 731 |
| 732 // Block all non-free registers. | 732 // Block all non-free registers. |
| 733 for (intptr_t i = 0; i < kFirstFreeCpuRegister; i++) { | 733 for (intptr_t i = 0; i < kFirstFreeCpuRegister; i++) { |
| 734 blocked_registers[i] = true; | 734 blocked_registers[i] = true; |
| 735 } | 735 } |
| 736 for (intptr_t i = kLastFreeCpuRegister + 1; i < kNumberOfCpuRegisters; i++) { | 736 for (intptr_t i = kLastFreeCpuRegister + 1; i < kNumberOfCpuRegisters; i++) { |
| 737 blocked_registers[i] = true; | 737 blocked_registers[i] = true; |
| 738 } | 738 } |
| 739 | 739 |
| 740 // Allocate all unallocated input locations. | 740 // Allocate all unallocated input locations. |
| 741 const bool should_pop = !instr->IsPushArgument(); | 741 const bool should_pop = !instr->IsPushArgument() && !instr->IsPushTemp(); |
| 742 for (intptr_t i = locs->input_count() - 1; i >= 0; i--) { | 742 for (intptr_t i = locs->input_count() - 1; i >= 0; i--) { |
| 743 Location loc = locs->in(i); | 743 Location loc = locs->in(i); |
| 744 Register reg = kNoRegister; | 744 Register reg = kNoRegister; |
| 745 if (loc.IsRegister()) { | 745 if (loc.IsRegister()) { |
| 746 reg = loc.reg(); | 746 reg = loc.reg(); |
| 747 } else if (loc.IsUnallocated() || loc.IsConstant()) { | 747 } else if (loc.IsUnallocated() || loc.IsConstant()) { |
| 748 ASSERT(loc.IsConstant() || | 748 ASSERT(loc.IsConstant() || |
| 749 ((loc.policy() == Location::kRequiresRegister) || | 749 ((loc.policy() == Location::kRequiresRegister) || |
| 750 (loc.policy() == Location::kWritableRegister) || | 750 (loc.policy() == Location::kWritableRegister) || |
| 751 (loc.policy() == Location::kAny))); | 751 (loc.policy() == Location::kAny))); |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1081 | 1081 |
| 1082 for (int i = 0; i < len; i++) { | 1082 for (int i = 0; i < len; i++) { |
| 1083 sorted->Add(CidTarget(ic_data.GetReceiverClassIdAt(i), | 1083 sorted->Add(CidTarget(ic_data.GetReceiverClassIdAt(i), |
| 1084 &Function::ZoneHandle(ic_data.GetTargetAt(i)), | 1084 &Function::ZoneHandle(ic_data.GetTargetAt(i)), |
| 1085 ic_data.GetCountAt(i))); | 1085 ic_data.GetCountAt(i))); |
| 1086 } | 1086 } |
| 1087 sorted->Sort(HighestCountFirst); | 1087 sorted->Sort(HighestCountFirst); |
| 1088 } | 1088 } |
| 1089 | 1089 |
| 1090 } // namespace dart | 1090 } // namespace dart |
| OLD | NEW |