1ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// Copyright 2012 the V8 project authors. All rights reserved. 2ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 3ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// found in the LICENSE file. 4ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 5ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org#include "src/v8.h" 6ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 7ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org#if V8_TARGET_ARCH_X87 8ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 9ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org#include "src/interface-descriptors.h" 10ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 11ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgnamespace v8 { 12ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgnamespace internal { 13ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 14ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgconst Register CallInterfaceDescriptor::ContextRegister() { return esi; } 15ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 16ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 1742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgconst Register LoadDescriptor::ReceiverRegister() { return edx; } 1842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgconst Register LoadDescriptor::NameRegister() { return ecx; } 1942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 2042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 21b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register VectorLoadICTrampolineDescriptor::SlotRegister() { return eax; } 2242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 2342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 2442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgconst Register VectorLoadICDescriptor::VectorRegister() { return ebx; } 2542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 2642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 2742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgconst Register StoreDescriptor::ReceiverRegister() { return edx; } 2842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgconst Register StoreDescriptor::NameRegister() { return ecx; } 2942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgconst Register StoreDescriptor::ValueRegister() { return eax; } 3042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 3142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 32b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register ElementTransitionAndStoreDescriptor::MapRegister() { 33b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org return ebx; 3442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 3542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 3642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 37b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register InstanceofDescriptor::left() { return eax; } 38b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register InstanceofDescriptor::right() { return edx; } 3942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 4042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 41b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register ArgumentsAccessReadDescriptor::index() { return edx; } 42b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register ArgumentsAccessReadDescriptor::parameter_count() { return eax; } 4342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 4442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 45b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register ApiGetterDescriptor::function_address() { return edx; } 4642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 4742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 48b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register MathPowTaggedDescriptor::exponent() { return eax; } 49b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org 50b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org 51b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgconst Register MathPowIntegerDescriptor::exponent() { 52b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org return MathPowTaggedDescriptor::exponent(); 53b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org} 5442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 5542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 5642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) { 5742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, ebx}; 5842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 5942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 6042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 6142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 6242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) { 6342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edi}; 6442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 6542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 6642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 6742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 6842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) { 6942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // ToNumberStub invokes a function, and therefore needs a context. 7042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax}; 7142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 7242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 7342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 7442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 7542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) { 7642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax}; 7742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 7842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 7942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 8042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 8142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid FastCloneShallowArrayDescriptor::Initialize( 8242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 8342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax, ebx, ecx}; 8442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = { 8542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), Representation::Tagged(), Representation::Smi(), 8642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged()}; 8742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 8842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 8942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 9042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 9142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid FastCloneShallowObjectDescriptor::Initialize( 9242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 9342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax, ebx, ecx, edx}; 9442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 9542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 9642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 9742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 9842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid CreateAllocationSiteDescriptor::Initialize( 9942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 10042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, ebx, edx}; 10142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 10242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 10342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 10442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 105b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgvoid StoreArrayLiteralElementDescriptor::Initialize( 106b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org CallInterfaceDescriptorData* data) { 107b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org Register registers[] = {esi, ecx, eax}; 108b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 109b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org} 110b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org 111b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org 11242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { 11342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edi}; 11442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 11542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 11642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 11742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 118b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.orgvoid CallFunctionWithFeedbackDescriptor::Initialize( 119b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org CallInterfaceDescriptorData* data) { 120b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org Register registers[] = {esi, edi, edx}; 121b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org Representation representations[] = {Representation::Tagged(), 122b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org Representation::Tagged(), 123b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org Representation::Smi()}; 124b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 125b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org} 126b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org 127b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org 12842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) { 12942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // eax : number of arguments 13042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // ebx : feedback vector 13142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // edx : (only if ebx is not the megamorphic symbol) slot in feedback 13242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // vector (Smi) 13342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // edi : constructor function 13442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // TODO(turbofan): So far we don't gather type feedback and hence skip the 13542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // slot parameter, but ArrayConstructStub needs the vector to be undefined. 13642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax, edi, ebx}; 13742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 13842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 13942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 14042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 14142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid RegExpConstructResultDescriptor::Initialize( 14242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 14342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, ecx, ebx, eax}; 14442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 14542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 14642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 14742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 14842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid TransitionElementsKindDescriptor::Initialize( 14942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 15042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax, ebx}; 15142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 15242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 15342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 15442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 15542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid ArrayConstructorConstantArgCountDescriptor::Initialize( 15642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 15742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // register state 15842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // eax -- number of arguments 15942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // edi -- function 16042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // ebx -- allocation site with elements kind 16142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edi, ebx}; 16242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 16342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 16442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 16542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 16642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) { 16742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // stack param count needs (constructor pointer, and single argument) 16842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edi, ebx, eax}; 16942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = { 17042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), Representation::Tagged(), 17142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), Representation::Integer32()}; 17242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 17342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 17442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 17542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 17642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid InternalArrayConstructorConstantArgCountDescriptor::Initialize( 17742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 17842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // register state 17942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // eax -- number of arguments 18042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // edi -- function 18142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edi}; 18242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 18342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 18442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 18542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 18642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid InternalArrayConstructorDescriptor::Initialize( 18742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 18842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org // stack param count needs (constructor pointer, and single argument) 18942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edi, eax}; 19042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = {Representation::Tagged(), 19142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), 19242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Integer32()}; 19342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 19442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 19542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 19642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 19742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { 19842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax}; 19942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 20042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 20142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 20242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 20342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) { 20442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, eax}; 20542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 20642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 20742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 20842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 20942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) { 21042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edx, eax}; 21142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 21242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 21342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 21442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 21542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid BinaryOpWithAllocationSiteDescriptor::Initialize( 21642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org CallInterfaceDescriptorData* data) { 21742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, ecx, edx, eax}; 21842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 21942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 22042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 22142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 22242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) { 22342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = {esi, edx, eax}; 22442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, NULL); 22542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 22642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 22742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 22842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) { 22942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = { 23042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org esi, // context 23142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org ecx, // key 23242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 23342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = { 23442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // context 23542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // key 23642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 23742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 23842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 23942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 24042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 24142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) { 24242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = { 24342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org esi, // context 24442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org ecx, // name 24542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 24642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = { 24742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // context 24842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // name 24942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 25042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 25142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 25242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 25342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 25442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) { 25542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = { 25642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org esi, // context 25742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org edx, // name 25842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 25942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = { 26042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // context 26142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // receiver 26242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 26342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 26442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 26542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 26642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 26742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) { 26842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = { 26942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org esi, // context 27042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org edi, // JSFunction 27142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org eax, // actual number of arguments 27242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org ebx, // expected number of arguments 27342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 27442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = { 27542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // context 27642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // JSFunction 27742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Integer32(), // actual number of arguments 27842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Integer32(), // expected number of arguments 27942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 28042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 28142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org} 28242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 28342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org 28442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.orgvoid ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { 28542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Register registers[] = { 28642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org esi, // context 28742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org eax, // callee 28842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org ebx, // call_data 28942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org ecx, // holder 29042ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org edx, // api_function_address 29142ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 29242ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation representations[] = { 29342ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // context 29442ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // callee 29542ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // call_data 29642ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::Tagged(), // holder 29742ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org Representation::External(), // api_function_address 29842ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org }; 29942ed2fc449e83fab2ccbf1b769a5e83715c9d783machenbach@chromium.org data->Initialize(arraysize(registers), registers, representations); 300ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 301ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 302ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} // namespace v8::internal 303ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 304ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org#endif // V8_TARGET_ARCH_X87 305