1d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org// Copyright 2012 the V8 project authors. All rights reserved.
2d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be
3d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org// found in the LICENSE file.
4d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
5d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org#include "src/v8.h"
6d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
7d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org#if V8_TARGET_ARCH_IA32
8d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
9d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org#include "src/interface-descriptors.h"
10d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
11d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.orgnamespace v8 {
12d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.orgnamespace internal {
13d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
14ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgconst Register CallInterfaceDescriptor::ContextRegister() { return esi; }
15d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
16d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
179aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgconst Register LoadDescriptor::ReceiverRegister() { return edx; }
189aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgconst Register LoadDescriptor::NameRegister() { return ecx; }
199aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
209aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
216313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register VectorLoadICTrampolineDescriptor::SlotRegister() { return eax; }
229aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
239aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
249aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgconst Register VectorLoadICDescriptor::VectorRegister() { return ebx; }
259aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
269aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
279aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgconst Register StoreDescriptor::ReceiverRegister() { return edx; }
289aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgconst Register StoreDescriptor::NameRegister() { return ecx; }
299aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgconst Register StoreDescriptor::ValueRegister() { return eax; }
309aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
319aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
326313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register ElementTransitionAndStoreDescriptor::MapRegister() {
336313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org  return ebx;
349aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
359aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
369aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
376313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register InstanceofDescriptor::left() { return eax; }
386313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register InstanceofDescriptor::right() { return edx; }
399aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
409aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
416313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register ArgumentsAccessReadDescriptor::index() { return edx; }
426313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register ArgumentsAccessReadDescriptor::parameter_count() { return eax; }
439aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
449aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
456313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register ApiGetterDescriptor::function_address() { return edx; }
469aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
479aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
486313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register MathPowTaggedDescriptor::exponent() { return eax; }
496313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org
506313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org
516313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgconst Register MathPowIntegerDescriptor::exponent() {
526313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org  return MathPowTaggedDescriptor::exponent();
536313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org}
549aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
559aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
569aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) {
579aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, ebx};
589aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
599aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
609aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
619aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
629aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) {
639aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edi};
649aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
659aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
669aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
679aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
689aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) {
699aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // ToNumberStub invokes a function, and therefore needs a context.
709aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax};
719aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
729aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
739aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
749aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
759aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) {
769aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax};
779aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
789aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
799aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
809aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
819aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid FastCloneShallowArrayDescriptor::Initialize(
829aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
839aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax, ebx, ecx};
849aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {
859aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
869aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged()};
879aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
889aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
899aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
909aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
919aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid FastCloneShallowObjectDescriptor::Initialize(
929aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
939aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax, ebx, ecx, edx};
949aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
959aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
969aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
979aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
989aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid CreateAllocationSiteDescriptor::Initialize(
999aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
1009aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, ebx, edx};
1019aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1029aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1039aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1049aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1056313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgvoid StoreArrayLiteralElementDescriptor::Initialize(
1066313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org    CallInterfaceDescriptorData* data) {
1076313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org  Register registers[] = {esi, ecx, eax};
1086313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1096313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org}
1106313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org
1116313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org
1129aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
1139aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edi};
1149aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1159aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1169aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1179aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1186313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.orgvoid CallFunctionWithFeedbackDescriptor::Initialize(
1196313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org    CallInterfaceDescriptorData* data) {
1206313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org  Register registers[] = {esi, edi, edx};
1216313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org  Representation representations[] = {Representation::Tagged(),
1226313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org                                      Representation::Tagged(),
1236313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org                                      Representation::Smi()};
1246313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
1256313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org}
1266313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org
1276313e220249748eb26e1ddcee2bbe857fef03b42machenbach@chromium.org
1289aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) {
1299aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // eax : number of arguments
1309aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // ebx : feedback vector
1319aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // edx : (only if ebx is not the megamorphic symbol) slot in feedback
1329aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  //       vector (Smi)
1339aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // edi : constructor function
1349aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // TODO(turbofan): So far we don't gather type feedback and hence skip the
1359aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // slot parameter, but ArrayConstructStub needs the vector to be undefined.
1369aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax, edi, ebx};
1379aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1389aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1399aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1409aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1419aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid RegExpConstructResultDescriptor::Initialize(
1429aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
1439aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, ecx, ebx, eax};
1449aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1459aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1469aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1479aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1489aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid TransitionElementsKindDescriptor::Initialize(
1499aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
1509aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax, ebx};
1519aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1529aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1539aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1549aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1559aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid ArrayConstructorConstantArgCountDescriptor::Initialize(
1569aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
1579aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // register state
1589aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // eax -- number of arguments
1599aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // edi -- function
1609aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // ebx -- allocation site with elements kind
1619aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edi, ebx};
1629aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1639aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1649aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1659aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1669aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
1679aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // stack param count needs (constructor pointer, and single argument)
1689aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edi, ebx, eax};
1699aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {
1709aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(), Representation::Tagged(),
1719aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(), Representation::Integer32()};
1729aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
1739aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1749aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1759aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1769aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid InternalArrayConstructorConstantArgCountDescriptor::Initialize(
1779aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
1789aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // register state
1799aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // eax -- number of arguments
1809aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // edi -- function
1819aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edi};
1829aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
1839aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1849aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1859aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1869aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid InternalArrayConstructorDescriptor::Initialize(
1879aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
1889aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  // stack param count needs (constructor pointer, and single argument)
1899aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edi, eax};
1909aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {Representation::Tagged(),
1919aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org                                      Representation::Tagged(),
1929aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org                                      Representation::Integer32()};
1939aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
1949aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
1959aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1969aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
1979aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
1989aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax};
1999aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
2009aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2019aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2029aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2039aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2049aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, eax};
2059aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
2069aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2079aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2089aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2099aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2109aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edx, eax};
2119aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
2129aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2139aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2149aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2159aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid BinaryOpWithAllocationSiteDescriptor::Initialize(
2169aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org    CallInterfaceDescriptorData* data) {
2179aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, ecx, edx, eax};
2189aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
2199aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2209aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2219aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2229aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2239aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {esi, edx, eax};
2249aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, NULL);
2259aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2269aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2279aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2289aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2299aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {
2309aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      esi,  // context
2319aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      ecx,  // key
2329aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2339aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {
2349aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),  // context
2359aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),  // key
2369aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2379aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
2389aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2399aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2409aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2419aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2429aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {
2439aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      esi,  // context
2449aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      ecx,  // name
2459aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2469aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {
2479aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),  // context
2489aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),  // name
2499aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2509aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
2519aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2529aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2539aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2549aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2559aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {
2569aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      esi,  // context
2579aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      edx,  // name
2589aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2599aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {
2609aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),  // context
2619aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),  // receiver
2629aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2639aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
2649aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2659aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2669aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2679aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2689aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {
2699aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      esi,  // context
2709aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      edi,  // JSFunction
2719aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      eax,  // actual number of arguments
2729aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      ebx,  // expected number of arguments
2739aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2749aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {
2759aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),     // context
2769aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),     // JSFunction
2779aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Integer32(),  // actual number of arguments
2789aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Integer32(),  // expected number of arguments
2799aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2809aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
2819aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org}
2829aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2839aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org
2849aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.orgvoid ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
2859aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Register registers[] = {
2869aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      esi,  // context
2879aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      eax,  // callee
2889aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      ebx,  // call_data
2899aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      ecx,  // holder
2909aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      edx,  // api_function_address
2919aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2929aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  Representation representations[] = {
2939aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),    // context
2949aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),    // callee
2959aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),    // call_data
2969aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::Tagged(),    // holder
2979aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org      Representation::External(),  // api_function_address
2989aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  };
2999aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  data->Initialize(arraysize(registers), registers, representations);
300d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org}
301d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org}
302d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org}  // namespace v8::internal
303d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org
304d4f11c0cf476dd854eaebec1cbacb1afc7bea18emachenbach@chromium.org#endif  // V8_TARGET_ARCH_IA32
305