From: fschneider@chromium.org Date: Wed, 15 Jun 2011 09:20:24 +0000 (+0000) Subject: Generate better branch code for instanceof-predicates. X-Git-Tag: upstream/4.7.83~19151 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e5cc31e444992fb2be8a9026f595f596314d0c6b;p=platform%2Fupstream%2Fv8.git Generate better branch code for instanceof-predicates. Review URL: http://codereview.chromium.org/7168013 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc index ce21756..18e3b45 100644 --- a/src/hydrogen-instructions.cc +++ b/src/hydrogen-instructions.cc @@ -1579,6 +1579,21 @@ HType HUnaryPredicate::CalculateInferredType() { } +HType HInstanceOf::CalculateInferredType() { + return HType::Boolean(); +} + + +HType HDeleteProperty::CalculateInferredType() { + return HType::Boolean(); +} + + +HType HInstanceOfKnownGlobal::CalculateInferredType() { + return HType::Boolean(); +} + + HType HBitwiseBinaryOperation::CalculateInferredType() { return HType::TaggedNumber(); } diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h index 2199483..00e9bd6 100644 --- a/src/hydrogen-instructions.h +++ b/src/hydrogen-instructions.h @@ -2789,14 +2789,12 @@ class HInstanceOf: public HTemplateInstruction<3> { HValue* left() { return OperandAt(1); } HValue* right() { return OperandAt(2); } - virtual bool EmitAtUses() { - return !HasSideEffects() && !HasMultipleUses(); - } - virtual Representation RequiredInputRepresentation(int index) const { return Representation::Tagged(); } + virtual HType CalculateInferredType(); + virtual void PrintDataTo(StringStream* stream); DECLARE_CONCRETE_INSTRUCTION(InstanceOf) @@ -2817,6 +2815,8 @@ class HInstanceOfKnownGlobal: public HUnaryOperation { return Representation::Tagged(); } + virtual HType CalculateInferredType(); + DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal) private: @@ -4005,6 +4005,8 @@ class HDeleteProperty: public HBinaryOperation { return Representation::Tagged(); } + virtual HType CalculateInferredType(); + DECLARE_CONCRETE_INSTRUCTION(DeleteProperty) HValue* object() { return left(); }