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