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

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

Issue 1197703002: Use big-boy Types to annotate interface descriptor parameters (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Latest Created 5 years, 6 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
« no previous file with comments | « src/arm/interface-descriptors-arm.cc ('k') | src/code-stubs.h » ('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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 const Register MathPowTaggedDescriptor::exponent() { return x11; } 61 const Register MathPowTaggedDescriptor::exponent() { return x11; }
62 62
63 63
64 const Register MathPowIntegerDescriptor::exponent() { return x12; } 64 const Register MathPowIntegerDescriptor::exponent() { return x12; }
65 65
66 66
67 const Register GrowArrayElementsDescriptor::ObjectRegister() { return x0; } 67 const Register GrowArrayElementsDescriptor::ObjectRegister() { return x0; }
68 const Register GrowArrayElementsDescriptor::KeyRegister() { return x3; } 68 const Register GrowArrayElementsDescriptor::KeyRegister() { return x3; }
69 69
70 70
71 void FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) { 71 void FastNewClosureDescriptor::InitializePlatformSpecific(
72 CallInterfaceDescriptorData* data) {
72 // cp: context 73 // cp: context
73 // x2: function info 74 // x2: function info
74 Register registers[] = {cp, x2}; 75 Register registers[] = {cp, x2};
75 data->Initialize(arraysize(registers), registers, NULL); 76 data->InitializePlatformSpecific(arraysize(registers), registers);
76 } 77 }
77 78
78 79
79 void FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) { 80 void FastNewContextDescriptor::InitializePlatformSpecific(
81 CallInterfaceDescriptorData* data) {
80 // cp: context 82 // cp: context
81 // x1: function 83 // x1: function
82 Register registers[] = {cp, x1}; 84 Register registers[] = {cp, x1};
83 data->Initialize(arraysize(registers), registers, NULL); 85 data->InitializePlatformSpecific(arraysize(registers), registers);
84 } 86 }
85 87
86 88
87 void ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) { 89 void ToNumberDescriptor::InitializePlatformSpecific(
90 CallInterfaceDescriptorData* data) {
88 // cp: context 91 // cp: context
89 // x0: value 92 // x0: value
90 Register registers[] = {cp, x0}; 93 Register registers[] = {cp, x0};
91 data->Initialize(arraysize(registers), registers, NULL); 94 data->InitializePlatformSpecific(arraysize(registers), registers);
92 } 95 }
93 96
94 97
95 void NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) { 98 void NumberToStringDescriptor::InitializePlatformSpecific(
99 CallInterfaceDescriptorData* data) {
96 // cp: context 100 // cp: context
97 // x0: value 101 // x0: value
98 Register registers[] = {cp, x0}; 102 Register registers[] = {cp, x0};
99 data->Initialize(arraysize(registers), registers, NULL); 103 data->InitializePlatformSpecific(arraysize(registers), registers);
100 } 104 }
101 105
102 106
103 void TypeofDescriptor::Initialize(CallInterfaceDescriptorData* data) { 107 void TypeofDescriptor::InitializePlatformSpecific(
108 CallInterfaceDescriptorData* data) {
104 Register registers[] = {cp, x3}; 109 Register registers[] = {cp, x3};
105 data->Initialize(arraysize(registers), registers, NULL); 110 data->InitializePlatformSpecific(arraysize(registers), registers);
106 } 111 }
107 112
108 113
109 void FastCloneShallowArrayDescriptor::Initialize( 114 void FastCloneShallowArrayDescriptor::InitializePlatformSpecific(
110 CallInterfaceDescriptorData* data) { 115 CallInterfaceDescriptorData* data) {
111 // cp: context 116 // cp: context
112 // x3: array literals array 117 // x3: array literals array
113 // x2: array literal index 118 // x2: array literal index
114 // x1: constant elements 119 // x1: constant elements
115 Register registers[] = {cp, x3, x2, x1}; 120 Register registers[] = {cp, x3, x2, x1};
116 Representation representations[] = { 121 data->InitializePlatformSpecific(arraysize(registers), registers);
117 Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
118 Representation::Tagged()};
119 data->Initialize(arraysize(registers), registers, representations);
120 } 122 }
121 123
122 124
123 void FastCloneShallowObjectDescriptor::Initialize( 125 void FastCloneShallowObjectDescriptor::InitializePlatformSpecific(
124 CallInterfaceDescriptorData* data) { 126 CallInterfaceDescriptorData* data) {
125 // cp: context 127 // cp: context
126 // x3: object literals array 128 // x3: object literals array
127 // x2: object literal index 129 // x2: object literal index
128 // x1: constant properties 130 // x1: constant properties
129 // x0: object literal flags 131 // x0: object literal flags
130 Register registers[] = {cp, x3, x2, x1, x0}; 132 Register registers[] = {cp, x3, x2, x1, x0};
131 data->Initialize(arraysize(registers), registers, NULL); 133 data->InitializePlatformSpecific(arraysize(registers), registers);
132 } 134 }
133 135
134 136
135 void CreateAllocationSiteDescriptor::Initialize( 137 void CreateAllocationSiteDescriptor::InitializePlatformSpecific(
136 CallInterfaceDescriptorData* data) { 138 CallInterfaceDescriptorData* data) {
137 // cp: context 139 // cp: context
138 // x2: feedback vector 140 // x2: feedback vector
139 // x3: call feedback slot 141 // x3: call feedback slot
140 Register registers[] = {cp, x2, x3}; 142 Register registers[] = {cp, x2, x3};
141 Representation representations[] = {Representation::Tagged(), 143 data->InitializePlatformSpecific(arraysize(registers), registers);
142 Representation::Tagged(),
143 Representation::Smi()};
144 data->Initialize(arraysize(registers), registers, representations);
145 } 144 }
146 145
147 146
148 void CreateWeakCellDescriptor::Initialize(CallInterfaceDescriptorData* data) { 147 void CreateWeakCellDescriptor::InitializePlatformSpecific(
148 CallInterfaceDescriptorData* data) {
149 // cp: context 149 // cp: context
150 // x2: feedback vector 150 // x2: feedback vector
151 // x3: call feedback slot 151 // x3: call feedback slot
152 // x1: tagged value to put in the weak cell 152 // x1: tagged value to put in the weak cell
153 Register registers[] = {cp, x2, x3, x1}; 153 Register registers[] = {cp, x2, x3, x1};
154 Representation representations[] = { 154 data->InitializePlatformSpecific(arraysize(registers), registers);
155 Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
156 Representation::Tagged()};
157 data->Initialize(arraysize(registers), registers, representations);
158 } 155 }
159 156
160 157
161 void StoreArrayLiteralElementDescriptor::Initialize( 158 void StoreArrayLiteralElementDescriptor::InitializePlatformSpecific(
162 CallInterfaceDescriptorData* data) { 159 CallInterfaceDescriptorData* data) {
163 Register registers[] = {cp, x3, x0}; 160 Register registers[] = {cp, x3, x0};
164 data->Initialize(arraysize(registers), registers, NULL); 161 data->InitializePlatformSpecific(arraysize(registers), registers);
165 } 162 }
166 163
167 164
168 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { 165 void CallFunctionDescriptor::InitializePlatformSpecific(
166 CallInterfaceDescriptorData* data) {
169 // x1 function the function to call 167 // x1 function the function to call
170 Register registers[] = {cp, x1}; 168 Register registers[] = {cp, x1};
171 data->Initialize(arraysize(registers), registers, NULL); 169 data->InitializePlatformSpecific(arraysize(registers), registers);
172 } 170 }
173 171
174 172
175 void CallFunctionWithFeedbackDescriptor::Initialize( 173 void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific(
176 CallInterfaceDescriptorData* data) { 174 CallInterfaceDescriptorData* data) {
177 Register registers[] = {cp, x1, x3}; 175 Register registers[] = {cp, x1, x3};
178 Representation representations[] = {Representation::Tagged(), 176 data->InitializePlatformSpecific(arraysize(registers), registers);
179 Representation::Tagged(),
180 Representation::Smi()};
181 data->Initialize(arraysize(registers), registers, representations);
182 } 177 }
183 178
184 179
185 void CallFunctionWithFeedbackAndVectorDescriptor::Initialize( 180 void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific(
186 CallInterfaceDescriptorData* data) { 181 CallInterfaceDescriptorData* data) {
187 Register registers[] = {cp, x1, x3, x2}; 182 Register registers[] = {cp, x1, x3, x2};
188 Representation representations[] = { 183 data->InitializePlatformSpecific(arraysize(registers), registers);
189 Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
190 Representation::Tagged()};
191 data->Initialize(arraysize(registers), registers, representations);
192 } 184 }
193 185
194 186
195 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) { 187 void CallConstructDescriptor::InitializePlatformSpecific(
188 CallInterfaceDescriptorData* data) {
196 // x0 : number of arguments 189 // x0 : number of arguments
197 // x1 : the function to call 190 // x1 : the function to call
198 // x2 : feedback vector 191 // x2 : feedback vector
199 // x3 : slot in feedback vector (smi) (if r2 is not the megamorphic symbol) 192 // x3 : slot in feedback vector (smi) (if r2 is not the megamorphic symbol)
200 // TODO(turbofan): So far we don't gather type feedback and hence skip the 193 // TODO(turbofan): So far we don't gather type feedback and hence skip the
201 // slot parameter, but ArrayConstructStub needs the vector to be undefined. 194 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
202 Register registers[] = {cp, x0, x1, x2}; 195 Register registers[] = {cp, x0, x1, x2};
203 data->Initialize(arraysize(registers), registers, NULL); 196 data->InitializePlatformSpecific(arraysize(registers), registers);
204 } 197 }
205 198
206 199
207 void RegExpConstructResultDescriptor::Initialize( 200 void RegExpConstructResultDescriptor::InitializePlatformSpecific(
208 CallInterfaceDescriptorData* data) { 201 CallInterfaceDescriptorData* data) {
209 // cp: context 202 // cp: context
210 // x2: length 203 // x2: length
211 // x1: index (of last match) 204 // x1: index (of last match)
212 // x0: string 205 // x0: string
213 Register registers[] = {cp, x2, x1, x0}; 206 Register registers[] = {cp, x2, x1, x0};
214 data->Initialize(arraysize(registers), registers, NULL); 207 data->InitializePlatformSpecific(arraysize(registers), registers);
215 } 208 }
216 209
217 210
218 void TransitionElementsKindDescriptor::Initialize( 211 void TransitionElementsKindDescriptor::InitializePlatformSpecific(
219 CallInterfaceDescriptorData* data) { 212 CallInterfaceDescriptorData* data) {
220 // cp: context 213 // cp: context
221 // x0: value (js_array) 214 // x0: value (js_array)
222 // x1: to_map 215 // x1: to_map
223 Register registers[] = {cp, x0, x1}; 216 Register registers[] = {cp, x0, x1};
224 data->Initialize(arraysize(registers), registers, NULL); 217 data->InitializePlatformSpecific(arraysize(registers), registers);
225 } 218 }
226 219
227 220
228 void AllocateHeapNumberDescriptor::Initialize( 221 void AllocateHeapNumberDescriptor::InitializePlatformSpecific(
229 CallInterfaceDescriptorData* data) { 222 CallInterfaceDescriptorData* data) {
230 // cp: context 223 // cp: context
231 Register registers[] = {cp}; 224 Register registers[] = {cp};
232 data->Initialize(arraysize(registers), registers, nullptr); 225 data->InitializePlatformSpecific(arraysize(registers), registers, nullptr);
233 } 226 }
234 227
235 228
236 void ArrayConstructorConstantArgCountDescriptor::Initialize( 229 void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific(
237 CallInterfaceDescriptorData* data) { 230 CallInterfaceDescriptorData* data) {
238 // cp: context 231 // cp: context
239 // x1: function 232 // x1: function
240 // x2: allocation site with elements kind 233 // x2: allocation site with elements kind
241 // x0: number of arguments to the constructor function 234 // x0: number of arguments to the constructor function
242 Register registers[] = {cp, x1, x2}; 235 Register registers[] = {cp, x1, x2};
243 data->Initialize(arraysize(registers), registers, NULL); 236 data->InitializePlatformSpecific(arraysize(registers), registers);
244 } 237 }
245 238
246 239
247 void ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) { 240 void ArrayConstructorDescriptor::InitializePlatformSpecific(
241 CallInterfaceDescriptorData* data) {
248 // stack param count needs (constructor pointer, and single argument) 242 // stack param count needs (constructor pointer, and single argument)
249 Register registers[] = {cp, x1, x2, x0}; 243 Register registers[] = {cp, x1, x2, x0};
250 Representation representations[] = { 244 data->InitializePlatformSpecific(arraysize(registers), registers);
251 Representation::Tagged(), Representation::Tagged(),
252 Representation::Tagged(), Representation::Integer32()};
253 data->Initialize(arraysize(registers), registers, representations);
254 } 245 }
255 246
256 247
257 void InternalArrayConstructorConstantArgCountDescriptor::Initialize( 248 void InternalArrayConstructorConstantArgCountDescriptor::
258 CallInterfaceDescriptorData* data) { 249 InitializePlatformSpecific(CallInterfaceDescriptorData* data) {
259 // cp: context 250 // cp: context
260 // x1: constructor function 251 // x1: constructor function
261 // x0: number of arguments to the constructor function 252 // x0: number of arguments to the constructor function
262 Register registers[] = {cp, x1}; 253 Register registers[] = {cp, x1};
263 data->Initialize(arraysize(registers), registers, NULL); 254 data->InitializePlatformSpecific(arraysize(registers), registers);
264 } 255 }
265 256
266 257
267 void InternalArrayConstructorDescriptor::Initialize( 258 void InternalArrayConstructorDescriptor::InitializePlatformSpecific(
268 CallInterfaceDescriptorData* data) { 259 CallInterfaceDescriptorData* data) {
269 // stack param count needs (constructor pointer, and single argument) 260 // stack param count needs (constructor pointer, and single argument)
270 Register registers[] = {cp, x1, x0}; 261 Register registers[] = {cp, x1, x0};
271 Representation representations[] = {Representation::Tagged(), 262 data->InitializePlatformSpecific(arraysize(registers), registers);
272 Representation::Tagged(),
273 Representation::Integer32()};
274 data->Initialize(arraysize(registers), registers, representations);
275 } 263 }
276 264
277 265
278 void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { 266 void CompareDescriptor::InitializePlatformSpecific(
267 CallInterfaceDescriptorData* data) {
279 // cp: context 268 // cp: context
280 // x1: left operand 269 // x1: left operand
281 // x0: right operand 270 // x0: right operand
282 Register registers[] = {cp, x1, x0}; 271 Register registers[] = {cp, x1, x0};
283 data->Initialize(arraysize(registers), registers, NULL); 272 data->InitializePlatformSpecific(arraysize(registers), registers);
284 } 273 }
285 274
286 275
287 void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { 276 void CompareNilDescriptor::InitializePlatformSpecific(
277 CallInterfaceDescriptorData* data) {
288 // cp: context 278 // cp: context
289 // x0: value to compare 279 // x0: value to compare
290 Register registers[] = {cp, x0}; 280 Register registers[] = {cp, x0};
291 data->Initialize(arraysize(registers), registers, NULL); 281 data->InitializePlatformSpecific(arraysize(registers), registers);
292 } 282 }
293 283
294 284
295 void ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) { 285 void ToBooleanDescriptor::InitializePlatformSpecific(
286 CallInterfaceDescriptorData* data) {
296 // cp: context 287 // cp: context
297 // x0: value 288 // x0: value
298 Register registers[] = {cp, x0}; 289 Register registers[] = {cp, x0};
299 data->Initialize(arraysize(registers), registers, NULL); 290 data->InitializePlatformSpecific(arraysize(registers), registers);
300 } 291 }
301 292
302 293
303 void BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) { 294 void BinaryOpDescriptor::InitializePlatformSpecific(
295 CallInterfaceDescriptorData* data) {
304 // cp: context 296 // cp: context
305 // x1: left operand 297 // x1: left operand
306 // x0: right operand 298 // x0: right operand
307 Register registers[] = {cp, x1, x0}; 299 Register registers[] = {cp, x1, x0};
308 data->Initialize(arraysize(registers), registers, NULL); 300 data->InitializePlatformSpecific(arraysize(registers), registers);
309 } 301 }
310 302
311 303
312 void BinaryOpWithAllocationSiteDescriptor::Initialize( 304 void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific(
313 CallInterfaceDescriptorData* data) { 305 CallInterfaceDescriptorData* data) {
314 // cp: context 306 // cp: context
315 // x2: allocation site 307 // x2: allocation site
316 // x1: left operand 308 // x1: left operand
317 // x0: right operand 309 // x0: right operand
318 Register registers[] = {cp, x2, x1, x0}; 310 Register registers[] = {cp, x2, x1, x0};
319 data->Initialize(arraysize(registers), registers, NULL); 311 data->InitializePlatformSpecific(arraysize(registers), registers);
320 } 312 }
321 313
322 314
323 void StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) { 315 void StringAddDescriptor::InitializePlatformSpecific(
316 CallInterfaceDescriptorData* data) {
324 // cp: context 317 // cp: context
325 // x1: left operand 318 // x1: left operand
326 // x0: right operand 319 // x0: right operand
327 Register registers[] = {cp, x1, x0}; 320 Register registers[] = {cp, x1, x0};
328 data->Initialize(arraysize(registers), registers, NULL); 321 data->InitializePlatformSpecific(arraysize(registers), registers);
329 } 322 }
330 323
331 324
332 void KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) { 325 void KeyedDescriptor::InitializePlatformSpecific(
326 CallInterfaceDescriptorData* data) {
333 static PlatformInterfaceDescriptor noInlineDescriptor = 327 static PlatformInterfaceDescriptor noInlineDescriptor =
334 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); 328 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
335 329
336 Register registers[] = { 330 Register registers[] = {
337 cp, // context 331 cp, // context
338 x2, // key 332 x2, // key
339 }; 333 };
340 Representation representations[] = { 334 data->InitializePlatformSpecific(arraysize(registers), registers,
341 Representation::Tagged(), // context 335 &noInlineDescriptor);
342 Representation::Tagged(), // key
343 };
344 data->Initialize(arraysize(registers), registers, representations,
345 &noInlineDescriptor);
346 } 336 }
347 337
348 338
349 void NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) { 339 void NamedDescriptor::InitializePlatformSpecific(
340 CallInterfaceDescriptorData* data) {
350 static PlatformInterfaceDescriptor noInlineDescriptor = 341 static PlatformInterfaceDescriptor noInlineDescriptor =
351 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); 342 PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
352 343
353 Register registers[] = { 344 Register registers[] = {
354 cp, // context 345 cp, // context
355 x2, // name 346 x2, // name
356 }; 347 };
357 Representation representations[] = { 348 data->InitializePlatformSpecific(arraysize(registers), registers,
358 Representation::Tagged(), // context 349 &noInlineDescriptor);
359 Representation::Tagged(), // name
360 };
361 data->Initialize(arraysize(registers), registers, representations,
362 &noInlineDescriptor);
363 } 350 }
364 351
365 352
366 void CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) { 353 void CallHandlerDescriptor::InitializePlatformSpecific(
354 CallInterfaceDescriptorData* data) {
367 static PlatformInterfaceDescriptor default_descriptor = 355 static PlatformInterfaceDescriptor default_descriptor =
368 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 356 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
369 357
370 Register registers[] = { 358 Register registers[] = {
371 cp, // context 359 cp, // context
372 x0, // receiver 360 x0, // receiver
373 }; 361 };
374 Representation representations[] = { 362 data->InitializePlatformSpecific(arraysize(registers), registers,
375 Representation::Tagged(), // context 363 &default_descriptor);
376 Representation::Tagged(), // receiver
377 };
378 data->Initialize(arraysize(registers), registers, representations,
379 &default_descriptor);
380 } 364 }
381 365
382 366
383 void ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) { 367 void ArgumentAdaptorDescriptor::InitializePlatformSpecific(
368 CallInterfaceDescriptorData* data) {
384 static PlatformInterfaceDescriptor default_descriptor = 369 static PlatformInterfaceDescriptor default_descriptor =
385 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 370 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
386 371
387 Register registers[] = { 372 Register registers[] = {
388 cp, // context 373 cp, // context
389 x1, // JSFunction 374 x1, // JSFunction
390 x0, // actual number of arguments 375 x0, // actual number of arguments
391 x2, // expected number of arguments 376 x2, // expected number of arguments
392 }; 377 };
393 Representation representations[] = { 378 data->InitializePlatformSpecific(arraysize(registers), registers,
394 Representation::Tagged(), // context 379 &default_descriptor);
395 Representation::Tagged(), // JSFunction
396 Representation::Integer32(), // actual number of arguments
397 Representation::Integer32(), // expected number of arguments
398 };
399 data->Initialize(arraysize(registers), registers, representations,
400 &default_descriptor);
401 } 380 }
402 381
403 382
404 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { 383 void ApiFunctionDescriptor::InitializePlatformSpecific(
384 CallInterfaceDescriptorData* data) {
405 static PlatformInterfaceDescriptor default_descriptor = 385 static PlatformInterfaceDescriptor default_descriptor =
406 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 386 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
407 387
408 Register registers[] = { 388 Register registers[] = {
409 cp, // context 389 cp, // context
410 x0, // callee 390 x0, // callee
411 x4, // call_data 391 x4, // call_data
412 x2, // holder 392 x2, // holder
413 x1, // api_function_address 393 x1, // api_function_address
414 x3, // actual number of arguments 394 x3, // actual number of arguments
415 }; 395 };
416 Representation representations[] = { 396 data->InitializePlatformSpecific(arraysize(registers), registers,
417 Representation::Tagged(), // context 397 &default_descriptor);
418 Representation::Tagged(), // callee
419 Representation::Tagged(), // call_data
420 Representation::Tagged(), // holder
421 Representation::External(), // api_function_address
422 Representation::Integer32(), // actual number of arguments
423 };
424 data->Initialize(arraysize(registers), registers, representations,
425 &default_descriptor);
426 } 398 }
427 399
428 400
429 void ApiAccessorDescriptor::Initialize(CallInterfaceDescriptorData* data) { 401 void ApiAccessorDescriptor::InitializePlatformSpecific(
402 CallInterfaceDescriptorData* data) {
430 static PlatformInterfaceDescriptor default_descriptor = 403 static PlatformInterfaceDescriptor default_descriptor =
431 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); 404 PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
432 405
433 Register registers[] = { 406 Register registers[] = {
434 cp, // context 407 cp, // context
435 x0, // callee 408 x0, // callee
436 x4, // call_data 409 x4, // call_data
437 x2, // holder 410 x2, // holder
438 x1, // api_function_address 411 x1, // api_function_address
439 }; 412 };
440 Representation representations[] = { 413 data->InitializePlatformSpecific(arraysize(registers), registers,
441 Representation::Tagged(), // context 414 &default_descriptor);
442 Representation::Tagged(), // callee
443 Representation::Tagged(), // call_data
444 Representation::Tagged(), // holder
445 Representation::External(), // api_function_address
446 };
447 data->Initialize(arraysize(registers), registers, representations,
448 &default_descriptor);
449 } 415 }
450 416
451 417
452 void MathRoundVariantDescriptor::Initialize(CallInterfaceDescriptorData* data) { 418 void MathRoundVariantDescriptor::InitializePlatformSpecific(
419 CallInterfaceDescriptorData* data) {
453 Register registers[] = { 420 Register registers[] = {
454 cp, // context 421 cp, // context
455 x1, // math rounding function 422 x1, // math rounding function
456 x3, // vector slot id 423 x3, // vector slot id
457 }; 424 };
458 Representation representations[] = { 425 data->InitializePlatformSpecific(arraysize(registers), registers);
459 Representation::Tagged(), //
460 Representation::Tagged(), //
461 Representation::Tagged(), //
462 };
463 data->Initialize(arraysize(registers), registers, representations);
464 } 426 }
465 } // namespace internal 427 } // namespace internal
466 } // namespace v8 428 } // namespace v8
467 429
468 #endif // V8_TARGET_ARCH_ARM64 430 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/interface-descriptors-arm.cc ('k') | src/code-stubs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698