| Index: src/arm64/lithium-codegen-arm64.cc
|
| diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc
|
| index be1603cbbeb9e9b0587f53ad76d80ae55c4fb550..9b523722d8a7c3b61641af4c71df69d0b862db91 100644
|
| --- a/src/arm64/lithium-codegen-arm64.cc
|
| +++ b/src/arm64/lithium-codegen-arm64.cc
|
| @@ -1226,17 +1226,7 @@ Operand LCodeGen::ToOperand(LOperand* op) {
|
| }
|
|
|
|
|
| -Operand LCodeGen::ToOperand32I(LOperand* op) {
|
| - return ToOperand32(op, SIGNED_INT32);
|
| -}
|
| -
|
| -
|
| -Operand LCodeGen::ToOperand32U(LOperand* op) {
|
| - return ToOperand32(op, UNSIGNED_INT32);
|
| -}
|
| -
|
| -
|
| -Operand LCodeGen::ToOperand32(LOperand* op, IntegerSignedness signedness) {
|
| +Operand LCodeGen::ToOperand32(LOperand* op) {
|
| DCHECK(op != NULL);
|
| if (op->IsRegister()) {
|
| return Operand(ToRegister32(op));
|
| @@ -1245,10 +1235,7 @@ Operand LCodeGen::ToOperand32(LOperand* op, IntegerSignedness signedness) {
|
| HConstant* constant = chunk()->LookupConstant(const_op);
|
| Representation r = chunk_->LookupLiteralRepresentation(const_op);
|
| if (r.IsInteger32()) {
|
| - DCHECK(constant->HasInteger32Value());
|
| - return (signedness == SIGNED_INT32)
|
| - ? Operand(constant->Integer32Value())
|
| - : Operand(static_cast<uint32_t>(constant->Integer32Value()));
|
| + return Operand(constant->Integer32Value());
|
| } else {
|
| // Other constants not implemented.
|
| Abort(kToOperand32UnsupportedImmediate);
|
| @@ -1314,12 +1301,10 @@ Handle<Object> LCodeGen::ToHandle(LConstantOperand* op) const {
|
| }
|
|
|
|
|
| -template<class LI>
|
| -Operand LCodeGen::ToShiftedRightOperand32(LOperand* right, LI* shift_info,
|
| - IntegerSignedness signedness) {
|
| +template <class LI>
|
| +Operand LCodeGen::ToShiftedRightOperand32(LOperand* right, LI* shift_info) {
|
| if (shift_info->shift() == NO_SHIFT) {
|
| - return (signedness == SIGNED_INT32) ? ToOperand32I(right)
|
| - : ToOperand32U(right);
|
| + return ToOperand32(right);
|
| } else {
|
| return Operand(
|
| ToRegister32(right),
|
| @@ -1501,7 +1486,7 @@ void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
|
| }
|
| } else {
|
| Register length = ToRegister32(instr->length());
|
| - Operand index = ToOperand32I(instr->index());
|
| + Operand index = ToOperand32(instr->index());
|
| __ Sub(result.W(), length, index);
|
| __ Add(result.W(), result.W(), 1);
|
| __ Ldr(result, MemOperand(arguments, result, UXTW, kPointerSizeLog2));
|
| @@ -1525,7 +1510,7 @@ void LCodeGen::DoAddI(LAddI* instr) {
|
| bool can_overflow = instr->hydrogen()->CheckFlag(HValue::kCanOverflow);
|
| Register result = ToRegister32(instr->result());
|
| Register left = ToRegister32(instr->left());
|
| - Operand right = ToShiftedRightOperand32I(instr->right(), instr);
|
| + Operand right = ToShiftedRightOperand32(instr->right(), instr);
|
|
|
| if (can_overflow) {
|
| __ Adds(result, left, right);
|
| @@ -1804,7 +1789,7 @@ void LCodeGen::DoArithmeticT(LArithmeticT* instr) {
|
| void LCodeGen::DoBitI(LBitI* instr) {
|
| Register result = ToRegister32(instr->result());
|
| Register left = ToRegister32(instr->left());
|
| - Operand right = ToShiftedRightOperand32U(instr->right(), instr);
|
| + Operand right = ToShiftedRightOperand32(instr->right(), instr);
|
|
|
| switch (instr->op()) {
|
| case Token::BIT_AND: __ And(result, left, right); break;
|
| @@ -1838,13 +1823,13 @@ void LCodeGen::DoBoundsCheck(LBoundsCheck *instr) {
|
| DCHECK(instr->hydrogen()->index()->representation().IsInteger32());
|
| DCHECK(instr->hydrogen()->length()->representation().IsInteger32());
|
| if (instr->index()->IsConstantOperand()) {
|
| - Operand index = ToOperand32I(instr->index());
|
| + Operand index = ToOperand32(instr->index());
|
| Register length = ToRegister32(instr->length());
|
| __ Cmp(length, index);
|
| cond = CommuteCondition(cond);
|
| } else {
|
| Register index = ToRegister32(instr->index());
|
| - Operand length = ToOperand32I(instr->length());
|
| + Operand length = ToOperand32(instr->length());
|
| __ Cmp(index, length);
|
| }
|
| if (FLAG_debug_code && instr->hydrogen()->skip_check()) {
|
| @@ -2486,16 +2471,12 @@ void LCodeGen::DoCompareNumericAndBranch(LCompareNumericAndBranch* instr) {
|
| } else {
|
| if (instr->hydrogen_value()->representation().IsInteger32()) {
|
| if (right->IsConstantOperand()) {
|
| - EmitCompareAndBranch(instr,
|
| - cond,
|
| - ToRegister32(left),
|
| - ToOperand32I(right));
|
| + EmitCompareAndBranch(instr, cond, ToRegister32(left),
|
| + ToOperand32(right));
|
| } else {
|
| // Commute the operands and the condition.
|
| - EmitCompareAndBranch(instr,
|
| - CommuteCondition(cond),
|
| - ToRegister32(right),
|
| - ToOperand32I(left));
|
| + EmitCompareAndBranch(instr, CommuteCondition(cond),
|
| + ToRegister32(right), ToOperand32(left));
|
| }
|
| } else {
|
| DCHECK(instr->hydrogen_value()->representation().IsSmi());
|
| @@ -3017,7 +2998,7 @@ void LCodeGen::DoInnerAllocatedObject(LInnerAllocatedObject* instr) {
|
| Register result = ToRegister(instr->result());
|
| Register base = ToRegister(instr->base_object());
|
| if (instr->offset()->IsConstantOperand()) {
|
| - __ Add(result, base, ToOperand32I(instr->offset()));
|
| + __ Add(result, base, ToOperand32(instr->offset()));
|
| } else {
|
| __ Add(result, base, Operand(ToRegister32(instr->offset()), SXTW));
|
| }
|
| @@ -4220,7 +4201,7 @@ void LCodeGen::DoMathMinMax(LMathMinMax* instr) {
|
| if (instr->hydrogen()->representation().IsInteger32()) {
|
| Register result = ToRegister32(instr->result());
|
| Register left = ToRegister32(instr->left());
|
| - Operand right = ToOperand32I(instr->right());
|
| + Operand right = ToOperand32(instr->right());
|
|
|
| __ Cmp(left, right);
|
| __ Csel(result, left, right, (op == HMathMinMax::kMathMax) ? ge : le);
|
| @@ -5571,7 +5552,7 @@ void LCodeGen::DoSubI(LSubI* instr) {
|
| bool can_overflow = instr->hydrogen()->CheckFlag(HValue::kCanOverflow);
|
| Register result = ToRegister32(instr->result());
|
| Register left = ToRegister32(instr->left());
|
| - Operand right = ToShiftedRightOperand32I(instr->right(), instr);
|
| + Operand right = ToShiftedRightOperand32(instr->right(), instr);
|
|
|
| if (can_overflow) {
|
| __ Subs(result, left, right);
|
|
|