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
5014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/arm/interface-descriptors-arm.h"
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#if V8_TARGET_ARCH_ARM
8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/interface-descriptors.h"
10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace v8 {
12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace internal {
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register CallInterfaceDescriptor::ContextRegister() { return cp; }
15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
1613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
1713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch    CallInterfaceDescriptorData* data, int register_parameter_count) {
1813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  const Register default_stub_registers[] = {r0, r1, r2, r3, r4};
1913e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  CHECK_LE(static_cast<size_t>(register_parameter_count),
2013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch           arraysize(default_stub_registers));
2113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  data->InitializePlatformSpecific(register_parameter_count,
2213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch                                   default_stub_registers);
2313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch}
24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::FunctionRegister() {
26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  return r1;
27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}
28f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::SlotsRegister() { return r0; }
29f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register LoadDescriptor::ReceiverRegister() { return r1; }
31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register LoadDescriptor::NameRegister() { return r2; }
32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register LoadDescriptor::SlotRegister() { return r0; }
33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
34014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register LoadWithVectorDescriptor::VectorRegister() { return r3; }
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
36c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochconst Register LoadICProtoArrayDescriptor::HandlerRegister() { return r4; }
37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register StoreDescriptor::ReceiverRegister() { return r1; }
39b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register StoreDescriptor::NameRegister() { return r2; }
40b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register StoreDescriptor::ValueRegister() { return r0; }
41f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreDescriptor::SlotRegister() { return r4; }
42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
43f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreWithVectorDescriptor::VectorRegister() { return r3; }
44014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
45f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::SlotRegister() { return r4; }
46f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::VectorRegister() { return r3; }
47f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::MapRegister() { return r5; }
48958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
49014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register StringCompareDescriptor::LeftRegister() { return r1; }
50014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register StringCompareDescriptor::RightRegister() { return r0; }
51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
52bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::HolderRegister() { return r0; }
53bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::CallbackRegister() { return r3; }
54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
55b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register MathPowTaggedDescriptor::exponent() { return r2; }
56b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
57b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
58b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst Register MathPowIntegerDescriptor::exponent() {
59b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  return MathPowTaggedDescriptor::exponent();
60b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
61b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
62b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
63014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register GrowArrayElementsDescriptor::ObjectRegister() { return r0; }
64014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register GrowArrayElementsDescriptor::KeyRegister() { return r3; }
65014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
66014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
67014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastNewClosureDescriptor::InitializePlatformSpecific(
68014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
6962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {r1, r2, r3};
70014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
71b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
72b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
73014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// static
743b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register TypeConversionDescriptor::ArgumentRegister() { return r0; }
75b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
76014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid TypeofDescriptor::InitializePlatformSpecific(
77b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
78014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r3};
79014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
80b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
81b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
82b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
83014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneRegExpDescriptor::InitializePlatformSpecific(
84b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
85014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r3, r2, r1, r0};
86014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
87b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
88b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
89b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
90014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneShallowArrayDescriptor::InitializePlatformSpecific(
91b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
92014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r3, r2, r1};
93014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
94b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
95b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
96b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
97014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneShallowObjectDescriptor::InitializePlatformSpecific(
98b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
99014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r3, r2, r1, r0};
100014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
101b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
102b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
103b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
104014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CreateAllocationSiteDescriptor::InitializePlatformSpecific(
105014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
106014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r2, r3};
107014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
108b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
109b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
110b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
111014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CreateWeakCellDescriptor::InitializePlatformSpecific(
112b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
113014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r2, r3, r1};
114014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
115b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
116b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
117b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
118014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallFunctionDescriptor::InitializePlatformSpecific(
119014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
120014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r1};
121014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
122014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
123014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
12462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICTrampolineDescriptor::InitializePlatformSpecific(
125014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
12662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {r1, r0, r3};
127014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
128014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
129014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
13062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICDescriptor::InitializePlatformSpecific(
131014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
132c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  Register registers[] = {r1, r0, r3, r2};
133014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
134014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
135014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
136014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
137014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallConstructDescriptor::InitializePlatformSpecific(
138014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
139b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // r0 : number of arguments
140b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // r1 : the function to call
141b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // r2 : feedback vector
142014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r3 : slot in feedback vector (Smi, for RecordCallTarget)
143014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r4 : new target (for IsSuperConstructorCall)
144b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // TODO(turbofan): So far we don't gather type feedback and hence skip the
145b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // slot parameter, but ArrayConstructStub needs the vector to be undefined.
146014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r0, r1, r4, r2};
147014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
148b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
149b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
150b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
151014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallTrampolineDescriptor::InitializePlatformSpecific(
152b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
153014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r0 : number of arguments
154014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r1 : the target to call
155014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r1, r0};
156014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
157b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
158b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
15962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallForwardVarargsDescriptor::InitializePlatformSpecific(
16062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch    CallInterfaceDescriptorData* data) {
16162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  // r2 : start index (to support rest parameters)
16262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  // r1 : the target to call
16362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {r1, r2};
16462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
16562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}
166b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
167014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ConstructStubDescriptor::InitializePlatformSpecific(
168b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
169014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r0 : number of arguments
170014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r1 : the target to call
171014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r3 : the new target
172014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r2 : allocation site or undefined
173014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r1, r3, r0, r2};
174014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
175b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
176b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
177b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
178014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ConstructTrampolineDescriptor::InitializePlatformSpecific(
179958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier    CallInterfaceDescriptorData* data) {
180014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r0 : number of arguments
181014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r1 : the target to call
182014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // r3 : the new target
183014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r1, r3, r0};
184014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
185958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier}
186958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
187958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
188014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid TransitionElementsKindDescriptor::InitializePlatformSpecific(
189014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
190014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r0, r1};
191014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
192014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
193014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
194014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
195014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid AllocateHeapNumberDescriptor::InitializePlatformSpecific(
196014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
197014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(0, nullptr, nullptr);
198014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
199014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
20062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid ArrayConstructorDescriptor::InitializePlatformSpecific(
20162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch    CallInterfaceDescriptorData* data) {
20262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  // kTarget, kNewTarget, kActualArgumentsCount, kAllocationSite
20362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {r1, r3, r0, r2};
20462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
20562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}
206014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
207bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific(
208014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
209bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // register state
210bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // r0 -- number of arguments
211bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // r1 -- function
212bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  // r2 -- allocation site with elements kind
213bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  Register registers[] = {r1, r2, r0};
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  // r0 -- number of arguments
221b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // r1 -- function
222b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // r2 -- allocation site with elements kind
22313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  Register registers[] = {r1, r2, r0};
22413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
225b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
226b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
22713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific(
228014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
229b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // stack param count needs (constructor pointer, and single argument)
230014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r1, r2, r0};
231014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
232b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
233b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
234b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
23513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid VarArgFunctionDescriptor::InitializePlatformSpecific(
236014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
2373b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  // stack param count needs (arg count)
238014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r0};
239014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
240b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
241b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
2423b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CompareDescriptor::InitializePlatformSpecific(
243014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
2443b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  Register registers[] = {r1, r0};
245014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
246b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
247b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
248b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
249014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid BinaryOpDescriptor::InitializePlatformSpecific(
250014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
251014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r1, r0};
252014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
253b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
254b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
255b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
256014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific(
257b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    CallInterfaceDescriptorData* data) {
258014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r2, r1, r0};
259014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
260b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
261b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
262f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochvoid BinaryOpWithVectorDescriptor::InitializePlatformSpecific(
263f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch    CallInterfaceDescriptorData* data) {
264f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // register state
265f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // r1 -- lhs
266f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // r0 -- rhs
267f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // r4 -- slot id
268f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  // r3 -- vector
269f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  Register registers[] = {r1, r0, r4, r3};
270f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
271f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}
272f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
273bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid CountOpDescriptor::InitializePlatformSpecific(
274bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch    CallInterfaceDescriptorData* data) {
275bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  Register registers[] = {r1};
276bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
277bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}
278b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
279014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid StringAddDescriptor::InitializePlatformSpecific(
280014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
281014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {r1, r0};
282014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
283b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
284b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
285b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
286014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid KeyedDescriptor::InitializePlatformSpecific(
287014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
288b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  static PlatformInterfaceDescriptor noInlineDescriptor =
289b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
290b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
291b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
292b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r2,  // key
293b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
294014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers,
295014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                                   &noInlineDescriptor);
296b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
297b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
298b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
299014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid NamedDescriptor::InitializePlatformSpecific(
300014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
301b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  static PlatformInterfaceDescriptor noInlineDescriptor =
302b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      PlatformInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS);
303b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
304b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
305b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r2,  // name
306b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
307014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers,
308014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                                   &noInlineDescriptor);
309b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
310b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
311b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
312014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallHandlerDescriptor::InitializePlatformSpecific(
313014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
314b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  static PlatformInterfaceDescriptor default_descriptor =
315b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
316b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
317b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
318b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r0,  // receiver
319b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
320014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers,
321014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                                   &default_descriptor);
322b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
323b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
324b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
325014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ArgumentAdaptorDescriptor::InitializePlatformSpecific(
326014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
327b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  static PlatformInterfaceDescriptor default_descriptor =
328b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
329b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
330b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
331b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r1,  // JSFunction
332014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r3,  // the new target
333b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r0,  // actual number of arguments
334b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r2,  // expected number of arguments
335b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
336014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers,
337014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                                   &default_descriptor);
338014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
339014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
340f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid ApiCallbackDescriptor::InitializePlatformSpecific(
341014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
342b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  static PlatformInterfaceDescriptor default_descriptor =
343b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      PlatformInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS);
344b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
345b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Register registers[] = {
346b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r0,  // callee
347b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r4,  // call_data
348b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r2,  // holder
349b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      r1,  // api_function_address
350b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
351014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers,
352014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                                   &default_descriptor);
353014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
354014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
355109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdochvoid InterpreterDispatchDescriptor::InitializePlatformSpecific(
356109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch    CallInterfaceDescriptorData* data) {
357109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  Register registers[] = {
358bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
359bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
360109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
361109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch}
362014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
363014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific(
364014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
365014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {
366014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r0,  // argument count (not including receiver)
367014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r2,  // address of first argument
368014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r1   // the target callable to be call
369014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  };
370014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
371014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
372014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
373014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific(
374014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
375014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {
376014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r0,  // argument count (not including receiver)
377014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r3,  // new target
378014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r1,  // constructor to call
379f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      r2,  // allocation site feedback if available, undefined otherwise
380f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      r4   // address of the first argument
381f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  };
382f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
383f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch}
384f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
385f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid InterpreterPushArgsAndConstructArrayDescriptor::InitializePlatformSpecific(
386f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch    CallInterfaceDescriptorData* data) {
387f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  Register registers[] = {
388f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      r0,  // argument count (not including receiver)
389f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      r1,  // target to call checked to be Array function
390f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      r2,  // allocation site feedback if available, undefined otherwise
391f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch      r3   // address of the first argument
392b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
393014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
394b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
395014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
396014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterCEntryDescriptor::InitializePlatformSpecific(
397014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    CallInterfaceDescriptorData* data) {
398014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Register registers[] = {
399014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r0,  // argument count (argc)
400014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r2,  // address of first argument (argv)
401014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch      r1   // the runtime function to call
402014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  };
403014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
404b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
405014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
406bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ResumeGeneratorDescriptor::InitializePlatformSpecific(
407bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch    CallInterfaceDescriptorData* data) {
408bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  Register registers[] = {
409bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      r0,  // the value to pass to the generator
410bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      r1,  // the JSGeneratorObject to resume
411bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch      r2   // the resume mode (tagged)
412bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  };
413bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
414bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}
415bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
41662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
41762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch    CallInterfaceDescriptorData* data) {
41862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Register registers[] = {
41962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch      r1,  // loaded new FP
42062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  };
42162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  data->InitializePlatformSpecific(arraysize(registers), registers);
42262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}
42362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
424014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace internal
425014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace v8
426b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
427b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif  // V8_TARGET_ARCH_ARM
428