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