Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: vm/locations.h

Issue 10443013: Add support for temp locations and port Load-/StoreStaticField to use locations. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 #ifndef VM_LOCATIONS_H_ 5 #ifndef VM_LOCATIONS_H_
6 #define VM_LOCATIONS_H_ 6 #define VM_LOCATIONS_H_
7 7
8 #include "vm/allocation.h" 8 #include "vm/allocation.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/bitfield.h" 10 #include "vm/bitfield.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 typedef BitField<Policy, 0, 1> PolicyField; 90 typedef BitField<Policy, 0, 1> PolicyField;
91 91
92 // TODO(vegorov): choose fixed size for this field. 92 // TODO(vegorov): choose fixed size for this field.
93 uword value_; 93 uword value_;
94 }; 94 };
95 95
96 96
97 // Specification of locations for inputs and output. 97 // Specification of locations for inputs and output.
98 class LocationSummary : public ZoneAllocated { 98 class LocationSummary : public ZoneAllocated {
99 public: 99 public:
100 explicit LocationSummary(intptr_t count) 100 LocationSummary(intptr_t input_count, intptr_t temp_count)
101 : input_locations_(count), output_location_() { 101 : input_locations_(input_count),
102 for (intptr_t i = 0; i < count; i++) { 102 temp_locations_(temp_count),
103 output_location_() {
104 for (intptr_t i = 0; i < input_count; i++) {
103 input_locations_.Add(Location()); 105 input_locations_.Add(Location());
104 } 106 }
107 for (intptr_t i = 0; i < temp_count; i++) {
108 temp_locations_.Add(Location());
109 }
105 } 110 }
106 111
107 intptr_t count() const { 112 intptr_t input_count() const {
108 return input_locations_.length(); 113 return input_locations_.length();
109 } 114 }
110 115
111 Location in(intptr_t index) const { 116 Location in(intptr_t index) const {
112 return input_locations_[index]; 117 return input_locations_[index];
113 } 118 }
114 119
115 void set_in(intptr_t index, Location loc) { 120 void set_in(intptr_t index, Location loc) {
116 input_locations_[index] = loc; 121 input_locations_[index] = loc;
117 } 122 }
118 123
124 intptr_t temp_count() const {
125 return temp_locations_.length();
126 }
127
128 Location temp(intptr_t index) const {
129 return temp_locations_[index];
130 }
131
132 void set_temp(intptr_t index, Location loc) {
133 temp_locations_[index] = loc;
134 }
135
119 Location out() const { 136 Location out() const {
120 return output_location_; 137 return output_location_;
121 } 138 }
122 139
123 void set_out(Location loc) { 140 void set_out(Location loc) {
124 output_location_ = loc; 141 output_location_ = loc;
125 } 142 }
126 143
127 // Perform a greedy local register allocation. Consider all register free. 144 // Perform a greedy local register allocation. Consider all register free.
128 void AllocateRegisters(); 145 void AllocateRegisters();
129 146
130 private: 147 private:
131 // TODO(vegorov): replace with ZoneArray. 148 // TODO(vegorov): replace with ZoneArray.
132 GrowableArray<Location> input_locations_; 149 GrowableArray<Location> input_locations_;
150 GrowableArray<Location> temp_locations_;
133 Location output_location_; 151 Location output_location_;
134 }; 152 };
135 153
136 154
137 } // namespace dart 155 } // namespace dart
138 156
139 #endif // VM_LOCATIONS_H_ 157 #endif // VM_LOCATIONS_H_
OLDNEW
« no previous file with comments | « vm/intermediate_language_x64.cc ('k') | vm/locations.cc » ('j') | vm/locations.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698