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