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

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

Issue 535103002: CallDescriptors::InitializeForIsolate() is no longer needed. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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
« no previous file with comments | « src/arm/interface-descriptors-arm.cc ('k') | src/ia32/interface-descriptors-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/interface-descriptors.h" 9 #include "src/interface-descriptors.h"
10 10
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 return x11; 60 return x11;
61 } 61 }
62 62
63 63
64 const Register InstanceofDescriptor::right() { 64 const Register InstanceofDescriptor::right() {
65 // Constructor function (instanceof rhs). 65 // Constructor function (instanceof rhs).
66 return x10; 66 return x10;
67 } 67 }
68 68
69 69
70 void FastNewClosureDescriptor::Initialize(Isolate* isolate) { 70 void FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) {
71 // cp: context 71 // cp: context
72 // x2: function info 72 // x2: function info
73 Register registers[] = {cp, x2}; 73 Register registers[] = {cp, x2};
74 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 74 data->Initialize(arraysize(registers), registers, NULL);
75 } 75 }
76 76
77 77
78 void FastNewContextDescriptor::Initialize(Isolate* isolate) { 78 void FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) {
79 // cp: context 79 // cp: context
80 // x1: function 80 // x1: function
81 Register registers[] = {cp, x1}; 81 Register registers[] = {cp, x1};
82 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 82 data->Initialize(arraysize(registers), registers, NULL);
83 } 83 }
84 84
85 85
86 void ToNumberDescriptor::Initialize(Isolate* isolate) { 86 void ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) {
87 // cp: context 87 // cp: context
88 // x0: value 88 // x0: value
89 Register registers[] = {cp, x0}; 89 Register registers[] = {cp, x0};
90 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 90 data->Initialize(arraysize(registers), registers, NULL);
91 } 91 }
92 92
93 93
94 void NumberToStringDescriptor::Initialize(Isolate* isolate) { 94 void NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) {
95 // cp: context 95 // cp: context
96 // x0: value 96 // x0: value
97 Register registers[] = {cp, x0}; 97 Register registers[] = {cp, x0};
98 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 98 data->Initialize(arraysize(registers), registers, NULL);
99 } 99 }
100 100
101 101
102 void FastCloneShallowArrayDescriptor::Initialize(Isolate* isolate) { 102 void FastCloneShallowArrayDescriptor::Initialize(
103 CallInterfaceDescriptorData* data) {
103 // cp: context 104 // cp: context
104 // x3: array literals array 105 // x3: array literals array
105 // x2: array literal index 106 // x2: array literal index
106 // x1: constant elements 107 // x1: constant elements
107 Register registers[] = {cp, x3, x2, x1}; 108 Register registers[] = {cp, x3, x2, x1};
108 Representation representations[] = { 109 Representation representations[] = {
109 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), 110 Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
110 Representation::Tagged()}; 111 Representation::Tagged()};
111 InitializeData(isolate, key(), arraysize(registers), registers, 112 data->Initialize(arraysize(registers), registers, representations);
112 representations);
113 } 113 }
114 114
115 115
116 void FastCloneShallowObjectDescriptor::Initialize(Isolate* isolate) { 116 void FastCloneShallowObjectDescriptor::Initialize(
117 CallInterfaceDescriptorData* data) {
117 // cp: context 118 // cp: context
118 // x3: object literals array 119 // x3: object literals array
119 // x2: object literal index 120 // x2: object literal index
120 // x1: constant properties 121 // x1: constant properties
121 // x0: object literal flags 122 // x0: object literal flags
122 Register registers[] = {cp, x3, x2, x1, x0}; 123 Register registers[] = {cp, x3, x2, x1, x0};
123 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 124 data->Initialize(arraysize(registers), registers, NULL);
124 } 125 }
125 126
126 127
127 void CreateAllocationSiteDescriptor::Initialize(Isolate* isolate) { 128 void CreateAllocationSiteDescriptor::Initialize(
129 CallInterfaceDescriptorData* data) {
128 // cp: context 130 // cp: context
129 // x2: feedback vector 131 // x2: feedback vector
130 // x3: call feedback slot 132 // x3: call feedback slot
131 Register registers[] = {cp, x2, x3}; 133 Register registers[] = {cp, x2, x3};
132 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 134 data->Initialize(arraysize(registers), registers, NULL);
133 } 135 }
134 136
135 137
136 void CallFunctionDescriptor::Initialize(Isolate* isolate) { 138 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
137 // x1 function the function to call 139 // x1 function the function to call
138 Register registers[] = {cp, x1}; 140 Register registers[] = {cp, x1};
139 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 141 data->Initialize(arraysize(registers), registers, NULL);
140 } 142 }
141 143
142 144
143 void CallConstructDescriptor::Initialize(Isolate* isolate) { 145 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) {
144 // x0 : number of arguments 146 // x0 : number of arguments
145 // x1 : the function to call 147 // x1 : the function to call
146 // x2 : feedback vector 148 // x2 : feedback vector
147 // x3 : slot in feedback vector (smi) (if r2 is not the megamorphic symbol) 149 // x3 : slot in feedback vector (smi) (if r2 is not the megamorphic symbol)
148 // TODO(turbofan): So far we don't gather type feedback and hence skip the 150 // TODO(turbofan): So far we don't gather type feedback and hence skip the
149 // slot parameter, but ArrayConstructStub needs the vector to be undefined. 151 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
150 Register registers[] = {cp, x0, x1, x2}; 152 Register registers[] = {cp, x0, x1, x2};
151 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 153 data->Initialize(arraysize(registers), registers, NULL);
152 } 154 }
153 155
154 156
155 void RegExpConstructResultDescriptor::Initialize(Isolate* isolate) { 157 void RegExpConstructResultDescriptor::Initialize(
158 CallInterfaceDescriptorData* data) {
156 // cp: context 159 // cp: context
157 // x2: length 160 // x2: length
158 // x1: index (of last match) 161 // x1: index (of last match)
159 // x0: string 162 // x0: string
160 Register registers[] = {cp, x2, x1, x0}; 163 Register registers[] = {cp, x2, x1, x0};
161 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 164 data->Initialize(arraysize(registers), registers, NULL);
162 } 165 }
163 166
164 167
165 void TransitionElementsKindDescriptor::Initialize(Isolate* isolate) { 168 void TransitionElementsKindDescriptor::Initialize(
169 CallInterfaceDescriptorData* data) {
166 // cp: context 170 // cp: context
167 // x0: value (js_array) 171 // x0: value (js_array)
168 // x1: to_map 172 // x1: to_map
169 Register registers[] = {cp, x0, x1}; 173 Register registers[] = {cp, x0, x1};
170 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 174 data->Initialize(arraysize(registers), registers, NULL);
171 } 175 }
172 176
173 177
174 void ArrayConstructorConstantArgCountDescriptor::Initialize(Isolate* isolate) { 178 void ArrayConstructorConstantArgCountDescriptor::Initialize(
179 CallInterfaceDescriptorData* data) {
175 // cp: context 180 // cp: context
176 // x1: function 181 // x1: function
177 // x2: allocation site with elements kind 182 // x2: allocation site with elements kind
178 // x0: number of arguments to the constructor function 183 // x0: number of arguments to the constructor function
179 Register registers[] = {cp, x1, x2}; 184 Register registers[] = {cp, x1, x2};
180 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 185 data->Initialize(arraysize(registers), registers, NULL);
181 } 186 }
182 187
183 188
184 void ArrayConstructorDescriptor::Initialize(Isolate* isolate) { 189 void ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
185 // stack param count needs (constructor pointer, and single argument) 190 // stack param count needs (constructor pointer, and single argument)
186 Register registers[] = {cp, x1, x2, x0}; 191 Register registers[] = {cp, x1, x2, x0};
187 Representation representations[] = { 192 Representation representations[] = {
188 Representation::Tagged(), Representation::Tagged(), 193 Representation::Tagged(), Representation::Tagged(),
189 Representation::Tagged(), Representation::Integer32()}; 194 Representation::Tagged(), Representation::Integer32()};
190 InitializeData(isolate, key(), arraysize(registers), registers, 195 data->Initialize(arraysize(registers), registers, representations);
191 representations);
192 } 196 }
193 197
194 198
195 void InternalArrayConstructorConstantArgCountDescriptor::Initialize( 199 void InternalArrayConstructorConstantArgCountDescriptor::Initialize(
196 Isolate* isolate) { 200 CallInterfaceDescriptorData* data) {
197 // cp: context 201 // cp: context
198 // x1: constructor function 202 // x1: constructor function
199 // x0: number of arguments to the constructor function 203 // x0: number of arguments to the constructor function
200 Register registers[] = {cp, x1}; 204 Register registers[] = {cp, x1};
201 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 205 data->Initialize(arraysize(registers), registers, NULL);
202 } 206 }
203 207
204 208
205 void InternalArrayConstructorDescriptor::Initialize(Isolate* isolate) { 209 void InternalArrayConstructorDescriptor::Initialize(
210 CallInterfaceDescriptorData* data) {
206 // stack param count needs (constructor pointer, and single argument) 211 // stack param count needs (constructor pointer, and single argument)
207 Register registers[] = {cp, x1, x0}; 212 Register registers[] = {cp, x1, x0};
208 Representation representations[] = {Representation::Tagged(), 213 Representation representations[] = {Representation::Tagged(),
209 Representation::Tagged(), 214 Representation::Tagged(),
210 Representation::Integer32()}; 215 Representation::Integer32()};
211 InitializeData(isolate, key(), arraysize(registers), registers, 216 data->Initialize(arraysize(registers), registers, representations);
212 representations);
213 } 217 }
214 218
215 219
216 void CompareNilDescriptor::Initialize(Isolate* isolate) { 220 void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
217 // cp: context 221 // cp: context
218 // x0: value to compare 222 // x0: value to compare
219 Register registers[] = {cp, x0}; 223 Register registers[] = {cp, x0};
220 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 224 data->Initialize(arraysize(registers), registers, NULL);
221 } 225 }
222 226
223 227
224 void ToBooleanDescriptor::Initialize(Isolate* isolate) { 228 void ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) {
225 // cp: context 229 // cp: context
226 // x0: value 230 // x0: value
227 Register registers[] = {cp, x0}; 231 Register registers[] = {cp, x0};
228 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 232 data->Initialize(arraysize(registers), registers, NULL);
229 } 233 }
230 234
231 235
232 void BinaryOpDescriptor::Initialize(Isolate* isolate) { 236 void BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) {
233 // cp: context 237 // cp: context
234 // x1: left operand 238 // x1: left operand
235 // x0: right operand 239 // x0: right operand
236 Register registers[] = {cp, x1, x0}; 240 Register registers[] = {cp, x1, x0};
237 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 241 data->Initialize(arraysize(registers), registers, NULL);
238 } 242 }
239 243
240 244
241 void BinaryOpWithAllocationSiteDescriptor::Initialize(Isolate* isolate) { 245 void BinaryOpWithAllocationSiteDescriptor::Initialize(
246 CallInterfaceDescriptorData* data) {
242 // cp: context 247 // cp: context
243 // x2: allocation site 248 // x2: allocation site
244 // x1: left operand 249 // x1: left operand
245 // x0: right operand 250 // x0: right operand
246 Register registers[] = {cp, x2, x1, x0}; 251 Register registers[] = {cp, x2, x1, x0};
247 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 252 data->Initialize(arraysize(registers), registers, NULL);
248 } 253 }
249 254
250 255
251 void StringAddDescriptor::Initialize(Isolate* isolate) { 256 void StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) {
252 // cp: context 257 // cp: context
253 // x1: left operand 258 // x1: left operand
254 // x0: right operand 259 // x0: right operand
255 Register registers[] = {cp, x1, x0}; 260 Register registers[] = {cp, x1, x0};
256 InitializeData(isolate, key(), arraysize(registers), registers, NULL); 261 data->Initialize(arraysize(registers), registers, NULL);
257 } 262 }
258 263
259 264
260 void KeyedDescriptor::Initialize(Isolate* isolate) { 265 void KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
261 static PlatformInterfaceDescriptor noInlineDescriptor = 266 static PlatformInterfaceDescriptor noInlineDescriptor =
262 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); 267 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
263 268
264 Register registers[] = { 269 Register registers[] = {
265 cp, // context 270 cp, // context
266 x2, // key 271 x2, // key
267 }; 272 };
268 Representation representations[] = { 273 Representation representations[] = {
269 Representation::Tagged(), // context 274 Representation::Tagged(), // context
270 Representation::Tagged(), // key 275 Representation::Tagged(), // key
271 }; 276 };
272 InitializeData(isolate, key(), arraysize(registers), registers, 277 data->Initialize(arraysize(registers), registers, representations,
273 representations, &noInlineDescriptor); 278 &noInlineDescriptor);
274 } 279 }
275 280
276 281
277 void NamedDescriptor::Initialize(Isolate* isolate) { 282 void NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
278 static PlatformInterfaceDescriptor noInlineDescriptor = 283 static PlatformInterfaceDescriptor noInlineDescriptor =
279 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); 284 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
280 285
281 Register registers[] = { 286 Register registers[] = {
282 cp, // context 287 cp, // context
283 x2, // name 288 x2, // name
284 }; 289 };
285 Representation representations[] = { 290 Representation representations[] = {
286 Representation::Tagged(), // context 291 Representation::Tagged(), // context
287 Representation::Tagged(), // name 292 Representation::Tagged(), // name
288 }; 293 };
289 InitializeData(isolate, key(), arraysize(registers), registers, 294 data->Initialize(arraysize(registers), registers, representations,
290 representations, &noInlineDescriptor); 295 &noInlineDescriptor);
291 } 296 }
292 297
293 298
294 void CallHandlerDescriptor::Initialize(Isolate* isolate) { 299 void CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) {
295 static PlatformInterfaceDescriptor default_descriptor = 300 static PlatformInterfaceDescriptor default_descriptor =
296 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 301 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
297 302
298 Register registers[] = { 303 Register registers[] = {
299 cp, // context 304 cp, // context
300 x0, // receiver 305 x0, // receiver
301 }; 306 };
302 Representation representations[] = { 307 Representation representations[] = {
303 Representation::Tagged(), // context 308 Representation::Tagged(), // context
304 Representation::Tagged(), // receiver 309 Representation::Tagged(), // receiver
305 }; 310 };
306 InitializeData(isolate, key(), arraysize(registers), registers, 311 data->Initialize(arraysize(registers), registers, representations,
307 representations, &default_descriptor); 312 &default_descriptor);
308 } 313 }
309 314
310 315
311 void ArgumentAdaptorDescriptor::Initialize(Isolate* isolate) { 316 void ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
312 static PlatformInterfaceDescriptor default_descriptor = 317 static PlatformInterfaceDescriptor default_descriptor =
313 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 318 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
314 319
315 Register registers[] = { 320 Register registers[] = {
316 cp, // context 321 cp, // context
317 x1, // JSFunction 322 x1, // JSFunction
318 x0, // actual number of arguments 323 x0, // actual number of arguments
319 x2, // expected number of arguments 324 x2, // expected number of arguments
320 }; 325 };
321 Representation representations[] = { 326 Representation representations[] = {
322 Representation::Tagged(), // context 327 Representation::Tagged(), // context
323 Representation::Tagged(), // JSFunction 328 Representation::Tagged(), // JSFunction
324 Representation::Integer32(), // actual number of arguments 329 Representation::Integer32(), // actual number of arguments
325 Representation::Integer32(), // expected number of arguments 330 Representation::Integer32(), // expected number of arguments
326 }; 331 };
327 InitializeData(isolate, key(), arraysize(registers), registers, 332 data->Initialize(arraysize(registers), registers, representations,
328 representations, &default_descriptor); 333 &default_descriptor);
329 } 334 }
330 335
331 336
332 void ApiFunctionDescriptor::Initialize(Isolate* isolate) { 337 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
333 static PlatformInterfaceDescriptor default_descriptor = 338 static PlatformInterfaceDescriptor default_descriptor =
334 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 339 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
335 340
336 Register registers[] = { 341 Register registers[] = {
337 cp, // context 342 cp, // context
338 x0, // callee 343 x0, // callee
339 x4, // call_data 344 x4, // call_data
340 x2, // holder 345 x2, // holder
341 x1, // api_function_address 346 x1, // api_function_address
342 }; 347 };
343 Representation representations[] = { 348 Representation representations[] = {
344 Representation::Tagged(), // context 349 Representation::Tagged(), // context
345 Representation::Tagged(), // callee 350 Representation::Tagged(), // callee
346 Representation::Tagged(), // call_data 351 Representation::Tagged(), // call_data
347 Representation::Tagged(), // holder 352 Representation::Tagged(), // holder
348 Representation::External(), // api_function_address 353 Representation::External(), // api_function_address
349 }; 354 };
350 InitializeData(isolate, key(), arraysize(registers), registers, 355 data->Initialize(arraysize(registers), registers, representations,
351 representations, &default_descriptor); 356 &default_descriptor);
352 } 357 }
353 } 358 }
354 } // namespace v8::internal 359 } // namespace v8::internal
355 360
356 #endif // V8_TARGET_ARCH_ARM64 361 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/interface-descriptors-arm.cc ('k') | src/ia32/interface-descriptors-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698