| Index: src/mips/code-stubs-mips.cc
|
| diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
|
| index bebb15f70cbdb0b5cf00e30f63d8a65f8f7bdc34..4eb11942a5efb6a952d9e89a4d64eb11cf948fab 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_);
|
|
|