From bf7a9bf8dcca415dbca84f2cb4c4d89f48c52aa6 Mon Sep 17 00:00:00 2001 From: "ishell@chromium.org" Date: Wed, 23 Oct 2013 13:03:15 +0000 Subject: [PATCH] HCheckInstanceType factories unified R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/35413007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17342 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/hydrogen-instructions.h | 30 +++++++++--------------------- src/hydrogen.cc | 16 ++++++++-------- 2 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h index c8b149b..7df1aae 100644 --- a/src/hydrogen-instructions.h +++ b/src/hydrogen-instructions.h @@ -2777,19 +2777,15 @@ class HCheckValue V8_FINAL : public HUnaryOperation { class HCheckInstanceType V8_FINAL : public HUnaryOperation { public: - static HCheckInstanceType* NewIsSpecObject(HValue* value, Zone* zone) { - return new(zone) HCheckInstanceType(value, IS_SPEC_OBJECT); - } - static HCheckInstanceType* NewIsJSArray(HValue* value, Zone* zone) { - return new(zone) HCheckInstanceType(value, IS_JS_ARRAY); - } - static HCheckInstanceType* NewIsString(HValue* value, Zone* zone) { - return new(zone) HCheckInstanceType(value, IS_STRING); - } - static HCheckInstanceType* NewIsInternalizedString( - HValue* value, Zone* zone) { - return new(zone) HCheckInstanceType(value, IS_INTERNALIZED_STRING); - } + enum Check { + IS_SPEC_OBJECT, + IS_JS_ARRAY, + IS_STRING, + IS_INTERNALIZED_STRING, + LAST_INTERVAL_CHECK = IS_JS_ARRAY + }; + + DECLARE_INSTRUCTION_FACTORY_P2(HCheckInstanceType, HValue*, Check); virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; @@ -2817,14 +2813,6 @@ class HCheckInstanceType V8_FINAL : public HUnaryOperation { virtual int RedefinedOperandIndex() { return 0; } private: - enum Check { - IS_SPEC_OBJECT, - IS_JS_ARRAY, - IS_STRING, - IS_INTERNALIZED_STRING, - LAST_INTERVAL_CHECK = IS_JS_ARRAY - }; - const char* GetCheckName(); HCheckInstanceType(HValue* value, Check check) diff --git a/src/hydrogen.cc b/src/hydrogen.cc index 218859f..b0d85e6 100644 --- a/src/hydrogen.cc +++ b/src/hydrogen.cc @@ -5960,7 +5960,7 @@ void HOptimizedGraphBuilder::BuildLoad(Property* expr, HInstruction* checked_object; if (AreStringTypes(types)) { checked_object = - AddInstruction(HCheckInstanceType::NewIsString(object, zone())); + Add(object, HCheckInstanceType::IS_STRING); } else { checked_object = Add(object, types); } @@ -7642,7 +7642,7 @@ HInstruction* HOptimizedGraphBuilder::BuildStringCharCodeAt( } BuildCheckHeapObject(string); HValue* checkstring = - AddInstruction(HCheckInstanceType::NewIsString(string, zone())); + Add(string, HCheckInstanceType::IS_STRING); HInstruction* length = BuildLoadStringLength(string, checkstring); AddInstruction(length); HInstruction* checked_index = Add(index, length); @@ -8245,9 +8245,9 @@ void HOptimizedGraphBuilder::VisitCompareOperation(CompareOperation* expr) { return ast_context()->ReturnControl(result, expr->id()); } else { BuildCheckHeapObject(left); - AddInstruction(HCheckInstanceType::NewIsSpecObject(left, zone())); + Add(left, HCheckInstanceType::IS_SPEC_OBJECT); BuildCheckHeapObject(right); - AddInstruction(HCheckInstanceType::NewIsSpecObject(right, zone())); + Add(right, HCheckInstanceType::IS_SPEC_OBJECT); HCompareObjectEqAndBranch* result = New(left, right); return ast_context()->ReturnControl(result, expr->id()); @@ -8259,17 +8259,17 @@ void HOptimizedGraphBuilder::VisitCompareOperation(CompareOperation* expr) { } else if (combined_type->Is(Type::InternalizedString()) && Token::IsEqualityOp(op)) { BuildCheckHeapObject(left); - AddInstruction(HCheckInstanceType::NewIsInternalizedString(left, zone())); + Add(left, HCheckInstanceType::IS_INTERNALIZED_STRING); BuildCheckHeapObject(right); - AddInstruction(HCheckInstanceType::NewIsInternalizedString(right, zone())); + Add(right, HCheckInstanceType::IS_INTERNALIZED_STRING); HCompareObjectEqAndBranch* result = New(left, right); return ast_context()->ReturnControl(result, expr->id()); } else if (combined_type->Is(Type::String())) { BuildCheckHeapObject(left); - AddInstruction(HCheckInstanceType::NewIsString(left, zone())); + Add(left, HCheckInstanceType::IS_STRING); BuildCheckHeapObject(right); - AddInstruction(HCheckInstanceType::NewIsString(right, zone())); + Add(right, HCheckInstanceType::IS_STRING); HStringCompareAndBranch* result = New(left, right, op); return ast_context()->ReturnControl(result, expr->id()); -- 2.7.4