13b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch// Copyright 2015 the V8 project authors. All rights reserved. 23b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 33b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch// found in the LICENSE file. 43b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 53b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch#if V8_TARGET_ARCH_S390 63b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 73b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch#include "src/interface-descriptors.h" 83b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 93b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochnamespace v8 { 103b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochnamespace internal { 113b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 123b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register CallInterfaceDescriptor::ContextRegister() { return cp; } 133b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid CallInterfaceDescriptor::DefaultInitializePlatformSpecific( 1513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch CallInterfaceDescriptorData* data, int register_parameter_count) { 1613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch const Register default_stub_registers[] = {r2, r3, r4, r5, r6}; 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} 2213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch 23f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::FunctionRegister() { 24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return r3; 25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register FastNewFunctionContextDescriptor::SlotsRegister() { return r2; } 27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 283b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register LoadDescriptor::ReceiverRegister() { return r3; } 293b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register LoadDescriptor::NameRegister() { return r4; } 303b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register LoadDescriptor::SlotRegister() { return r2; } 313b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 323b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register LoadWithVectorDescriptor::VectorRegister() { return r5; } 333b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 34c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochconst Register LoadICProtoArrayDescriptor::HandlerRegister() { return r6; } 35c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch 363b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register StoreDescriptor::ReceiverRegister() { return r3; } 373b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register StoreDescriptor::NameRegister() { return r4; } 383b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register StoreDescriptor::ValueRegister() { return r2; } 39f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreDescriptor::SlotRegister() { return r6; } 403b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 41f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst Register StoreWithVectorDescriptor::VectorRegister() { return r5; } 423b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 43f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::SlotRegister() { return r6; } 44f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::VectorRegister() { return r5; } 45f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochconst Register StoreTransitionDescriptor::MapRegister() { return r7; } 463b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 473b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register StringCompareDescriptor::LeftRegister() { return r3; } 483b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register StringCompareDescriptor::RightRegister() { return r2; } 493b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 50bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::HolderRegister() { return r2; } 51bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochconst Register ApiGetterDescriptor::CallbackRegister() { return r5; } 523b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 533b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register MathPowTaggedDescriptor::exponent() { return r4; } 543b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 553b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register MathPowIntegerDescriptor::exponent() { 563b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch return MathPowTaggedDescriptor::exponent(); 573b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 583b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 593b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register GrowArrayElementsDescriptor::ObjectRegister() { return r2; } 603b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register GrowArrayElementsDescriptor::KeyRegister() { return r5; } 613b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 623b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid FastNewClosureDescriptor::InitializePlatformSpecific( 633b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 6462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r3, r4, r5}; 653b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 663b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 673b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 683b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch// static 693b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochconst Register TypeConversionDescriptor::ArgumentRegister() { return r2; } 703b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 713b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid TypeofDescriptor::InitializePlatformSpecific( 723b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 733b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r5}; 743b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 753b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 763b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 773b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid FastCloneRegExpDescriptor::InitializePlatformSpecific( 783b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 793b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r5, r4, r3, r2}; 803b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 813b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 823b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 833b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid FastCloneShallowArrayDescriptor::InitializePlatformSpecific( 843b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 853b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r5, r4, r3}; 863b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 873b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 883b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 893b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid FastCloneShallowObjectDescriptor::InitializePlatformSpecific( 903b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 913b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r5, r4, r3, r2}; 923b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 933b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 943b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 953b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CreateAllocationSiteDescriptor::InitializePlatformSpecific( 963b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 973b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r4, r5}; 983b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 993b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1003b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1013b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CreateWeakCellDescriptor::InitializePlatformSpecific( 1023b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1033b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r4, r5, r3}; 1043b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1053b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1063b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1073b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CallFunctionDescriptor::InitializePlatformSpecific( 1083b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1093b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3}; 1103b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1113b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1123b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 11362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICTrampolineDescriptor::InitializePlatformSpecific( 1143b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 11562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r3, r2, r5}; 1163b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1173b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1183b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 11962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallICDescriptor::InitializePlatformSpecific( 1203b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 121c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch Register registers[] = {r3, r2, r5, r4}; 1223b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1233b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1243b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1253b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CallConstructDescriptor::InitializePlatformSpecific( 1263b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1273b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r2 : number of arguments 1283b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r3 : the function to call 1293b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r4 : feedback vector 1303b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r5 : slot in feedback vector (Smi, for RecordCallTarget) 1313b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r6 : new target (for IsSuperConstructorCall) 1323b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // TODO(turbofan): So far we don't gather type feedback and hence skip the 1333b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // slot parameter, but ArrayConstructStub needs the vector to be undefined. 1343b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r2, r3, r6, r4}; 1353b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1363b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1373b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1383b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CallTrampolineDescriptor::InitializePlatformSpecific( 1393b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1403b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r2 : number of arguments 1413b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r3 : the target to call 1423b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3, r2}; 1433b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1443b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1453b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 14662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid CallForwardVarargsDescriptor::InitializePlatformSpecific( 14762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch CallInterfaceDescriptorData* data) { 14862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch // r4 : start index (to support rest parameters) 14962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch // r3 : the target to call 15062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r3, r4}; 15162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 15262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch} 15362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch 1543b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid ConstructStubDescriptor::InitializePlatformSpecific( 1553b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1563b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r2 : number of arguments 1573b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r3 : the target to call 1583b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r5 : the new target 1593b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r4 : allocation site or undefined 1603b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3, r5, r2, r4}; 1613b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1623b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1633b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1643b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid ConstructTrampolineDescriptor::InitializePlatformSpecific( 1653b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1663b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r2 : number of arguments 1673b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r3 : the target to call 1683b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r5 : the new target 1693b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3, r5, r2}; 1703b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1713b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1723b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1733b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid TransitionElementsKindDescriptor::InitializePlatformSpecific( 1743b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1753b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r2, r3}; 1763b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1773b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1783b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 1793b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid AllocateHeapNumberDescriptor::InitializePlatformSpecific( 1803b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 1813b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(0, nullptr, nullptr); 1823b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 1833b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 18462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid ArrayConstructorDescriptor::InitializePlatformSpecific( 18562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch CallInterfaceDescriptorData* data) { 18662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch // kTarget, kNewTarget, kActualArgumentsCount, kAllocationSite 18762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = {r3, r5, r2, r4}; 18862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 18962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch} 1903b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 191bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific( 1923b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 193bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // register state 194bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // r2 -- number of arguments 195bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // r3 -- function 196bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch // r4 -- allocation site with elements kind 197bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch Register registers[] = {r3, r4, r2}; 1983b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 1993b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2003b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 20113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid ArraySingleArgumentConstructorDescriptor::InitializePlatformSpecific( 2023b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2033b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // register state 2043b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r2 -- number of arguments 2053b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r3 -- function 2063b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // r4 -- allocation site with elements kind 2073b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3, r4, r2}; 20813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 2093b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2103b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 21113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific( 2123b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2133b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // stack param count needs (constructor pointer, and single argument) 21413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch Register registers[] = {r3, r4, r2}; 2153b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2163b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2173b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 21813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdochvoid VarArgFunctionDescriptor::InitializePlatformSpecific( 2193b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2203b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch // stack param count needs (arg count) 2213b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r2}; 2223b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2233b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2243b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 2253b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CompareDescriptor::InitializePlatformSpecific( 2263b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2273b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3, r2}; 2283b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2293b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2303b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 2313b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid BinaryOpDescriptor::InitializePlatformSpecific( 2323b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2333b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3, r2}; 2343b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2353b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2363b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 2373b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific( 2383b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2393b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r4, r3, r2}; 2403b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2413b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2423b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 243f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochvoid BinaryOpWithVectorDescriptor::InitializePlatformSpecific( 244f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch CallInterfaceDescriptorData* data) { 245f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // register state 246f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r3 -- lhs 247f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r2 -- rhs 248f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r6 -- slot id 249f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch // r5 -- vector 250f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch Register registers[] = {r3, r2, r6, r5}; 251f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 252f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 253f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 254bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid CountOpDescriptor::InitializePlatformSpecific( 255bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch CallInterfaceDescriptorData* data) { 256bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch Register registers[] = {r4}; 257bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 258bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch} 259bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 2603b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid StringAddDescriptor::InitializePlatformSpecific( 2613b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2623b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = {r3, r2}; 2633b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2643b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2653b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 2663b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid KeyedDescriptor::InitializePlatformSpecific( 2673b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2683b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 2693b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r4, // key 2703b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 2713b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2723b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2733b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 2743b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid NamedDescriptor::InitializePlatformSpecific( 2753b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2763b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 2773b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r4, // name 2783b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 2793b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2803b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2813b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 2823b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid CallHandlerDescriptor::InitializePlatformSpecific( 2833b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2843b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 2853b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r2, // receiver 2863b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 2873b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2883b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 2893b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 2903b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid ArgumentAdaptorDescriptor::InitializePlatformSpecific( 2913b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 2923b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 2933b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r3, // JSFunction 2943b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r5, // the new target 2953b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r2, // actual number of arguments 2963b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r4, // expected number of arguments 2973b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 2983b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 2993b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 3003b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 301f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid ApiCallbackDescriptor::InitializePlatformSpecific( 3023b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 3033b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 3043b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r2, // callee 3053b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r6, // call_data 3063b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r4, // holder 3073b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r3, // api_function_address 3083b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 3093b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 3103b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 3113b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 3123b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid InterpreterDispatchDescriptor::InitializePlatformSpecific( 3133b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 3143b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 315bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister, 316bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister}; 3173b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 3183b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 3193b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 3203b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific( 3213b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 3223b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 3233b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r2, // argument count (not including receiver) 3243b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r4, // address of first argument 3253b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r3 // the target callable to be call 3263b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 3273b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 3283b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 3293b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 3303b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific( 3313b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 3323b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 3333b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r2, // argument count (not including receiver) 3343b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r5, // new target 3353b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r3, // constructor to call 336f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r4, // allocation site feedback if available, undefined otherwise 337f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r6 // address of the first argument 338f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch }; 339f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 340f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch} 341f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch 342f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochvoid InterpreterPushArgsAndConstructArrayDescriptor::InitializePlatformSpecific( 343f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch CallInterfaceDescriptorData* data) { 344f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch Register registers[] = { 345f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r2, // argument count (not including receiver) 346f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r3, // target to call checked to be Array function 347f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r4, // allocation site feedback if available, undefined otherwise 348f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch r5 // address of the first argument 3493b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 3503b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 3513b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 3523b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 3533b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdochvoid InterpreterCEntryDescriptor::InitializePlatformSpecific( 3543b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch CallInterfaceDescriptorData* data) { 3553b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch Register registers[] = { 3563b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r2, // argument count (argc) 3573b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r4, // address of first argument (argv) 3583b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch r3 // the runtime function to call 3593b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch }; 3603b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 3613b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} 3623b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 363bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochvoid ResumeGeneratorDescriptor::InitializePlatformSpecific( 364bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch CallInterfaceDescriptorData* data) { 365bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch Register registers[] = { 366bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch r2, // the value to pass to the generator 367bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch r3, // the JSGeneratorObject to resume 368bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch r4 // the resume mode (tagged) 369bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch }; 370bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 371bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch} 372bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 37362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochvoid FrameDropperTrampolineDescriptor::InitializePlatformSpecific( 37462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch CallInterfaceDescriptorData* data) { 37562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch Register registers[] = { 37662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch r3, // loaded new FP 37762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch }; 37862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch data->InitializePlatformSpecific(arraysize(registers), registers); 37962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch} 38062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch 3813b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} // namespace internal 3823b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch} // namespace v8 3833b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch 3843b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch#endif // V8_TARGET_ARCH_S390 385