From e18e3cd4d88f35f3690d2993ac1702b65edde54f Mon Sep 17 00:00:00 2001 From: bmeurer Date: Thu, 19 Mar 2015 06:09:26 -0700 Subject: [PATCH] [stubs] Add missing interface descriptor for the CompareIC. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1006173003 Cr-Commit-Position: refs/heads/master@{#27305} --- src/arm/interface-descriptors-arm.cc | 6 ++++++ src/arm64/interface-descriptors-arm64.cc | 9 +++++++++ src/code-factory.cc | 2 +- src/ia32/interface-descriptors-ia32.cc | 6 ++++++ src/interface-descriptors.h | 7 +++++++ src/mips/interface-descriptors-mips.cc | 6 ++++++ src/mips64/interface-descriptors-mips64.cc | 6 ++++++ src/ppc/interface-descriptors-ppc.cc | 6 ++++++ src/x64/interface-descriptors-x64.cc | 6 ++++++ 9 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/arm/interface-descriptors-arm.cc b/src/arm/interface-descriptors-arm.cc index da0cba9..64d0055 100644 --- a/src/arm/interface-descriptors-arm.cc +++ b/src/arm/interface-descriptors-arm.cc @@ -227,6 +227,12 @@ void InternalArrayConstructorDescriptor::Initialize( } +void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { + Register registers[] = {cp, r1, r0}; + data->Initialize(arraysize(registers), registers, NULL); +} + + void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { Register registers[] = {cp, r0}; data->Initialize(arraysize(registers), registers, NULL); diff --git a/src/arm64/interface-descriptors-arm64.cc b/src/arm64/interface-descriptors-arm64.cc index 6deeabf..773dec4 100644 --- a/src/arm64/interface-descriptors-arm64.cc +++ b/src/arm64/interface-descriptors-arm64.cc @@ -261,6 +261,15 @@ void InternalArrayConstructorDescriptor::Initialize( } +void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { + // cp: context + // x1: left operand + // x0: right operand + Register registers[] = {cp, x1, x0}; + data->Initialize(arraysize(registers), registers, NULL); +} + + void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { // cp: context // x0: value to compare diff --git a/src/code-factory.cc b/src/code-factory.cc index d630786..71c5449 100644 --- a/src/code-factory.cc +++ b/src/code-factory.cc @@ -107,7 +107,7 @@ Callable CodeFactory::KeyedStoreICInOptimizedCode( // static Callable CodeFactory::CompareIC(Isolate* isolate, Token::Value op) { Handle code = CompareIC::GetUninitialized(isolate, op); - return Callable(code, BinaryOpDescriptor(isolate)); + return Callable(code, CompareDescriptor(isolate)); } diff --git a/src/ia32/interface-descriptors-ia32.cc b/src/ia32/interface-descriptors-ia32.cc index b0e57fc..407b1c7 100644 --- a/src/ia32/interface-descriptors-ia32.cc +++ b/src/ia32/interface-descriptors-ia32.cc @@ -228,6 +228,12 @@ void InternalArrayConstructorDescriptor::Initialize( } +void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { + Register registers[] = {esi, edx, eax}; + data->Initialize(arraysize(registers), registers, NULL); +} + + void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { Register registers[] = {esi, eax}; data->Initialize(arraysize(registers), registers, NULL); diff --git a/src/interface-descriptors.h b/src/interface-descriptors.h index 51fb920..a100123 100644 --- a/src/interface-descriptors.h +++ b/src/interface-descriptors.h @@ -40,6 +40,7 @@ class PlatformInterfaceDescriptor; V(ArrayConstructor) \ V(InternalArrayConstructorConstantArgCount) \ V(InternalArrayConstructor) \ + V(Compare) \ V(CompareNil) \ V(ToBoolean) \ V(BinaryOp) \ @@ -406,6 +407,12 @@ class InternalArrayConstructorDescriptor : public CallInterfaceDescriptor { }; +class CompareDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR(CompareDescriptor, CallInterfaceDescriptor) +}; + + class CompareNilDescriptor : public CallInterfaceDescriptor { public: DECLARE_DESCRIPTOR(CompareNilDescriptor, CallInterfaceDescriptor) diff --git a/src/mips/interface-descriptors-mips.cc b/src/mips/interface-descriptors-mips.cc index b8cae81..ec6c63f 100644 --- a/src/mips/interface-descriptors-mips.cc +++ b/src/mips/interface-descriptors-mips.cc @@ -227,6 +227,12 @@ void InternalArrayConstructorDescriptor::Initialize( } +void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { + Register registers[] = {cp, a1, a0}; + data->Initialize(arraysize(registers), registers, NULL); +} + + void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { Register registers[] = {cp, a0}; data->Initialize(arraysize(registers), registers, NULL); diff --git a/src/mips64/interface-descriptors-mips64.cc b/src/mips64/interface-descriptors-mips64.cc index 8d1b9f2..b9003af 100644 --- a/src/mips64/interface-descriptors-mips64.cc +++ b/src/mips64/interface-descriptors-mips64.cc @@ -227,6 +227,12 @@ void InternalArrayConstructorDescriptor::Initialize( } +void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { + Register registers[] = {cp, a1, a0}; + data->Initialize(arraysize(registers), registers, NULL); +} + + void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { Register registers[] = {cp, a0}; data->Initialize(arraysize(registers), registers, NULL); diff --git a/src/ppc/interface-descriptors-ppc.cc b/src/ppc/interface-descriptors-ppc.cc index f82d85d..01d0150 100644 --- a/src/ppc/interface-descriptors-ppc.cc +++ b/src/ppc/interface-descriptors-ppc.cc @@ -227,6 +227,12 @@ void InternalArrayConstructorDescriptor::Initialize( } +void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { + Register registers[] = {cp, r4, r3}; + data->Initialize(arraysize(registers), registers, NULL); +} + + void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { Register registers[] = {cp, r3}; data->Initialize(arraysize(registers), registers, NULL); diff --git a/src/x64/interface-descriptors-x64.cc b/src/x64/interface-descriptors-x64.cc index 1ca0c85..0cef86e 100644 --- a/src/x64/interface-descriptors-x64.cc +++ b/src/x64/interface-descriptors-x64.cc @@ -229,6 +229,12 @@ void InternalArrayConstructorDescriptor::Initialize( } +void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) { + Register registers[] = {rsi, rdx, rax}; + data->Initialize(arraysize(registers), registers, NULL); +} + + void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) { Register registers[] = {rsi, rax}; data->Initialize(arraysize(registers), registers, NULL); -- 2.7.4