| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index 9a9688bde5ce97c7f3236f61b25a7906c7a7c84f..b989777c72fb6c6528817a4b838d356c0ba0ff4c 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -4162,42 +4162,25 @@ void LCodeGen::DoStoreNamedGeneric(LStoreNamedGeneric* instr) {
|
| }
|
|
|
|
|
| -void LCodeGen::ApplyCheckIf(Condition condition,
|
| - LBoundsCheck* check,
|
| - Register src1,
|
| - const Operand& src2) {
|
| - if (FLAG_debug_code && check->hydrogen()->skip_check()) {
|
| +void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) {
|
| + Condition cc = instr->hydrogen()->allow_equality() ? hi : hs;
|
| + Operand operand(0);
|
| + Register reg;
|
| + if (instr->index()->IsConstantOperand()) {
|
| + operand = ToOperand(instr->index());
|
| + reg = ToRegister(instr->length());
|
| + cc = ReverseCondition(cc);
|
| + } else {
|
| + reg = ToRegister(instr->index());
|
| + operand = ToOperand(instr->length());
|
| + }
|
| + if (FLAG_debug_code && instr->hydrogen()->skip_check()) {
|
| Label done;
|
| - __ Branch(&done, NegateCondition(condition), src1, src2);
|
| + __ Branch(&done, NegateCondition(cc), reg, operand);
|
| __ stop("eliminated bounds check failed");
|
| __ bind(&done);
|
| } else {
|
| - DeoptimizeIf(condition, check->environment(), src1, src2);
|
| - }
|
| -}
|
| -
|
| -
|
| -void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) {
|
| - if (instr->hydrogen()->skip_check()) return;
|
| -
|
| - Condition condition = instr->hydrogen()->allow_equality() ? hi : hs;
|
| - if (instr->index()->IsConstantOperand()) {
|
| - int constant_index =
|
| - ToInteger32(LConstantOperand::cast(instr->index()));
|
| - if (instr->hydrogen()->length()->representation().IsSmi()) {
|
| - __ li(at, Operand(Smi::FromInt(constant_index)));
|
| - } else {
|
| - __ li(at, Operand(constant_index));
|
| - }
|
| - ApplyCheckIf(condition,
|
| - instr,
|
| - at,
|
| - Operand(ToRegister(instr->length())));
|
| - } else {
|
| - ApplyCheckIf(condition,
|
| - instr,
|
| - ToRegister(instr->index()),
|
| - Operand(ToRegister(instr->length())));
|
| + DeoptimizeIf(cc, instr->environment(), reg, operand);
|
| }
|
| }
|
|
|
|
|