1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2012 the V8 project authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file.
4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#if V8_TARGET_ARCH_IA32
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/interface-descriptors.h"
8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace v8 {
10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace internal {
11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register CallInterfaceDescriptor::ContextRegister() { return esi; }
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
1413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
1513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch    CallInterfaceDescriptorData* data, int register_parameter_count) {
1613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  const Register default_stub_registers[] = {eax, ebx, ecx, edx, edi};
1713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  CHECK_LE(static_cast<size_t>(register_parameter_count),
1813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch           arraysize(default_stub_registers));
1913e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  data->InitializePlatformSpecific(register_parameter_count,
2013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch                                   default_stub_registers);
2113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch}
22b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
23f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::FunctionRegister() {
24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  return edi;
25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}
26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::SlotsRegister() { return eax; }
27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register LoadDescriptor::ReceiverRegister() { return edx; }
29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register LoadDescriptor::NameRegister() { return ecx; }
30014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register LoadDescriptor::SlotRegister() { return eax; }
31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register LoadWithVectorDescriptor::VectorRegister() { return ebx; }
33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
34c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochconst Register LoadICProtoArrayDescriptor::HandlerRegister() { return edi; }
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register StoreDescriptor::ReceiverRegister() { return edx; }
37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register StoreDescriptor::NameRegister() { return ecx; }
38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register StoreDescriptor::ValueRegister() { return eax; }
39f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreDescriptor::SlotRegister() { return edi; }
40b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
41f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreWithVectorDescriptor::VectorRegister() { return ebx; }
42014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
43f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::SlotRegister() { return no_reg; }
44f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::VectorRegister() { return ebx; }
45f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::MapRegister() { return edi; }
46014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
47014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register StringCompareDescriptor::LeftRegister() { return edx; }
48014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register StringCompareDescriptor::RightRegister() { return eax; }
49b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
50bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::HolderRegister() { return ecx; }
51bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::CallbackRegister() { return eax; }
52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
53b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register MathPowTaggedDescriptor::exponent() { return eax; }
54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
55b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
56b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register MathPowIntegerDescriptor::exponent() {
57b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  return MathPowTaggedDescriptor::exponent();
58b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
59b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
60b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
61014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; }
62014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register GrowArrayElementsDescriptor::KeyRegister() { return ebx; }
63014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
64014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
65014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastNewClosureDescriptor::InitializePlatformSpecific(
66014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
6762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  // SharedFunctionInfo, vector, slot index.
6862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {ebx, ecx, edx};
69109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
70109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch}
71109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch
72014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// static
733b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register TypeConversionDescriptor::ArgumentRegister() { return eax; }
74b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
75014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid TypeofDescriptor::InitializePlatformSpecific(
76b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
77014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {ebx};
78014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
79b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
80b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
81b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
82014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneRegExpDescriptor::InitializePlatformSpecific(
83b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
84014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {edi, eax, ecx, edx};
85014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
86b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
87b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
88b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
89014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneShallowArrayDescriptor::InitializePlatformSpecific(
90b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
91014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {eax, ebx, ecx};
92014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
93b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
94b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
95b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
96014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneShallowObjectDescriptor::InitializePlatformSpecific(
97b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
98014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {eax, ebx, ecx, edx};
99014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
100b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
101b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
102b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
103014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CreateAllocationSiteDescriptor::InitializePlatformSpecific(
104014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
105014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {ebx, edx};
106014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
107014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
108014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
109014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
110014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CreateWeakCellDescriptor::InitializePlatformSpecific(
111014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
112014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {ebx, edx, edi};
113014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
114014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
115014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
116014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
117014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallFunctionDescriptor::InitializePlatformSpecific(
118b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
119014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {edi};
120014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
121b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
122b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
12362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICTrampolineDescriptor::InitializePlatformSpecific(
124014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
12562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {edi, eax, edx};
126014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
127014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
128014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
12962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICDescriptor::InitializePlatformSpecific(
130014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
131c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  Register registers[] = {edi, eax, edx, ebx};
132014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
133014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
134014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
135014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
136014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallConstructDescriptor::InitializePlatformSpecific(
137014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
138b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // eax : number of arguments
139b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // ebx : feedback vector
140014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // ecx : new target (for IsSuperConstructorCall)
141014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // edx : slot in feedback vector (Smi, for RecordCallTarget)
142b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // edi : constructor function
143b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // TODO(turbofan): So far we don't gather type feedback and hence skip the
144b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // slot parameter, but ArrayConstructStub needs the vector to be undefined.
145014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {eax, edi, ecx, ebx};
146014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
147b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
148b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
149b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
150014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallTrampolineDescriptor::InitializePlatformSpecific(
151b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
152014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // eax : number of arguments
153014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // edi : the target to call
154014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {edi, eax};
155014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
156b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
157b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
15862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallForwardVarargsDescriptor::InitializePlatformSpecific(
15962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch    CallInterfaceDescriptorData* data) {
16062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  // ecx : start index (to support rest parameters)
16162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  // edi : the target to call
16262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {edi, ecx};
16362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
16462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}
165b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
166014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ConstructStubDescriptor::InitializePlatformSpecific(
167b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
168014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // eax : number of arguments
169014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // edx : the new target
170014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // edi : the target to call
171014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // ebx : allocation site or undefined
172014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {edi, edx, eax, ebx};
173014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
174b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
175b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
176b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
177014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ConstructTrampolineDescriptor::InitializePlatformSpecific(
178014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
179014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // eax : number of arguments
180014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // edx : the new target
181014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // edi : the target to call
182014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {edi, edx, eax};
183014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
184014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
185014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
186014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
187014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid TransitionElementsKindDescriptor::InitializePlatformSpecific(
188014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
189014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {eax, ebx};
190014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
191014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
192014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
193014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
194014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid AllocateHeapNumberDescriptor::InitializePlatformSpecific(
195958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    CallInterfaceDescriptorData* data) {
196958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  // register state
197014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(0, nullptr, nullptr);
198958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier}
199958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
20062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid ArrayConstructorDescriptor::InitializePlatformSpecific(
20162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch    CallInterfaceDescriptorData* data) {
20262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  // kTarget, kNewTarget, kActualArgumentsCount, kAllocationSite
20362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {edi, edx, eax, ebx};
20462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
20562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}
206958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
207bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific(
208014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
209bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // register state
210bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // eax -- number of arguments
211bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // edi -- function
212bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // ebx -- allocation site with elements kind
213bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  Register registers[] = {edi, ebx, eax};
214bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
215014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
216014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
21713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid ArraySingleArgumentConstructorDescriptor::InitializePlatformSpecific(
218b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
219b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // register state
220b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // eax -- number of arguments
221b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // edi -- function
222b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // ebx -- allocation site with elements kind
22313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  Register registers[] = {edi, ebx, eax};
224014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
225b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
226b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
22713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific(
228014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
229b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // register state
230b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // eax -- number of arguments
231b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // edi -- function
23213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  // ebx -- allocation site with elements kind
23313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  Register registers[] = {edi, ebx, eax};
234014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
235b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
236b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
23713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid VarArgFunctionDescriptor::InitializePlatformSpecific(
238014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
2393b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  // stack param count needs (arg count)
240014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {eax};
2413b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
242014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
243014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
2443b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CompareDescriptor::InitializePlatformSpecific(
245014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
2463b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  Register registers[] = {edx, eax};
247014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
248b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
249b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
250b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
251014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid BinaryOpDescriptor::InitializePlatformSpecific(
252014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
253014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {edx, eax};
254014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
255b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
256b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
257b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
258014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific(
259b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
260014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {ecx, edx, eax};
261014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
262b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
263b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
264f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochvoid BinaryOpWithVectorDescriptor::InitializePlatformSpecific(
265f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch    CallInterfaceDescriptorData* data) {
266f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // register state
267f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // edx -- lhs
268f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // eax -- rhs
269f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // edi -- slot id
270f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // ebx -- vector
271f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  Register registers[] = {edx, eax, edi, ebx};
272f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
273f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}
274f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
275bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid CountOpDescriptor::InitializePlatformSpecific(
276bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch    CallInterfaceDescriptorData* data) {
277bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  Register registers[] = {eax};
278bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
279bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}
280b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
281014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid StringAddDescriptor::InitializePlatformSpecific(
282014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
283014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {edx, eax};
284014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
285b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
286b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
287b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
288014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid KeyedDescriptor::InitializePlatformSpecific(
289014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
290b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
291b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      ecx,  // key
292b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
293014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
294b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
295b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
296b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
297014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid NamedDescriptor::InitializePlatformSpecific(
298014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
299b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
300b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      ecx,  // name
301b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
302014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
303b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
304b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
305b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
306014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallHandlerDescriptor::InitializePlatformSpecific(
307014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
308b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
309b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      edx,  // name
310b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
311014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
312b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
313b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
314b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
315014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ArgumentAdaptorDescriptor::InitializePlatformSpecific(
316014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
317b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
318b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      edi,  // JSFunction
319014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      edx,  // the new target
320b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      eax,  // actual number of arguments
321b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      ebx,  // expected number of arguments
322b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
323014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
324014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
325014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
326f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid ApiCallbackDescriptor::InitializePlatformSpecific(
327014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
328b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
329014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      edi,  // callee
330b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      ebx,  // call_data
331b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      ecx,  // holder
332b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      edx,  // api_function_address
333b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
334014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
335014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
336014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
337109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdochvoid InterpreterDispatchDescriptor::InitializePlatformSpecific(
338109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch    CallInterfaceDescriptorData* data) {
339109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  Register registers[] = {
340bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
341bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
342109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
343109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch}
344014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
345014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific(
346014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
347014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {
348014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      eax,  // argument count (not including receiver)
349014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      ebx,  // address of first argument
350014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      edi   // the target callable to be call
351014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  };
352014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
353014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
354014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
355014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific(
356014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
357014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {
358014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      eax,  // argument count (not including receiver)
359014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      edx,  // new target
360014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      edi,  // constructor
361f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      ebx,  // allocation site feedback
362f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      ecx,  // address of first argument
363f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  };
364f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
365f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch}
366f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
367f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid InterpreterPushArgsAndConstructArrayDescriptor::InitializePlatformSpecific(
368f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    CallInterfaceDescriptorData* data) {
369f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  Register registers[] = {
370f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      eax,  // argument count (not including receiver)
371f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      edx,  // target to the call. It is checked to be Array function.
372f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      ebx,  // allocation site feedback
373f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      ecx,  // address of first argument
374b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
375014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
376b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
377014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
378014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterCEntryDescriptor::InitializePlatformSpecific(
379014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
380014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {
381014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      eax,  // argument count (argc)
382014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      ecx,  // address of first argument (argv)
383014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      ebx   // the runtime function to call
384014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  };
385014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
386b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
387014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
388bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ResumeGeneratorDescriptor::InitializePlatformSpecific(
389bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch    CallInterfaceDescriptorData* data) {
390bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  Register registers[] = {
391bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      eax,  // the value to pass to the generator
392bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      ebx,  // the JSGeneratorObject to resume
393bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      edx   // the resume mode (tagged)
394bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  };
395bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
396bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}
397bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
39862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
39962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch    CallInterfaceDescriptorData* data) {
40062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {
40162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch      ebx,  // loaded new FP
40262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  };
40362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
40462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}
40562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
406014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace internal
407014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace v8
408b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
409b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif  // V8_TARGET_ARCH_IA32
410