OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/crankshaft/ppc/lithium-codegen-ppc.h" | 5 #include "src/crankshaft/ppc/lithium-codegen-ppc.h" |
6 | 6 |
7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
8 #include "src/builtins/builtins-constructor.h" | 8 #include "src/builtins/builtins-constructor.h" |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 4004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4015 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { | 4015 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
4016 Representation representation = instr->hydrogen()->length()->representation(); | 4016 Representation representation = instr->hydrogen()->length()->representation(); |
4017 DCHECK(representation.Equals(instr->hydrogen()->index()->representation())); | 4017 DCHECK(representation.Equals(instr->hydrogen()->index()->representation())); |
4018 DCHECK(representation.IsSmiOrInteger32()); | 4018 DCHECK(representation.IsSmiOrInteger32()); |
4019 | 4019 |
4020 Condition cc = instr->hydrogen()->allow_equality() ? lt : le; | 4020 Condition cc = instr->hydrogen()->allow_equality() ? lt : le; |
4021 if (instr->length()->IsConstantOperand()) { | 4021 if (instr->length()->IsConstantOperand()) { |
4022 int32_t length = ToInteger32(LConstantOperand::cast(instr->length())); | 4022 int32_t length = ToInteger32(LConstantOperand::cast(instr->length())); |
4023 Register index = ToRegister(instr->index()); | 4023 Register index = ToRegister(instr->index()); |
4024 if (representation.IsSmi()) { | 4024 if (representation.IsSmi()) { |
4025 __ Cmpli(index, Operand(Smi::FromInt(length)), r0); | 4025 __ CmplSmiLiteral(index, Smi::FromInt(length), r0); |
4026 } else { | 4026 } else { |
4027 __ Cmplwi(index, Operand(length), r0); | 4027 __ Cmplwi(index, Operand(length), r0); |
4028 } | 4028 } |
4029 cc = CommuteCondition(cc); | 4029 cc = CommuteCondition(cc); |
4030 } else if (instr->index()->IsConstantOperand()) { | 4030 } else if (instr->index()->IsConstantOperand()) { |
4031 int32_t index = ToInteger32(LConstantOperand::cast(instr->index())); | 4031 int32_t index = ToInteger32(LConstantOperand::cast(instr->index())); |
4032 Register length = ToRegister(instr->length()); | 4032 Register length = ToRegister(instr->length()); |
4033 if (representation.IsSmi()) { | 4033 if (representation.IsSmi()) { |
4034 __ Cmpli(length, Operand(Smi::FromInt(index)), r0); | 4034 __ CmplSmiLiteral(length, Smi::FromInt(index), r0); |
4035 } else { | 4035 } else { |
4036 __ Cmplwi(length, Operand(index), r0); | 4036 __ Cmplwi(length, Operand(index), r0); |
4037 } | 4037 } |
4038 } else { | 4038 } else { |
4039 Register index = ToRegister(instr->index()); | 4039 Register index = ToRegister(instr->index()); |
4040 Register length = ToRegister(instr->length()); | 4040 Register length = ToRegister(instr->length()); |
4041 if (representation.IsSmi()) { | 4041 if (representation.IsSmi()) { |
4042 __ cmpl(length, index); | 4042 __ cmpl(length, index); |
4043 } else { | 4043 } else { |
4044 __ cmplw(length, index); | 4044 __ cmplw(length, index); |
(...skipping 1611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5656 __ LoadP(result, | 5656 __ LoadP(result, |
5657 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize)); | 5657 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize)); |
5658 __ bind(deferred->exit()); | 5658 __ bind(deferred->exit()); |
5659 __ bind(&done); | 5659 __ bind(&done); |
5660 } | 5660 } |
5661 | 5661 |
5662 #undef __ | 5662 #undef __ |
5663 | 5663 |
5664 } // namespace internal | 5664 } // namespace internal |
5665 } // namespace v8 | 5665 } // namespace v8 |
OLD | NEW |