From 06be8bf0d5e714425feb9dce9dc82f7ccfa60b38 Mon Sep 17 00:00:00 2001 From: "olivf@chromium.org" Date: Fri, 20 Sep 2013 09:25:10 +0000 Subject: [PATCH] Use New<> constructors in BuildBinaryOperation. BUG= R=yangguo@chromium.org Review URL: https://codereview.chromium.org/24267012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16853 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/hydrogen-instructions.h | 14 +++++++++++--- src/hydrogen.cc | 26 ++++++++++++-------------- src/hydrogen.h | 3 +-- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h index b7c064d..6783694 100644 --- a/src/hydrogen-instructions.h +++ b/src/hydrogen-instructions.h @@ -4961,9 +4961,11 @@ class HSar V8_FINAL : public HBitwiseBinaryOperation { class HRor V8_FINAL : public HBitwiseBinaryOperation { public: - HRor(HValue* context, HValue* left, HValue* right) - : HBitwiseBinaryOperation(context, left, right) { - ChangeRepresentation(Representation::Integer32()); + static HInstruction* New(Zone* zone, + HValue* context, + HValue* left, + HValue* right) { + return new(zone) HRor(context, left, right); } virtual void UpdateRepresentation(Representation new_rep, @@ -4977,6 +4979,12 @@ class HRor V8_FINAL : public HBitwiseBinaryOperation { protected: virtual bool DataEquals(HValue* other) V8_OVERRIDE { return true; } + + private: + HRor(HValue* context, HValue* left, HValue* right) + : HBitwiseBinaryOperation(context, left, right) { + ChangeRepresentation(Representation::Integer32()); + } }; diff --git a/src/hydrogen.cc b/src/hydrogen.cc index b49f2bd..c533f00 100644 --- a/src/hydrogen.cc +++ b/src/hydrogen.cc @@ -7714,14 +7714,13 @@ HInstruction* HOptimizedGraphBuilder::BuildBinaryOperation( BinaryOperation* expr, HValue* left, HValue* right) { - HValue* context = environment()->context(); Handle left_type = expr->left()->bounds().lower; Handle right_type = expr->right()->bounds().lower; Handle result_type = expr->bounds().lower; Maybe fixed_right_arg = expr->fixed_right_arg(); return HGraphBuilder::BuildBinaryOperation(expr->op(), left, right, - left_type, right_type, result_type, fixed_right_arg, context); + left_type, right_type, result_type, fixed_right_arg); } @@ -7732,8 +7731,7 @@ HInstruction* HGraphBuilder::BuildBinaryOperation( Handle left_type, Handle right_type, Handle result_type, - Maybe fixed_right_arg, - HValue* context) { + Maybe fixed_right_arg) { Representation left_rep = Representation::FromType(left_type); Representation right_rep = Representation::FromType(right_type); @@ -7784,22 +7782,22 @@ HInstruction* HGraphBuilder::BuildBinaryOperation( flags = (flags == STRING_ADD_CHECK_BOTH) ? STRING_ADD_CHECK_LEFT : STRING_ADD_CHECK_NONE; } - instr = HStringAdd::New(zone(), context, left, right, flags); + instr = NewUncasted(left, right, flags); } else { - instr = HAdd::New(zone(), context, left, right); + instr = NewUncasted(left, right); } break; case Token::SUB: - instr = HSub::New(zone(), context, left, right); + instr = NewUncasted(left, right); break; case Token::MUL: - instr = HMul::New(zone(), context, left, right); + instr = NewUncasted(left, right); break; case Token::MOD: - instr = HMod::New(zone(), context, left, right, fixed_right_arg); + instr = NewUncasted(left, right, fixed_right_arg); break; case Token::DIV: - instr = HDiv::New(zone(), context, left, right); + instr = NewUncasted(left, right); break; case Token::BIT_XOR: case Token::BIT_AND: @@ -7810,24 +7808,24 @@ HInstruction* HGraphBuilder::BuildBinaryOperation( if (left_type->Is(Type::Signed32()) && right_type->Is(Type::Signed32()) && MatchRotateRight(left, right, &operand, &shift_amount)) { - instr = new(zone()) HRor(context, operand, shift_amount); + instr = NewUncasted(operand, shift_amount); } else { instr = NewUncasted(op, left, right); } break; } case Token::SAR: - instr = HSar::New(zone(), context, left, right); + instr = NewUncasted(left, right); break; case Token::SHR: - instr = HShr::New(zone(), context, left, right); + instr = NewUncasted(left, right); if (FLAG_opt_safe_uint32_operations && instr->IsShr() && CanBeZero(right)) { graph()->RecordUint32Instruction(instr); } break; case Token::SHL: - instr = HShl::New(zone(), context, left, right); + instr = NewUncasted(left, right); break; default: UNREACHABLE(); diff --git a/src/hydrogen.h b/src/hydrogen.h index 9360020..d0e47aa 100644 --- a/src/hydrogen.h +++ b/src/hydrogen.h @@ -1272,8 +1272,7 @@ class HGraphBuilder { Handle left_type, Handle right_type, Handle result_type, - Maybe fixed_right_arg, - HValue* context); + Maybe fixed_right_arg); HLoadNamedField* AddLoadFixedArrayLength(HValue *object); -- 2.7.4