blob: b36cf63b874b12ef9d70255dc47956b138c11858 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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
3// found in the LICENSE file.
4
Ben Murdochb8a8cc12014-11-26 15:28:44 +00005#if V8_TARGET_ARCH_IA32
6
7#include "src/interface-descriptors.h"
8
9namespace v8 {
10namespace internal {
11
12const Register CallInterfaceDescriptor::ContextRegister() { return esi; }
13
14
15const Register LoadDescriptor::ReceiverRegister() { return edx; }
16const Register LoadDescriptor::NameRegister() { return ecx; }
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000017const Register LoadDescriptor::SlotRegister() { return eax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000018
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000019const Register LoadWithVectorDescriptor::VectorRegister() { return ebx; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000020
21
22const Register StoreDescriptor::ReceiverRegister() { return edx; }
23const Register StoreDescriptor::NameRegister() { return ecx; }
24const Register StoreDescriptor::ValueRegister() { return eax; }
25
26
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000027const Register VectorStoreICTrampolineDescriptor::SlotRegister() { return edi; }
Emily Bernierd0a1eb72015-03-24 16:35:39 -040028
29
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000030const Register VectorStoreICDescriptor::VectorRegister() { return ebx; }
31
32
33const Register VectorStoreTransitionDescriptor::SlotRegister() {
34 return no_reg;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000035}
36
37
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000038const Register VectorStoreTransitionDescriptor::VectorRegister() { return ebx; }
39
40
41const Register VectorStoreTransitionDescriptor::MapRegister() { return edi; }
42
43
44const Register StoreTransitionDescriptor::MapRegister() { return ebx; }
45
46
47const Register LoadGlobalViaContextDescriptor::SlotRegister() { return ebx; }
48
49
50const Register StoreGlobalViaContextDescriptor::SlotRegister() { return ebx; }
51const Register StoreGlobalViaContextDescriptor::ValueRegister() { return eax; }
52
53
54const Register InstanceOfDescriptor::LeftRegister() { return edx; }
55const Register InstanceOfDescriptor::RightRegister() { return eax; }
56
57
58const Register StringCompareDescriptor::LeftRegister() { return edx; }
59const Register StringCompareDescriptor::RightRegister() { return eax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000060
61
Ben Murdochb8a8cc12014-11-26 15:28:44 +000062const Register ApiGetterDescriptor::function_address() { return edx; }
63
64
65const Register MathPowTaggedDescriptor::exponent() { return eax; }
66
67
68const Register MathPowIntegerDescriptor::exponent() {
69 return MathPowTaggedDescriptor::exponent();
70}
71
72
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000073const Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; }
74const Register GrowArrayElementsDescriptor::KeyRegister() { return ebx; }
75
76
77void FastNewClosureDescriptor::InitializePlatformSpecific(
78 CallInterfaceDescriptorData* data) {
79 Register registers[] = {ebx};
80 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000081}
82
83
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000084void FastNewContextDescriptor::InitializePlatformSpecific(
85 CallInterfaceDescriptorData* data) {
86 Register registers[] = {edi};
87 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000088}
89
Ben Murdoch097c5b22016-05-18 11:27:45 +010090void FastNewObjectDescriptor::InitializePlatformSpecific(
91 CallInterfaceDescriptorData* data) {
92 Register registers[] = {edi, edx};
93 data->InitializePlatformSpecific(arraysize(registers), registers);
94}
95
96void FastNewRestParameterDescriptor::InitializePlatformSpecific(
97 CallInterfaceDescriptorData* data) {
98 Register registers[] = {edi};
99 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
100}
101
102
103void FastNewSloppyArgumentsDescriptor::InitializePlatformSpecific(
104 CallInterfaceDescriptorData* data) {
105 Register registers[] = {edi};
106 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
107}
108
109
110void FastNewStrictArgumentsDescriptor::InitializePlatformSpecific(
111 CallInterfaceDescriptorData* data) {
112 Register registers[] = {edi};
113 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
114}
115
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000116
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000117void ToNumberDescriptor::InitializePlatformSpecific(
118 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000119 // ToNumberStub invokes a function, and therefore needs a context.
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000120 Register registers[] = {eax};
121 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000122}
123
124
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000125// static
126const Register ToLengthDescriptor::ReceiverRegister() { return eax; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000127
128
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000129// static
130const Register ToStringDescriptor::ReceiverRegister() { return eax; }
131
132
133// static
Ben Murdoch097c5b22016-05-18 11:27:45 +0100134const Register ToNameDescriptor::ReceiverRegister() { return eax; }
135
136
137// static
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000138const Register ToObjectDescriptor::ReceiverRegister() { return eax; }
139
140
141void NumberToStringDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000142 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000143 Register registers[] = {eax};
144 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000145}
146
147
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000148void TypeofDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000149 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000150 Register registers[] = {ebx};
151 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000152}
153
154
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000155void FastCloneRegExpDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000156 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000157 Register registers[] = {edi, eax, ecx, edx};
158 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000159}
160
161
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000162void FastCloneShallowArrayDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000163 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000164 Register registers[] = {eax, ebx, ecx};
165 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000166}
167
168
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000169void FastCloneShallowObjectDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000170 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000171 Register registers[] = {eax, ebx, ecx, edx};
172 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000173}
174
175
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000176void CreateAllocationSiteDescriptor::InitializePlatformSpecific(
177 CallInterfaceDescriptorData* data) {
178 Register registers[] = {ebx, edx};
179 data->InitializePlatformSpecific(arraysize(registers), registers);
180}
181
182
183void CreateWeakCellDescriptor::InitializePlatformSpecific(
184 CallInterfaceDescriptorData* data) {
185 Register registers[] = {ebx, edx, edi};
186 data->InitializePlatformSpecific(arraysize(registers), registers);
187}
188
189
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000190void CallFunctionDescriptor::InitializePlatformSpecific(
191 CallInterfaceDescriptorData* data) {
192 Register registers[] = {edi};
193 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
194}
195
196
197void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific(
198 CallInterfaceDescriptorData* data) {
199 Register registers[] = {edi, edx};
200 data->InitializePlatformSpecific(arraysize(registers), registers);
201}
202
203
204void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific(
205 CallInterfaceDescriptorData* data) {
206 Register registers[] = {edi, edx, ebx};
207 data->InitializePlatformSpecific(arraysize(registers), registers);
208}
209
210
211void CallConstructDescriptor::InitializePlatformSpecific(
212 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000213 // eax : number of arguments
214 // ebx : feedback vector
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000215 // ecx : new target (for IsSuperConstructorCall)
216 // edx : slot in feedback vector (Smi, for RecordCallTarget)
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000217 // edi : constructor function
218 // TODO(turbofan): So far we don't gather type feedback and hence skip the
219 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000220 Register registers[] = {eax, edi, ecx, ebx};
221 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000222}
223
224
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000225void CallTrampolineDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000226 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000227 // eax : number of arguments
228 // edi : the target to call
229 Register registers[] = {edi, eax};
230 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000231}
232
233
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000234void ConstructStubDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000235 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000236 // eax : number of arguments
237 // edx : the new target
238 // edi : the target to call
239 // ebx : allocation site or undefined
240 Register registers[] = {edi, edx, eax, ebx};
241 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000242}
243
244
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000245void ConstructTrampolineDescriptor::InitializePlatformSpecific(
246 CallInterfaceDescriptorData* data) {
247 // eax : number of arguments
248 // edx : the new target
249 // edi : the target to call
250 Register registers[] = {edi, edx, eax};
251 data->InitializePlatformSpecific(arraysize(registers), registers);
252}
253
254
255void RegExpConstructResultDescriptor::InitializePlatformSpecific(
256 CallInterfaceDescriptorData* data) {
257 Register registers[] = {ecx, ebx, eax};
258 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
259}
260
261
262void TransitionElementsKindDescriptor::InitializePlatformSpecific(
263 CallInterfaceDescriptorData* data) {
264 Register registers[] = {eax, ebx};
265 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
266}
267
268
269void AllocateHeapNumberDescriptor::InitializePlatformSpecific(
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400270 CallInterfaceDescriptorData* data) {
271 // register state
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000272 data->InitializePlatformSpecific(0, nullptr, nullptr);
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400273}
274
275
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000276void AllocateInNewSpaceDescriptor::InitializePlatformSpecific(
277 CallInterfaceDescriptorData* data) {
278 Register registers[] = {eax};
279 data->InitializePlatformSpecific(arraysize(registers), registers);
280}
281
282
283void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000284 CallInterfaceDescriptorData* data) {
285 // register state
286 // eax -- number of arguments
287 // edi -- function
288 // ebx -- allocation site with elements kind
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000289 Register registers[] = {edi, ebx};
290 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000291}
292
293
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000294void ArrayConstructorDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000295 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000296 // stack param count needs (constructor pointer, and single argument)
297 Register registers[] = {edi, ebx, eax};
298 data->InitializePlatformSpecific(arraysize(registers), registers);
299}
300
301
302void InternalArrayConstructorConstantArgCountDescriptor::
303 InitializePlatformSpecific(CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000304 // register state
305 // eax -- number of arguments
306 // edi -- function
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000307 Register registers[] = {edi};
308 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000309}
310
311
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000312void InternalArrayConstructorDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000313 CallInterfaceDescriptorData* data) {
314 // stack param count needs (constructor pointer, and single argument)
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000315 Register registers[] = {edi, eax};
316 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000317}
318
319
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000320void CompareDescriptor::InitializePlatformSpecific(
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000321 CallInterfaceDescriptorData* data) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000322 Register registers[] = {edx, eax};
323 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000324}
325
326
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000327void CompareNilDescriptor::InitializePlatformSpecific(
328 CallInterfaceDescriptorData* data) {
329 Register registers[] = {eax};
330 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000331}
332
333
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000334void ToBooleanDescriptor::InitializePlatformSpecific(
335 CallInterfaceDescriptorData* data) {
336 Register registers[] = {eax};
337 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
338}
339
340
341void BinaryOpDescriptor::InitializePlatformSpecific(
342 CallInterfaceDescriptorData* data) {
343 Register registers[] = {edx, eax};
344 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
345}
346
347
348void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific(
349 CallInterfaceDescriptorData* data) {
350 Register registers[] = {ecx, edx, eax};
351 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
352}
353
354
355void StringAddDescriptor::InitializePlatformSpecific(
356 CallInterfaceDescriptorData* data) {
357 Register registers[] = {edx, eax};
358 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
359}
360
361
362void KeyedDescriptor::InitializePlatformSpecific(
363 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000364 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000365 ecx, // key
366 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000367 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000368}
369
370
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000371void NamedDescriptor::InitializePlatformSpecific(
372 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000373 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000374 ecx, // name
375 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000376 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000377}
378
379
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000380void CallHandlerDescriptor::InitializePlatformSpecific(
381 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000382 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000383 edx, // name
384 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000385 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000386}
387
388
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000389void ArgumentAdaptorDescriptor::InitializePlatformSpecific(
390 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000391 Register registers[] = {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000392 edi, // JSFunction
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000393 edx, // the new target
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000394 eax, // actual number of arguments
395 ebx, // expected number of arguments
396 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000397 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000398}
399
400
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000401void ApiFunctionDescriptor::InitializePlatformSpecific(
402 CallInterfaceDescriptorData* data) {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000403 Register registers[] = {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000404 edi, // callee
405 ebx, // call_data
406 ecx, // holder
407 edx, // api_function_address
408 eax, // actual number of arguments
409 };
410 data->InitializePlatformSpecific(arraysize(registers), registers);
411}
412
413
414void ApiAccessorDescriptor::InitializePlatformSpecific(
415 CallInterfaceDescriptorData* data) {
416 Register registers[] = {
417 edi, // callee
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000418 ebx, // call_data
419 ecx, // holder
420 edx, // api_function_address
421 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000422 data->InitializePlatformSpecific(arraysize(registers), registers);
423}
424
Ben Murdoch097c5b22016-05-18 11:27:45 +0100425void InterpreterDispatchDescriptor::InitializePlatformSpecific(
426 CallInterfaceDescriptorData* data) {
427 Register registers[] = {
428 kInterpreterAccumulatorRegister, kInterpreterRegisterFileRegister,
429 kInterpreterBytecodeOffsetRegister, kInterpreterBytecodeArrayRegister };
430 data->InitializePlatformSpecific(arraysize(registers), registers);
431}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000432
433void InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific(
434 CallInterfaceDescriptorData* data) {
435 Register registers[] = {
436 eax, // argument count (not including receiver)
437 ebx, // address of first argument
438 edi // the target callable to be call
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000439 };
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000440 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000441}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000442
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000443void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific(
444 CallInterfaceDescriptorData* data) {
445 Register registers[] = {
446 eax, // argument count (not including receiver)
447 edx, // new target
448 edi, // constructor
449 ebx, // address of first argument
450 };
451 data->InitializePlatformSpecific(arraysize(registers), registers);
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000452}
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000453
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000454void InterpreterCEntryDescriptor::InitializePlatformSpecific(
455 CallInterfaceDescriptorData* data) {
456 Register registers[] = {
457 eax, // argument count (argc)
458 ecx, // address of first argument (argv)
459 ebx // the runtime function to call
460 };
461 data->InitializePlatformSpecific(arraysize(registers), registers);
462}
463
464} // namespace internal
465} // namespace v8
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000466
467#endif // V8_TARGET_ARCH_IA32