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_X64 | 7 #if V8_TARGET_ARCH_X64 |
8 | 8 |
9 #include "src/interface-descriptors.h" | 9 #include "src/interface-descriptors.h" |
10 | 10 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 | 57 |
58 const Register MathPowIntegerDescriptor::exponent() { | 58 const Register MathPowIntegerDescriptor::exponent() { |
59 return MathPowTaggedDescriptor::exponent(); | 59 return MathPowTaggedDescriptor::exponent(); |
60 } | 60 } |
61 | 61 |
62 | 62 |
63 const Register GrowArrayElementsDescriptor::ObjectRegister() { return rax; } | 63 const Register GrowArrayElementsDescriptor::ObjectRegister() { return rax; } |
64 const Register GrowArrayElementsDescriptor::KeyRegister() { return rbx; } | 64 const Register GrowArrayElementsDescriptor::KeyRegister() { return rbx; } |
65 | 65 |
66 | 66 |
67 void FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 67 void FastNewClosureDescriptor::InitializePlatformSpecific( |
| 68 CallInterfaceDescriptorData* data) { |
68 Register registers[] = {rsi, rbx}; | 69 Register registers[] = {rsi, rbx}; |
69 data->Initialize(arraysize(registers), registers, NULL); | 70 data->InitializePlatformSpecific(arraysize(registers), registers); |
70 } | 71 } |
71 | 72 |
72 | 73 |
73 void FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 74 void FastNewContextDescriptor::InitializePlatformSpecific( |
| 75 CallInterfaceDescriptorData* data) { |
74 Register registers[] = {rsi, rdi}; | 76 Register registers[] = {rsi, rdi}; |
75 data->Initialize(arraysize(registers), registers, NULL); | 77 data->InitializePlatformSpecific(arraysize(registers), registers); |
76 } | 78 } |
77 | 79 |
78 | 80 |
79 void TypeofDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 81 void TypeofDescriptor::InitializePlatformSpecific( |
| 82 CallInterfaceDescriptorData* data) { |
80 Register registers[] = {rsi, rbx}; | 83 Register registers[] = {rsi, rbx}; |
81 data->Initialize(arraysize(registers), registers, NULL); | 84 data->InitializePlatformSpecific(arraysize(registers), registers); |
82 } | 85 } |
83 | 86 |
84 | 87 |
85 void ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 88 void ToNumberDescriptor::InitializePlatformSpecific( |
| 89 CallInterfaceDescriptorData* data) { |
86 // ToNumberStub invokes a function, and therefore needs a context. | 90 // ToNumberStub invokes a function, and therefore needs a context. |
87 Register registers[] = {rsi, rax}; | 91 Register registers[] = {rsi, rax}; |
88 data->Initialize(arraysize(registers), registers, NULL); | 92 data->InitializePlatformSpecific(arraysize(registers), registers); |
89 } | 93 } |
90 | 94 |
91 | 95 |
92 void NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 96 void NumberToStringDescriptor::InitializePlatformSpecific( |
| 97 CallInterfaceDescriptorData* data) { |
93 Register registers[] = {rsi, rax}; | 98 Register registers[] = {rsi, rax}; |
94 data->Initialize(arraysize(registers), registers, NULL); | 99 data->InitializePlatformSpecific(arraysize(registers), registers); |
95 } | 100 } |
96 | 101 |
97 | 102 |
98 void FastCloneShallowArrayDescriptor::Initialize( | 103 void FastCloneShallowArrayDescriptor::InitializePlatformSpecific( |
99 CallInterfaceDescriptorData* data) { | 104 CallInterfaceDescriptorData* data) { |
100 Register registers[] = {rsi, rax, rbx, rcx}; | 105 Register registers[] = {rsi, rax, rbx, rcx}; |
101 Representation representations[] = { | 106 data->InitializePlatformSpecific(arraysize(registers), registers); |
102 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), | |
103 Representation::Tagged()}; | |
104 data->Initialize(arraysize(registers), registers, representations); | |
105 } | 107 } |
106 | 108 |
107 | 109 |
108 void FastCloneShallowObjectDescriptor::Initialize( | 110 void FastCloneShallowObjectDescriptor::InitializePlatformSpecific( |
109 CallInterfaceDescriptorData* data) { | 111 CallInterfaceDescriptorData* data) { |
110 Register registers[] = {rsi, rax, rbx, rcx, rdx}; | 112 Register registers[] = {rsi, rax, rbx, rcx, rdx}; |
111 data->Initialize(arraysize(registers), registers, NULL); | 113 data->InitializePlatformSpecific(arraysize(registers), registers); |
112 } | 114 } |
113 | 115 |
114 | 116 |
115 void CreateAllocationSiteDescriptor::Initialize( | 117 void CreateAllocationSiteDescriptor::InitializePlatformSpecific( |
116 CallInterfaceDescriptorData* data) { | 118 CallInterfaceDescriptorData* data) { |
117 Register registers[] = {rsi, rbx, rdx}; | 119 Register registers[] = {rsi, rbx, rdx}; |
118 Representation representations[] = {Representation::Tagged(), | 120 data->InitializePlatformSpecific(arraysize(registers), registers); |
119 Representation::Tagged(), | |
120 Representation::Smi()}; | |
121 data->Initialize(arraysize(registers), registers, representations); | |
122 } | 121 } |
123 | 122 |
124 | 123 |
125 void CreateWeakCellDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 124 void CreateWeakCellDescriptor::InitializePlatformSpecific( |
| 125 CallInterfaceDescriptorData* data) { |
126 Register registers[] = {rsi, rbx, rdx, rdi}; | 126 Register registers[] = {rsi, rbx, rdx, rdi}; |
127 Representation representations[] = { | 127 data->InitializePlatformSpecific(arraysize(registers), registers); |
128 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), | |
129 Representation::Tagged()}; | |
130 data->Initialize(arraysize(registers), registers, representations); | |
131 } | 128 } |
132 | 129 |
133 | 130 |
134 void StoreArrayLiteralElementDescriptor::Initialize( | 131 void StoreArrayLiteralElementDescriptor::InitializePlatformSpecific( |
135 CallInterfaceDescriptorData* data) { | 132 CallInterfaceDescriptorData* data) { |
136 Register registers[] = {rsi, rcx, rax}; | 133 Register registers[] = {rsi, rcx, rax}; |
137 data->Initialize(arraysize(registers), registers, NULL); | 134 data->InitializePlatformSpecific(arraysize(registers), registers); |
138 } | 135 } |
139 | 136 |
140 | 137 |
141 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 138 void CallFunctionDescriptor::InitializePlatformSpecific( |
| 139 CallInterfaceDescriptorData* data) { |
142 Register registers[] = {rsi, rdi}; | 140 Register registers[] = {rsi, rdi}; |
143 data->Initialize(arraysize(registers), registers, NULL); | 141 data->InitializePlatformSpecific(arraysize(registers), registers); |
144 } | 142 } |
145 | 143 |
146 | 144 |
147 void CallFunctionWithFeedbackDescriptor::Initialize( | 145 void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific( |
148 CallInterfaceDescriptorData* data) { | 146 CallInterfaceDescriptorData* data) { |
149 Register registers[] = {rsi, rdi, rdx}; | 147 Register registers[] = {rsi, rdi, rdx}; |
150 Representation representations[] = {Representation::Tagged(), | 148 data->InitializePlatformSpecific(arraysize(registers), registers); |
151 Representation::Tagged(), | |
152 Representation::Smi()}; | |
153 data->Initialize(arraysize(registers), registers, representations); | |
154 } | 149 } |
155 | 150 |
156 | 151 |
157 void CallFunctionWithFeedbackAndVectorDescriptor::Initialize( | 152 void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific( |
158 CallInterfaceDescriptorData* data) { | 153 CallInterfaceDescriptorData* data) { |
159 Register registers[] = {rsi, rdi, rdx, rbx}; | 154 Register registers[] = {rsi, rdi, rdx, rbx}; |
160 Representation representations[] = { | 155 data->InitializePlatformSpecific(arraysize(registers), registers); |
161 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), | |
162 Representation::Tagged()}; | |
163 data->Initialize(arraysize(registers), registers, representations); | |
164 } | 156 } |
165 | 157 |
166 | 158 |
167 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 159 void CallConstructDescriptor::InitializePlatformSpecific( |
| 160 CallInterfaceDescriptorData* data) { |
168 // rax : number of arguments | 161 // rax : number of arguments |
169 // rbx : feedback vector | 162 // rbx : feedback vector |
170 // rdx : (only if rbx is not the megamorphic symbol) slot in feedback | 163 // rdx : (only if rbx is not the megamorphic symbol) slot in feedback |
171 // vector (Smi) | 164 // vector (Smi) |
172 // rdi : constructor function | 165 // rdi : constructor function |
173 // TODO(turbofan): So far we don't gather type feedback and hence skip the | 166 // TODO(turbofan): So far we don't gather type feedback and hence skip the |
174 // slot parameter, but ArrayConstructStub needs the vector to be undefined. | 167 // slot parameter, but ArrayConstructStub needs the vector to be undefined. |
175 Register registers[] = {rsi, rax, rdi, rbx}; | 168 Register registers[] = {rsi, rax, rdi, rbx}; |
176 data->Initialize(arraysize(registers), registers, NULL); | 169 data->InitializePlatformSpecific(arraysize(registers), registers); |
177 } | 170 } |
178 | 171 |
179 | 172 |
180 void RegExpConstructResultDescriptor::Initialize( | 173 void RegExpConstructResultDescriptor::InitializePlatformSpecific( |
181 CallInterfaceDescriptorData* data) { | 174 CallInterfaceDescriptorData* data) { |
182 Register registers[] = {rsi, rcx, rbx, rax}; | 175 Register registers[] = {rsi, rcx, rbx, rax}; |
183 data->Initialize(arraysize(registers), registers, NULL); | 176 data->InitializePlatformSpecific(arraysize(registers), registers); |
184 } | 177 } |
185 | 178 |
186 | 179 |
187 void TransitionElementsKindDescriptor::Initialize( | 180 void TransitionElementsKindDescriptor::InitializePlatformSpecific( |
188 CallInterfaceDescriptorData* data) { | 181 CallInterfaceDescriptorData* data) { |
189 Register registers[] = {rsi, rax, rbx}; | 182 Register registers[] = {rsi, rax, rbx}; |
190 data->Initialize(arraysize(registers), registers, NULL); | 183 data->InitializePlatformSpecific(arraysize(registers), registers); |
191 } | 184 } |
192 | 185 |
193 | 186 |
194 void AllocateHeapNumberDescriptor::Initialize( | 187 void AllocateHeapNumberDescriptor::InitializePlatformSpecific( |
195 CallInterfaceDescriptorData* data) { | 188 CallInterfaceDescriptorData* data) { |
196 // register state | 189 // register state |
197 // rsi -- context | 190 // rsi -- context |
198 Register registers[] = {rsi}; | 191 Register registers[] = {rsi}; |
199 data->Initialize(arraysize(registers), registers, nullptr); | 192 data->InitializePlatformSpecific(arraysize(registers), registers, nullptr); |
200 } | 193 } |
201 | 194 |
202 | 195 |
203 void ArrayConstructorConstantArgCountDescriptor::Initialize( | 196 void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific( |
204 CallInterfaceDescriptorData* data) { | 197 CallInterfaceDescriptorData* data) { |
205 // register state | 198 // register state |
206 // rax -- number of arguments | 199 // rax -- number of arguments |
207 // rdi -- function | 200 // rdi -- function |
208 // rbx -- allocation site with elements kind | 201 // rbx -- allocation site with elements kind |
209 Register registers[] = {rsi, rdi, rbx}; | 202 Register registers[] = {rsi, rdi, rbx}; |
210 data->Initialize(arraysize(registers), registers, NULL); | 203 data->InitializePlatformSpecific(arraysize(registers), registers); |
211 } | 204 } |
212 | 205 |
213 | 206 |
214 void ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 207 void ArrayConstructorDescriptor::InitializePlatformSpecific( |
| 208 CallInterfaceDescriptorData* data) { |
215 // stack param count needs (constructor pointer, and single argument) | 209 // stack param count needs (constructor pointer, and single argument) |
216 Register registers[] = {rsi, rdi, rbx, rax}; | 210 Register registers[] = {rsi, rdi, rbx, rax}; |
217 Representation representations[] = { | 211 data->InitializePlatformSpecific(arraysize(registers), registers); |
218 Representation::Tagged(), Representation::Tagged(), | |
219 Representation::Tagged(), Representation::Integer32()}; | |
220 data->Initialize(arraysize(registers), registers, representations); | |
221 } | 212 } |
222 | 213 |
223 | 214 |
224 void InternalArrayConstructorConstantArgCountDescriptor::Initialize( | 215 void InternalArrayConstructorConstantArgCountDescriptor:: |
225 CallInterfaceDescriptorData* data) { | 216 InitializePlatformSpecific(CallInterfaceDescriptorData* data) { |
226 // register state | 217 // register state |
227 // rsi -- context | 218 // rsi -- context |
228 // rax -- number of arguments | 219 // rax -- number of arguments |
229 // rdi -- constructor function | 220 // rdi -- constructor function |
230 Register registers[] = {rsi, rdi}; | 221 Register registers[] = {rsi, rdi}; |
231 data->Initialize(arraysize(registers), registers, NULL); | 222 data->InitializePlatformSpecific(arraysize(registers), registers); |
232 } | 223 } |
233 | 224 |
234 | 225 |
235 void InternalArrayConstructorDescriptor::Initialize( | 226 void InternalArrayConstructorDescriptor::InitializePlatformSpecific( |
236 CallInterfaceDescriptorData* data) { | 227 CallInterfaceDescriptorData* data) { |
237 // stack param count needs (constructor pointer, and single argument) | 228 // stack param count needs (constructor pointer, and single argument) |
238 Register registers[] = {rsi, rdi, rax}; | 229 Register registers[] = {rsi, rdi, rax}; |
239 Representation representations[] = {Representation::Tagged(), | 230 data->InitializePlatformSpecific(arraysize(registers), registers); |
240 Representation::Tagged(), | |
241 Representation::Integer32()}; | |
242 data->Initialize(arraysize(registers), registers, representations); | |
243 } | 231 } |
244 | 232 |
245 | 233 |
246 void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 234 void CompareDescriptor::InitializePlatformSpecific( |
| 235 CallInterfaceDescriptorData* data) { |
247 Register registers[] = {rsi, rdx, rax}; | 236 Register registers[] = {rsi, rdx, rax}; |
248 data->Initialize(arraysize(registers), registers, NULL); | 237 data->InitializePlatformSpecific(arraysize(registers), registers); |
249 } | 238 } |
250 | 239 |
251 | 240 |
252 void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 241 void CompareNilDescriptor::InitializePlatformSpecific( |
| 242 CallInterfaceDescriptorData* data) { |
253 Register registers[] = {rsi, rax}; | 243 Register registers[] = {rsi, rax}; |
254 data->Initialize(arraysize(registers), registers, NULL); | 244 data->InitializePlatformSpecific(arraysize(registers), registers); |
255 } | 245 } |
256 | 246 |
257 | 247 |
258 void ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 248 void ToBooleanDescriptor::InitializePlatformSpecific( |
| 249 CallInterfaceDescriptorData* data) { |
259 Register registers[] = {rsi, rax}; | 250 Register registers[] = {rsi, rax}; |
260 data->Initialize(arraysize(registers), registers, NULL); | 251 data->InitializePlatformSpecific(arraysize(registers), registers); |
261 } | 252 } |
262 | 253 |
263 | 254 |
264 void BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 255 void BinaryOpDescriptor::InitializePlatformSpecific( |
| 256 CallInterfaceDescriptorData* data) { |
265 Register registers[] = {rsi, rdx, rax}; | 257 Register registers[] = {rsi, rdx, rax}; |
266 data->Initialize(arraysize(registers), registers, NULL); | 258 data->InitializePlatformSpecific(arraysize(registers), registers); |
267 } | 259 } |
268 | 260 |
269 | 261 |
270 void BinaryOpWithAllocationSiteDescriptor::Initialize( | 262 void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific( |
271 CallInterfaceDescriptorData* data) { | 263 CallInterfaceDescriptorData* data) { |
272 Register registers[] = {rsi, rcx, rdx, rax}; | 264 Register registers[] = {rsi, rcx, rdx, rax}; |
273 data->Initialize(arraysize(registers), registers, NULL); | 265 data->InitializePlatformSpecific(arraysize(registers), registers); |
274 } | 266 } |
275 | 267 |
276 | 268 |
277 void StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 269 void StringAddDescriptor::InitializePlatformSpecific( |
| 270 CallInterfaceDescriptorData* data) { |
278 Register registers[] = {rsi, rdx, rax}; | 271 Register registers[] = {rsi, rdx, rax}; |
279 data->Initialize(arraysize(registers), registers, NULL); | 272 data->InitializePlatformSpecific(arraysize(registers), registers); |
280 } | 273 } |
281 | 274 |
282 | 275 |
283 void KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 276 void KeyedDescriptor::InitializePlatformSpecific( |
| 277 CallInterfaceDescriptorData* data) { |
284 Register registers[] = { | 278 Register registers[] = { |
285 rsi, // context | 279 rsi, // context |
286 rcx, // key | 280 rcx, // key |
287 }; | 281 }; |
288 Representation representations[] = { | 282 data->InitializePlatformSpecific(arraysize(registers), registers); |
289 Representation::Tagged(), // context | |
290 Representation::Tagged(), // key | |
291 }; | |
292 data->Initialize(arraysize(registers), registers, representations); | |
293 } | 283 } |
294 | 284 |
295 | 285 |
296 void NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 286 void NamedDescriptor::InitializePlatformSpecific( |
| 287 CallInterfaceDescriptorData* data) { |
297 Register registers[] = { | 288 Register registers[] = { |
298 rsi, // context | 289 rsi, // context |
299 rcx, // name | 290 rcx, // name |
300 }; | 291 }; |
301 Representation representations[] = { | 292 data->InitializePlatformSpecific(arraysize(registers), registers); |
302 Representation::Tagged(), // context | |
303 Representation::Tagged(), // name | |
304 }; | |
305 data->Initialize(arraysize(registers), registers, representations); | |
306 } | 293 } |
307 | 294 |
308 | 295 |
309 void CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 296 void CallHandlerDescriptor::InitializePlatformSpecific( |
| 297 CallInterfaceDescriptorData* data) { |
310 Register registers[] = { | 298 Register registers[] = { |
311 rsi, // context | 299 rsi, // context |
312 rdx, // receiver | 300 rdx, // receiver |
313 }; | 301 }; |
314 Representation representations[] = { | 302 data->InitializePlatformSpecific(arraysize(registers), registers); |
315 Representation::Tagged(), // context | |
316 Representation::Tagged(), // receiver | |
317 }; | |
318 data->Initialize(arraysize(registers), registers, representations); | |
319 } | 303 } |
320 | 304 |
321 | 305 |
322 void ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 306 void ArgumentAdaptorDescriptor::InitializePlatformSpecific( |
| 307 CallInterfaceDescriptorData* data) { |
323 Register registers[] = { | 308 Register registers[] = { |
324 rsi, // context | 309 rsi, // context |
325 rdi, // JSFunction | 310 rdi, // JSFunction |
326 rax, // actual number of arguments | 311 rax, // actual number of arguments |
327 rbx, // expected number of arguments | 312 rbx, // expected number of arguments |
328 }; | 313 }; |
329 Representation representations[] = { | 314 data->InitializePlatformSpecific(arraysize(registers), registers); |
330 Representation::Tagged(), // context | |
331 Representation::Tagged(), // JSFunction | |
332 Representation::Integer32(), // actual number of arguments | |
333 Representation::Integer32(), // expected number of arguments | |
334 }; | |
335 data->Initialize(arraysize(registers), registers, representations); | |
336 } | 315 } |
337 | 316 |
338 | 317 |
339 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 318 void ApiFunctionDescriptor::InitializePlatformSpecific( |
| 319 CallInterfaceDescriptorData* data) { |
340 Register registers[] = { | 320 Register registers[] = { |
341 rsi, // context | 321 rsi, // context |
342 rdi, // callee | 322 rdi, // callee |
343 rbx, // call_data | 323 rbx, // call_data |
344 rcx, // holder | 324 rcx, // holder |
345 rdx, // api_function_address | 325 rdx, // api_function_address |
346 rax, // actual number of arguments | 326 rax, // actual number of arguments |
347 }; | 327 }; |
348 Representation representations[] = { | 328 data->InitializePlatformSpecific(arraysize(registers), registers); |
349 Representation::Tagged(), // context | |
350 Representation::Tagged(), // callee | |
351 Representation::Tagged(), // call_data | |
352 Representation::Tagged(), // holder | |
353 Representation::External(), // api_function_address | |
354 Representation::Integer32(), // actual number of arguments | |
355 }; | |
356 data->Initialize(arraysize(registers), registers, representations); | |
357 } | 329 } |
358 | 330 |
359 | 331 |
360 void ApiAccessorDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 332 void ApiAccessorDescriptor::InitializePlatformSpecific( |
| 333 CallInterfaceDescriptorData* data) { |
361 Register registers[] = { | 334 Register registers[] = { |
362 rsi, // context | 335 rsi, // context |
363 rdi, // callee | 336 rdi, // callee |
364 rbx, // call_data | 337 rbx, // call_data |
365 rcx, // holder | 338 rcx, // holder |
366 rdx, // api_function_address | 339 rdx, // api_function_address |
367 }; | 340 }; |
368 Representation representations[] = { | 341 data->InitializePlatformSpecific(arraysize(registers), registers); |
369 Representation::Tagged(), // context | |
370 Representation::Tagged(), // callee | |
371 Representation::Tagged(), // call_data | |
372 Representation::Tagged(), // holder | |
373 Representation::External(), // api_function_address | |
374 }; | |
375 data->Initialize(arraysize(registers), registers, representations); | |
376 } | 342 } |
377 | 343 |
378 | 344 |
379 void MathRoundVariantDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 345 void MathRoundVariantDescriptor::InitializePlatformSpecific( |
| 346 CallInterfaceDescriptorData* data) { |
380 Register registers[] = { | 347 Register registers[] = { |
381 rsi, // context | 348 rsi, // context |
382 rdi, // math rounding function | 349 rdi, // math rounding function |
383 rdx, // vector slot id | 350 rdx, // vector slot id |
384 }; | 351 }; |
385 Representation representations[] = { | 352 data->InitializePlatformSpecific(arraysize(registers), registers); |
386 Representation::Tagged(), // | |
387 Representation::Tagged(), // | |
388 Representation::Tagged(), // | |
389 }; | |
390 data->Initialize(arraysize(registers), registers, representations); | |
391 } | 353 } |
392 } // namespace internal | 354 } // namespace internal |
393 } // namespace v8 | 355 } // namespace v8 |
394 | 356 |
395 #endif // V8_TARGET_ARCH_X64 | 357 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |