1958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Copyright 2014 the V8 project authors. All rights reserved. 2958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Use of this source code is governed by a BSD-style license that can be 3958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// found in the LICENSE file. 4958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 5958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#if V8_TARGET_ARCH_PPC 6958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 7958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include "src/interface-descriptors.h" 8958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 9958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Berniernamespace v8 { 10958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Berniernamespace internal { 11958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 12958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register CallInterfaceDescriptor::ContextRegister() { return cp; } 13958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 1413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid CallInterfaceDescriptor::DefaultInitializePlatformSpecific( 1513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch CallInterfaceDescriptorData* data, int register_parameter_count) { 1613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch const Register default_stub_registers[] = {r3, r4, r5, r6, r7}; 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} 22958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 23f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::FunctionRegister() { 24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return r4; 25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::SlotsRegister() { return r3; } 27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 28958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register LoadDescriptor::ReceiverRegister() { return r4; } 29958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register LoadDescriptor::NameRegister() { return r5; } 30014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register LoadDescriptor::SlotRegister() { return r3; } 31958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register LoadWithVectorDescriptor::VectorRegister() { return r6; } 33958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 34c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochconst Register LoadICProtoArrayDescriptor::HandlerRegister() { return r7; } 35958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 36958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register StoreDescriptor::ReceiverRegister() { return r4; } 37958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register StoreDescriptor::NameRegister() { return r5; } 38958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register StoreDescriptor::ValueRegister() { return r3; } 39f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreDescriptor::SlotRegister() { return r7; } 40958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 41f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreWithVectorDescriptor::VectorRegister() { return r6; } 42014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 43f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::SlotRegister() { return r7; } 44f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::VectorRegister() { return r6; } 45f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::MapRegister() { return r8; } 46958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 47014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register StringCompareDescriptor::LeftRegister() { return r4; } 48014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register StringCompareDescriptor::RightRegister() { return r3; } 49958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 50bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::HolderRegister() { return r3; } 51bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::CallbackRegister() { return r6; } 52958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 53958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register MathPowTaggedDescriptor::exponent() { return r5; } 54958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 55958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 56958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierconst Register MathPowIntegerDescriptor::exponent() { 57958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier return MathPowTaggedDescriptor::exponent(); 58958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 59958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 60958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 61014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register GrowArrayElementsDescriptor::ObjectRegister() { return r3; } 62014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochconst Register GrowArrayElementsDescriptor::KeyRegister() { return r6; } 63014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 64014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastNewClosureDescriptor::InitializePlatformSpecific( 65014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 6662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r4, r5, r6}; 67109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 68109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch} 69958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 70014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 71014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// static 723b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register TypeConversionDescriptor::ArgumentRegister() { return r3; } 73958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 74014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid TypeofDescriptor::InitializePlatformSpecific( 75958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 76014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r6}; 77014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 78958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 79958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 80958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 81014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneRegExpDescriptor::InitializePlatformSpecific( 82958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 83014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r6, r5, r4, r3}; 84014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 85958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 86958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 87958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 88014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneShallowArrayDescriptor::InitializePlatformSpecific( 89958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 90014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r6, r5, r4}; 91014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 92958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 93958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 94958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 95014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid FastCloneShallowObjectDescriptor::InitializePlatformSpecific( 96958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 97014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r6, r5, r4, r3}; 98014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 99958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 100958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 101958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 102014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CreateAllocationSiteDescriptor::InitializePlatformSpecific( 103014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 104014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r5, r6}; 105014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 106014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 107014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 108014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 109014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CreateWeakCellDescriptor::InitializePlatformSpecific( 110014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 111014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r5, r6, r4}; 112014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 113014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 114014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 115014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 116014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallFunctionDescriptor::InitializePlatformSpecific( 117014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 118014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r4}; 119014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 120014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 121014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 12262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICTrampolineDescriptor::InitializePlatformSpecific( 123014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 12462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r4, r3, r6}; 125014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 126958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 127958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 12862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICDescriptor::InitializePlatformSpecific( 129958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 130c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch Register registers[] = {r4, r3, r6, r5}; 131014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 132958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 133958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 134958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 135014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallConstructDescriptor::InitializePlatformSpecific( 136014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 137958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // r3 : number of arguments 138958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // r4 : the function to call 139958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // r5 : feedback vector 140014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r6 : slot in feedback vector (Smi, for RecordCallTarget) 141014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r7 : new target (for IsSuperConstructorCall) 142958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // TODO(turbofan): So far we don't gather type feedback and hence skip the 143958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // slot parameter, but ArrayConstructStub needs the vector to be undefined. 144014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r3, r4, r7, r5}; 145014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 146014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 147014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 148014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 149014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallTrampolineDescriptor::InitializePlatformSpecific( 150014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 151014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r3 : number of arguments 152014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r4 : the target to call 153014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r4, r3}; 154014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 155958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 156958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 15762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallForwardVarargsDescriptor::InitializePlatformSpecific( 15862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch CallInterfaceDescriptorData* data) { 15962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch // r5 : start index (to support rest parameters) 16062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch // r4 : the target to call 16162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r4, r5}; 16262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 16362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch} 164958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 165014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ConstructStubDescriptor::InitializePlatformSpecific( 166958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 167014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r3 : number of arguments 168014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r4 : the target to call 169014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r6 : the new target 170014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r5 : allocation site or undefined 171014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r4, r6, r3, r5}; 172014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 173958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 174958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 175958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 176014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ConstructTrampolineDescriptor::InitializePlatformSpecific( 177958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 178014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r3 : number of arguments 179014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r4 : the target to call 180014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch // r6 : the new target 181014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r4, r6, r3}; 182014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 183958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 184958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 185958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 186014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid TransitionElementsKindDescriptor::InitializePlatformSpecific( 187014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 188014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r3, r4}; 189014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 190014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 191014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 192014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 193014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid AllocateHeapNumberDescriptor::InitializePlatformSpecific( 194014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 195014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(0, nullptr, nullptr); 196014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 197014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 19862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid ArrayConstructorDescriptor::InitializePlatformSpecific( 19962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch CallInterfaceDescriptorData* data) { 20062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch // kTarget, kNewTarget, kActualArgumentsCount, kAllocationSite 20162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r4, r6, r3, r5}; 20262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 20362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch} 204014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 205bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific( 206014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 207bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // register state 208bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // r3 -- number of arguments 209bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // r4 -- function 210bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // r5 -- allocation site with elements kind 211bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch Register registers[] = {r4, r5, r3}; 212014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 213014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 214014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 21513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid ArraySingleArgumentConstructorDescriptor::InitializePlatformSpecific( 216958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 217958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // register state 218958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // r3 -- number of arguments 219958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // r4 -- function 220958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // r5 -- allocation site with elements kind 22113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch Register registers[] = {r4, r5, r3}; 22213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 223958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 224958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 225958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 22613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific( 227014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 228958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier // stack param count needs (constructor pointer, and single argument) 229014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r4, r5, r3}; 230014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 231958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 232958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 233958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 23413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid VarArgFunctionDescriptor::InitializePlatformSpecific( 235014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 2363b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // stack param count needs (arg count) 237014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r3}; 238014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 239014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 240014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 2413b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CompareDescriptor::InitializePlatformSpecific( 242014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 2433b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r4, r3}; 244014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 245958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 246958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 247958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 248014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid BinaryOpDescriptor::InitializePlatformSpecific( 249014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 250014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r4, r3}; 251014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 252958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 253958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 254958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 255014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific( 256958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier CallInterfaceDescriptorData* data) { 257014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r5, r4, r3}; 258014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 259958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 260958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 261f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochvoid BinaryOpWithVectorDescriptor::InitializePlatformSpecific( 262f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch CallInterfaceDescriptorData* data) { 263f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // register state 264f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r4 -- lhs 265f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r3 -- rhs 266f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r7 -- slot id 267f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r6 -- vector 268f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Register registers[] = {r4, r3, r7, r6}; 269f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 270f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 271f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 272bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid CountOpDescriptor::InitializePlatformSpecific( 273bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch CallInterfaceDescriptorData* data) { 274bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch Register registers[] = {r4}; 275bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 276bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch} 277958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 278014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid StringAddDescriptor::InitializePlatformSpecific( 279014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 280014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = {r4, r3}; 281014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 282958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 283958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 284958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 285014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid KeyedDescriptor::InitializePlatformSpecific( 286014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 287958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Register registers[] = { 288958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r5, // key 289958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }; 290014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 291958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 292958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 293958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 294014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid NamedDescriptor::InitializePlatformSpecific( 295014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 296958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Register registers[] = { 297958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r5, // name 298958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }; 299014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 300958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 301958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 302958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 303014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid CallHandlerDescriptor::InitializePlatformSpecific( 304014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 305958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Register registers[] = { 306958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r3, // receiver 307958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }; 308014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 309958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 310958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 311958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 312014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid ArgumentAdaptorDescriptor::InitializePlatformSpecific( 313014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 314958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Register registers[] = { 315958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r4, // JSFunction 316014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r6, // the new target 317958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r3, // actual number of arguments 318958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r5, // expected number of arguments 319958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }; 320014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 321014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 322014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 323f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid ApiCallbackDescriptor::InitializePlatformSpecific( 324014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 325958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier Register registers[] = { 326958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r3, // callee 327958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r7, // call_data 328958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r5, // holder 329958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier r4, // api_function_address 330958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }; 331014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 332014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 333014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 334109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdochvoid InterpreterDispatchDescriptor::InitializePlatformSpecific( 335109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch CallInterfaceDescriptorData* data) { 336109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch Register registers[] = { 337bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister, 338bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister}; 339109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 340109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch} 341014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 342014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific( 343014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 344014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = { 345014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r3, // argument count (not including receiver) 346014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r5, // address of first argument 347014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r4 // the target callable to be call 348014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch }; 349014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 350014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 351014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 352014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific( 353014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 354014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = { 355014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r3, // argument count (not including receiver) 356014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r6, // new target 357014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r4, // constructor to call 358f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r5, // allocation site feedback if available, undefined otherwise 359f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r7 // address of the first argument 360f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch }; 361f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 362f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch} 363f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch 364f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid InterpreterPushArgsAndConstructArrayDescriptor::InitializePlatformSpecific( 365f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch CallInterfaceDescriptorData* data) { 366f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch Register registers[] = { 367f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r3, // argument count (not including receiver) 368f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r4, // target to call checked to be Array function 369f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r5, // allocation site feedback if available, undefined otherwise 370f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r6 // address of the first argument 371958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier }; 372014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 373958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 374014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 375014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvoid InterpreterCEntryDescriptor::InitializePlatformSpecific( 376014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch CallInterfaceDescriptorData* data) { 377014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch Register registers[] = { 378014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r3, // argument count (argc) 379014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r5, // address of first argument (argv) 380014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch r4 // the runtime function to call 381014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch }; 382014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 383958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 384bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 385bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ResumeGeneratorDescriptor::InitializePlatformSpecific( 386bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch CallInterfaceDescriptorData* data) { 387bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch Register registers[] = { 388bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch r3, // the value to pass to the generator 389bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch r4, // the JSGeneratorObject to resume 390bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch r5 // the resume mode (tagged) 391bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch }; 392bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 393bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch} 39462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch 39562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid FrameDropperTrampolineDescriptor::InitializePlatformSpecific( 39662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch CallInterfaceDescriptorData* data) { 39762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = { 39862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch r4, // loaded new FP 39962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch }; 40062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 40162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch} 40262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch 403014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace internal 404014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace v8 405958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 406958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#endif // V8_TARGET_ARCH_PPC 407