From 04760937788a6d77d09ed7828a64c5dd4bd2d973 Mon Sep 17 00:00:00 2001 From: "mvstanton@chromium.org" Date: Thu, 16 Oct 2014 12:27:35 +0000 Subject: [PATCH] Fix clang compilation error. TBR=yangguo@chromium.org Review URL: https://codereview.chromium.org/659053002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24662 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/code-stubs-arm.cc | 18 ++++++++++-------- src/arm64/code-stubs-arm64.cc | 14 ++++++++------ src/mips/code-stubs-mips.cc | 21 +++++++++++---------- src/x64/code-stubs-x64.cc | 18 ++++++++++-------- 4 files changed, 39 insertions(+), 32 deletions(-) diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc index 7fe100d..f857de6 100644 --- a/src/arm/code-stubs-arm.cc +++ b/src/arm/code-stubs-arm.cc @@ -2787,14 +2787,16 @@ void CallICStub::GenerateMiss(MacroAssembler* masm) { // StringCharCodeAtGenerator void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) { // If the receiver is a smi trigger the non-string case. - __ JumpIfSmi(object_, receiver_not_string_); - - // Fetch the instance type of the receiver into result register. - __ ldr(result_, FieldMemOperand(object_, HeapObject::kMapOffset)); - __ ldrb(result_, FieldMemOperand(result_, Map::kInstanceTypeOffset)); - // If the receiver is not a string trigger the non-string case. - __ tst(result_, Operand(kIsNotStringMask)); - __ b(ne, receiver_not_string_); + if (check_mode_ == RECEIVER_IS_UNKNOWN) { + __ JumpIfSmi(object_, receiver_not_string_); + + // Fetch the instance type of the receiver into result register. + __ ldr(result_, FieldMemOperand(object_, HeapObject::kMapOffset)); + __ ldrb(result_, FieldMemOperand(result_, Map::kInstanceTypeOffset)); + // If the receiver is not a string trigger the non-string case. + __ tst(result_, Operand(kIsNotStringMask)); + __ b(ne, receiver_not_string_); + } // If the index is non-smi trigger the non-smi case. __ JumpIfNotSmi(index_, &index_not_smi_); diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc index f3fb6ac..9056772 100644 --- a/src/arm64/code-stubs-arm64.cc +++ b/src/arm64/code-stubs-arm64.cc @@ -3125,14 +3125,16 @@ void CallICStub::GenerateMiss(MacroAssembler* masm) { void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) { // If the receiver is a smi trigger the non-string case. - __ JumpIfSmi(object_, receiver_not_string_); + if (check_mode_ == RECEIVER_IS_UNKNOWN) { + __ JumpIfSmi(object_, receiver_not_string_); - // Fetch the instance type of the receiver into result register. - __ Ldr(result_, FieldMemOperand(object_, HeapObject::kMapOffset)); - __ Ldrb(result_, FieldMemOperand(result_, Map::kInstanceTypeOffset)); + // Fetch the instance type of the receiver into result register. + __ Ldr(result_, FieldMemOperand(object_, HeapObject::kMapOffset)); + __ Ldrb(result_, FieldMemOperand(result_, Map::kInstanceTypeOffset)); - // If the receiver is not a string trigger the non-string case. - __ TestAndBranchIfAnySet(result_, kIsNotStringMask, receiver_not_string_); + // If the receiver is not a string trigger the non-string case. + __ TestAndBranchIfAnySet(result_, kIsNotStringMask, receiver_not_string_); + } // If the index is non-smi trigger the non-smi case. __ JumpIfNotSmi(index_, &index_not_smi_); diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc index bebb15f..4eb1194 100644 --- a/src/mips/code-stubs-mips.cc +++ b/src/mips/code-stubs-mips.cc @@ -2937,16 +2937,17 @@ void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) { DCHECK(!t0.is(index_)); DCHECK(!t0.is(result_)); DCHECK(!t0.is(object_)); - - // If the receiver is a smi trigger the non-string case. - __ JumpIfSmi(object_, receiver_not_string_); - - // Fetch the instance type of the receiver into result register. - __ lw(result_, FieldMemOperand(object_, HeapObject::kMapOffset)); - __ lbu(result_, FieldMemOperand(result_, Map::kInstanceTypeOffset)); - // If the receiver is not a string trigger the non-string case. - __ And(t0, result_, Operand(kIsNotStringMask)); - __ Branch(receiver_not_string_, ne, t0, Operand(zero_reg)); + if (check_mode_ == RECEIVER_IS_UNKNOWN) { + // If the receiver is a smi trigger the non-string case. + __ JumpIfSmi(object_, receiver_not_string_); + + // Fetch the instance type of the receiver into result register. + __ lw(result_, FieldMemOperand(object_, HeapObject::kMapOffset)); + __ lbu(result_, FieldMemOperand(result_, Map::kInstanceTypeOffset)); + // If the receiver is not a string trigger the non-string case. + __ And(t0, result_, Operand(kIsNotStringMask)); + __ Branch(receiver_not_string_, ne, t0, Operand(zero_reg)); + } // If the index is non-smi trigger the non-smi case. __ JumpIfNotSmi(index_, &index_not_smi_); diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc index a12e92e..8e6fc44 100644 --- a/src/x64/code-stubs-x64.cc +++ b/src/x64/code-stubs-x64.cc @@ -2739,14 +2739,16 @@ void InstanceofStub::Generate(MacroAssembler* masm) { void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) { // If the receiver is a smi trigger the non-string case. - __ JumpIfSmi(object_, receiver_not_string_); - - // Fetch the instance type of the receiver into result register. - __ movp(result_, FieldOperand(object_, HeapObject::kMapOffset)); - __ movzxbl(result_, FieldOperand(result_, Map::kInstanceTypeOffset)); - // If the receiver is not a string trigger the non-string case. - __ testb(result_, Immediate(kIsNotStringMask)); - __ j(not_zero, receiver_not_string_); + if (check_mode_ == RECEIVER_IS_UNKNOWN) { + __ JumpIfSmi(object_, receiver_not_string_); + + // Fetch the instance type of the receiver into result register. + __ movp(result_, FieldOperand(object_, HeapObject::kMapOffset)); + __ movzxbl(result_, FieldOperand(result_, Map::kInstanceTypeOffset)); + // If the receiver is not a string trigger the non-string case. + __ testb(result_, Immediate(kIsNotStringMask)); + __ j(not_zero, receiver_not_string_); + } // If the index is non-smi trigger the non-smi case. __ JumpIfNotSmi(index_, &index_not_smi_); -- 2.7.4