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

Side by Side Diff: src/ppc/interface-descriptors-ppc.cc

Issue 571173003: PowerPC specific sub-directories (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remove IBM copyright, update code to later level Created 6 years, 2 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_MIPS64 7 #if V8_TARGET_ARCH_PPC
8 8
9 #include "src/interface-descriptors.h" 9 #include "src/interface-descriptors.h"
10 10
11 namespace v8 { 11 namespace v8 {
12 namespace internal { 12 namespace internal {
13 13
14 const Register CallInterfaceDescriptor::ContextRegister() { return cp; } 14 const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
15 15
16 16
17 const Register LoadDescriptor::ReceiverRegister() { return a1; } 17 const Register LoadDescriptor::ReceiverRegister() { return r4; }
18 const Register LoadDescriptor::NameRegister() { return a2; } 18 const Register LoadDescriptor::NameRegister() { return r5; }
19 19
20 20
21 const Register VectorLoadICTrampolineDescriptor::SlotRegister() { return a0; } 21 const Register VectorLoadICTrampolineDescriptor::SlotRegister() { return r3; }
22 22
23 23
24 const Register VectorLoadICDescriptor::VectorRegister() { return a3; } 24 const Register VectorLoadICDescriptor::VectorRegister() { return r6; }
25 25
26 26
27 const Register StoreDescriptor::ReceiverRegister() { return a1; } 27 const Register StoreDescriptor::ReceiverRegister() { return r4; }
28 const Register StoreDescriptor::NameRegister() { return a2; } 28 const Register StoreDescriptor::NameRegister() { return r5; }
29 const Register StoreDescriptor::ValueRegister() { return a0; } 29 const Register StoreDescriptor::ValueRegister() { return r3; }
30 30
31 31
32 const Register ElementTransitionAndStoreDescriptor::MapRegister() { return a3; } 32 const Register StoreTransitionDescriptor::MapRegister() { return r6; }
33 33
34 34
35 const Register InstanceofDescriptor::left() { return a0; } 35 const Register ElementTransitionAndStoreDescriptor::MapRegister() { return r6; }
36 const Register InstanceofDescriptor::right() { return a1; }
37 36
38 37
39 const Register ArgumentsAccessReadDescriptor::index() { return a1; } 38 const Register InstanceofDescriptor::left() { return r3; }
40 const Register ArgumentsAccessReadDescriptor::parameter_count() { return a0; } 39 const Register InstanceofDescriptor::right() { return r4; }
41 40
42 41
43 const Register ApiGetterDescriptor::function_address() { return a2; } 42 const Register ArgumentsAccessReadDescriptor::index() { return r4; }
43 const Register ArgumentsAccessReadDescriptor::parameter_count() { return r3; }
44 44
45 45
46 const Register MathPowTaggedDescriptor::exponent() { return a2; } 46 const Register ApiGetterDescriptor::function_address() { return r5; }
47
48
49 const Register MathPowTaggedDescriptor::exponent() { return r5; }
47 50
48 51
49 const Register MathPowIntegerDescriptor::exponent() { 52 const Register MathPowIntegerDescriptor::exponent() {
50 return MathPowTaggedDescriptor::exponent(); 53 return MathPowTaggedDescriptor::exponent();
51 } 54 }
52 55
53 56
54 void FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) { 57 void FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) {
55 Register registers[] = {cp, a2}; 58 Register registers[] = {cp, r5};
56 data->Initialize(arraysize(registers), registers, NULL); 59 data->Initialize(arraysize(registers), registers, NULL);
57 } 60 }
58 61
59 62
60 void FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) { 63 void FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) {
61 Register registers[] = {cp, a1}; 64 Register registers[] = {cp, r4};
62 data->Initialize(arraysize(registers), registers, NULL); 65 data->Initialize(arraysize(registers), registers, NULL);
63 } 66 }
64 67
65 68
66 void ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) { 69 void ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) {
67 Register registers[] = {cp, a0}; 70 Register registers[] = {cp, r3};
68 data->Initialize(arraysize(registers), registers, NULL); 71 data->Initialize(arraysize(registers), registers, NULL);
69 } 72 }
70 73
71 74
72 void NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) { 75 void NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) {
73 Register registers[] = {cp, a0}; 76 Register registers[] = {cp, r3};
74 data->Initialize(arraysize(registers), registers, NULL); 77 data->Initialize(arraysize(registers), registers, NULL);
75 } 78 }
76 79
77 80
78 void FastCloneShallowArrayDescriptor::Initialize( 81 void FastCloneShallowArrayDescriptor::Initialize(
79 CallInterfaceDescriptorData* data) { 82 CallInterfaceDescriptorData* data) {
80 Register registers[] = {cp, a3, a2, a1}; 83 Register registers[] = {cp, r6, r5, r4};
81 Representation representations[] = { 84 Representation representations[] = {
82 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), 85 Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
83 Representation::Tagged()}; 86 Representation::Tagged()};
84 data->Initialize(arraysize(registers), registers, representations); 87 data->Initialize(arraysize(registers), registers, representations);
85 } 88 }
86 89
87 90
88 void FastCloneShallowObjectDescriptor::Initialize( 91 void FastCloneShallowObjectDescriptor::Initialize(
89 CallInterfaceDescriptorData* data) { 92 CallInterfaceDescriptorData* data) {
90 Register registers[] = {cp, a3, a2, a1, a0}; 93 Register registers[] = {cp, r6, r5, r4, r3};
91 data->Initialize(arraysize(registers), registers, NULL); 94 data->Initialize(arraysize(registers), registers, NULL);
92 } 95 }
93 96
94 97
95 void CreateAllocationSiteDescriptor::Initialize( 98 void CreateAllocationSiteDescriptor::Initialize(
96 CallInterfaceDescriptorData* data) { 99 CallInterfaceDescriptorData* data) {
97 Register registers[] = {cp, a2, a3}; 100 Register registers[] = {cp, r5, r6};
98 data->Initialize(arraysize(registers), registers, NULL); 101 data->Initialize(arraysize(registers), registers, NULL);
99 } 102 }
100 103
101 104
102 void StoreArrayLiteralElementDescriptor::Initialize( 105 void StoreArrayLiteralElementDescriptor::Initialize(
103 CallInterfaceDescriptorData* data) { 106 CallInterfaceDescriptorData* data) {
104 Register registers[] = {cp, a3, a0}; 107 Register registers[] = {cp, r6, r3};
108 data->Initialize(arraysize(registers), registers, NULL);
109 }
110
111
112 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
113 Register registers[] = {cp, r4};
105 data->Initialize(arraysize(registers), registers, NULL); 114 data->Initialize(arraysize(registers), registers, NULL);
106 } 115 }
107 116
108 117
109 void CallFunctionWithFeedbackDescriptor::Initialize( 118 void CallFunctionWithFeedbackDescriptor::Initialize(
110 CallInterfaceDescriptorData* data) { 119 CallInterfaceDescriptorData* data) {
111 Register registers[] = {cp, a1, a3}; 120 Register registers[] = {cp, r4, r6};
112 Representation representations[] = {Representation::Tagged(), 121 Representation representations[] = {Representation::Tagged(),
113 Representation::Tagged(), 122 Representation::Tagged(),
114 Representation::Smi()}; 123 Representation::Smi()};
115 data->Initialize(arraysize(registers), registers, representations); 124 data->Initialize(arraysize(registers), registers, representations);
116 } 125 }
117 126
118 127
119 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
120 Register registers[] = {cp, a1};
121 data->Initialize(arraysize(registers), registers, NULL);
122 }
123
124
125 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) { 128 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) {
126 // a0 : number of arguments 129 // r3 : number of arguments
127 // a1 : the function to call 130 // r4 : the function to call
128 // a2 : feedback vector 131 // r5 : feedback vector
129 // a3 : (only if a2 is not the megamorphic symbol) slot in feedback 132 // r6 : (only if r5 is not the megamorphic symbol) slot in feedback
130 // vector (Smi) 133 // vector (Smi)
131 // TODO(turbofan): So far we don't gather type feedback and hence skip the 134 // TODO(turbofan): So far we don't gather type feedback and hence skip the
132 // slot parameter, but ArrayConstructStub needs the vector to be undefined. 135 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
133 Register registers[] = {cp, a0, a1, a2}; 136 Register registers[] = {cp, r3, r4, r5};
134 data->Initialize(arraysize(registers), registers, NULL); 137 data->Initialize(arraysize(registers), registers, NULL);
135 } 138 }
136 139
137 140
138 void RegExpConstructResultDescriptor::Initialize( 141 void RegExpConstructResultDescriptor::Initialize(
139 CallInterfaceDescriptorData* data) { 142 CallInterfaceDescriptorData* data) {
140 Register registers[] = {cp, a2, a1, a0}; 143 Register registers[] = {cp, r5, r4, r3};
141 data->Initialize(arraysize(registers), registers, NULL); 144 data->Initialize(arraysize(registers), registers, NULL);
142 } 145 }
143 146
144 147
145 void TransitionElementsKindDescriptor::Initialize( 148 void TransitionElementsKindDescriptor::Initialize(
146 CallInterfaceDescriptorData* data) { 149 CallInterfaceDescriptorData* data) {
147 Register registers[] = {cp, a0, a1}; 150 Register registers[] = {cp, r3, r4};
148 data->Initialize(arraysize(registers), registers, NULL); 151 data->Initialize(arraysize(registers), registers, NULL);
149 } 152 }
150 153
151 154
152 void ArrayConstructorConstantArgCountDescriptor::Initialize( 155 void ArrayConstructorConstantArgCountDescriptor::Initialize(
153 CallInterfaceDescriptorData* data) { 156 CallInterfaceDescriptorData* data) {
154 // register state 157 // register state
155 // cp -- context 158 // cp -- context
156 // a0 -- number of arguments 159 // r3 -- number of arguments
157 // a1 -- function 160 // r4 -- function
158 // a2 -- allocation site with elements kind 161 // r5 -- allocation site with elements kind
159 Register registers[] = {cp, a1, a2}; 162 Register registers[] = {cp, r4, r5};
160 data->Initialize(arraysize(registers), registers, NULL); 163 data->Initialize(arraysize(registers), registers, NULL);
161 } 164 }
162 165
163 166
164 void ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) { 167 void ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
165 // stack param count needs (constructor pointer, and single argument) 168 // stack param count needs (constructor pointer, and single argument)
166 Register registers[] = {cp, a1, a2, a0}; 169 Register registers[] = {cp, r4, r5, r3};
167 Representation representations[] = { 170 Representation representations[] = {
168 Representation::Tagged(), Representation::Tagged(), 171 Representation::Tagged(), Representation::Tagged(),
169 Representation::Tagged(), Representation::Integer32()}; 172 Representation::Tagged(), Representation::Integer32()};
170 data->Initialize(arraysize(registers), registers, representations); 173 data->Initialize(arraysize(registers), registers, representations);
171 } 174 }
172 175
173 176
174 void InternalArrayConstructorConstantArgCountDescriptor::Initialize( 177 void InternalArrayConstructorConstantArgCountDescriptor::Initialize(
175 CallInterfaceDescriptorData* data) { 178 CallInterfaceDescriptorData* data) {
176 // register state 179 // register state
177 // cp -- context 180 // cp -- context
178 // a0 -- number of arguments 181 // r3 -- number of arguments
179 // a1 -- constructor function 182 // r4 -- constructor function
180 Register registers[] = {cp, a1}; 183 Register registers[] = {cp, r4};
181 data->Initialize(arraysize(registers), registers, NULL); 184 data->Initialize(arraysize(registers), registers, NULL);
182 } 185 }
183 186
184 187
185 void InternalArrayConstructorDescriptor::Initialize( 188 void InternalArrayConstructorDescriptor::Initialize(
186 CallInterfaceDescriptorData* data) { 189 CallInterfaceDescriptorData* data) {
187 // stack param count needs (constructor pointer, and single argument) 190 // stack param count needs (constructor pointer, and single argument)
188 Register registers[] = {cp, a1, a0}; 191 Register registers[] = {cp, r4, r3};
189 Representation representations[] = {Representation::Tagged(), 192 Representation representations[] = {Representation::Tagged(),
190 Representation::Tagged(), 193 Representation::Tagged(),
191 Representation::Integer32()}; 194 Representation::Integer32()};
192 data->Initialize(arraysize(registers), registers, representations); 195 data->Initialize(arraysize(registers), registers, representations);
193 } 196 }
194 197
195 198
196 void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { 199 void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
197 Register registers[] = {cp, a0}; 200 Register registers[] = {cp, r3};
198 data->Initialize(arraysize(registers), registers, NULL); 201 data->Initialize(arraysize(registers), registers, NULL);
199 } 202 }
200 203
201 204
202 void ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) { 205 void ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) {
203 Register registers[] = {cp, a0}; 206 Register registers[] = {cp, r3};
204 data->Initialize(arraysize(registers), registers, NULL); 207 data->Initialize(arraysize(registers), registers, NULL);
205 } 208 }
206 209
207 210
208 void BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) { 211 void BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) {
209 Register registers[] = {cp, a1, a0}; 212 Register registers[] = {cp, r4, r3};
210 data->Initialize(arraysize(registers), registers, NULL); 213 data->Initialize(arraysize(registers), registers, NULL);
211 } 214 }
212 215
213 216
214 void BinaryOpWithAllocationSiteDescriptor::Initialize( 217 void BinaryOpWithAllocationSiteDescriptor::Initialize(
215 CallInterfaceDescriptorData* data) { 218 CallInterfaceDescriptorData* data) {
216 Register registers[] = {cp, a2, a1, a0}; 219 Register registers[] = {cp, r5, r4, r3};
217 data->Initialize(arraysize(registers), registers, NULL); 220 data->Initialize(arraysize(registers), registers, NULL);
218 } 221 }
219 222
220 223
221 void StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) { 224 void StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) {
222 Register registers[] = {cp, a1, a0}; 225 Register registers[] = {cp, r4, r3};
223 data->Initialize(arraysize(registers), registers, NULL); 226 data->Initialize(arraysize(registers), registers, NULL);
224 } 227 }
225 228
226 229
227 void KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) { 230 void KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
228 Register registers[] = { 231 Register registers[] = {
229 cp, // context 232 cp, // context
230 a2, // key 233 r5, // key
231 }; 234 };
232 Representation representations[] = { 235 Representation representations[] = {
233 Representation::Tagged(), // context 236 Representation::Tagged(), // context
234 Representation::Tagged(), // key 237 Representation::Tagged(), // key
235 }; 238 };
236 data->Initialize(arraysize(registers), registers, representations); 239 data->Initialize(arraysize(registers), registers, representations);
237 } 240 }
238 241
239 242
240 void NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) { 243 void NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
241 Register registers[] = { 244 Register registers[] = {
242 cp, // context 245 cp, // context
243 a2, // name 246 r5, // name
244 }; 247 };
245 Representation representations[] = { 248 Representation representations[] = {
246 Representation::Tagged(), // context 249 Representation::Tagged(), // context
247 Representation::Tagged(), // name 250 Representation::Tagged(), // name
248 }; 251 };
249 data->Initialize(arraysize(registers), registers, representations); 252 data->Initialize(arraysize(registers), registers, representations);
250 } 253 }
251 254
252 255
253 void CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) { 256 void CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) {
254 Register registers[] = { 257 Register registers[] = {
255 cp, // context 258 cp, // context
256 a0, // receiver 259 r3, // receiver
257 }; 260 };
258 Representation representations[] = { 261 Representation representations[] = {
259 Representation::Tagged(), // context 262 Representation::Tagged(), // context
260 Representation::Tagged(), // receiver 263 Representation::Tagged(), // receiver
261 }; 264 };
262 data->Initialize(arraysize(registers), registers, representations); 265 data->Initialize(arraysize(registers), registers, representations);
263 } 266 }
264 267
265 268
266 void ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) { 269 void ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
267 Register registers[] = { 270 Register registers[] = {
268 cp, // context 271 cp, // context
269 a1, // JSFunction 272 r4, // JSFunction
270 a0, // actual number of arguments 273 r3, // actual number of arguments
271 a2, // expected number of arguments 274 r5, // expected number of arguments
272 }; 275 };
273 Representation representations[] = { 276 Representation representations[] = {
274 Representation::Tagged(), // context 277 Representation::Tagged(), // context
275 Representation::Tagged(), // JSFunction 278 Representation::Tagged(), // JSFunction
276 Representation::Integer32(), // actual number of arguments 279 Representation::Integer32(), // actual number of arguments
277 Representation::Integer32(), // expected number of arguments 280 Representation::Integer32(), // expected number of arguments
278 }; 281 };
279 data->Initialize(arraysize(registers), registers, representations); 282 data->Initialize(arraysize(registers), registers, representations);
280 } 283 }
281 284
282 285
283 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { 286 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
284 Register registers[] = { 287 Register registers[] = {
285 cp, // context 288 cp, // context
286 a0, // callee 289 r3, // callee
287 a4, // call_data 290 r7, // call_data
288 a2, // holder 291 r5, // holder
289 a1, // api_function_address 292 r4, // api_function_address
290 }; 293 };
291 Representation representations[] = { 294 Representation representations[] = {
292 Representation::Tagged(), // context 295 Representation::Tagged(), // context
293 Representation::Tagged(), // callee 296 Representation::Tagged(), // callee
294 Representation::Tagged(), // call_data 297 Representation::Tagged(), // call_data
295 Representation::Tagged(), // holder 298 Representation::Tagged(), // holder
296 Representation::External(), // api_function_address 299 Representation::External(), // api_function_address
297 }; 300 };
298 data->Initialize(arraysize(registers), registers, representations); 301 data->Initialize(arraysize(registers), registers, representations);
299 } 302 }
300 } 303 }
301 } // namespace v8::internal 304 } // namespace v8::internal
302 305
303 #endif // V8_TARGET_ARCH_MIPS64 306 #endif // V8_TARGET_ARCH_PPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698