Reviewers: Michael Starzinger, Description: Improved printing of a few Hydrogen instructions.
Please review this at http://codereview.chromium.org/8002021/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/hydrogen-instructions.h M src/hydrogen-instructions.cc Index: src/hydrogen-instructions.cc =================================================================== --- src/hydrogen-instructions.cc (revision 9412) +++ src/hydrogen-instructions.cc (working copy) @@ -707,6 +707,14 @@ } +void HIsNilAndBranch::PrintDataTo(StringStream* stream) { + value()->PrintNameTo(stream); + stream->Add(kind() == kStrictEquality ? " === " : " == "); + stream->Add(nil() == kNullValue ? "null" : "undefined"); + HControlInstruction::PrintDataTo(stream); +} + + void HReturn::PrintDataTo(StringStream* stream) { value()->PrintNameTo(stream); } @@ -777,9 +785,15 @@ value()->PrintNameTo(stream); stream->Add(" == "); stream->Add(type_literal_->GetFlatContent().ToAsciiVector()); + HControlInstruction::PrintDataTo(stream); } +void HTypeof::PrintDataTo(StringStream* stream) { + value()->PrintNameTo(stream); +} + + void HChange::PrintDataTo(StringStream* stream) { HUnaryOperation::PrintDataTo(stream); stream->Add(" %s to %s", from_.Mnemonic(), to().Mnemonic()); @@ -857,6 +871,23 @@ } +const char* HCheckInstanceType::GetCheckName() { + switch (check_) { + case IS_SPEC_OBJECT: return "object"; + case IS_JS_ARRAY: return "array"; + case IS_STRING: return "string"; + case IS_SYMBOL: return "symbol"; + default: UNREACHABLE(); + } + return ""; +} + +void HCheckInstanceType::PrintDataTo(StringStream* stream) { + stream->Add("%s ", GetCheckName()); + HUnaryOperation::PrintDataTo(stream); +} + + void HCallStub::PrintDataTo(StringStream* stream) { stream->Add("%s ", CodeStub::MajorName(major_key_, false)); @@ -1311,6 +1342,14 @@ } +void HCompareObjectEqAndBranch::PrintDataTo(StringStream* stream) { + left()->PrintNameTo(stream); + stream->Add(" "); + right()->PrintNameTo(stream); + HControlInstruction::PrintDataTo(stream); +} + + void HGoto::PrintDataTo(StringStream* stream) { stream->Add("B%d", SuccessorAt(0)->block_id()); } Index: src/hydrogen-instructions.h =================================================================== --- src/hydrogen-instructions.h (revision 9412) +++ src/hydrogen-instructions.h (working copy) @@ -1978,6 +1978,8 @@ return new HCheckInstanceType(value, IS_SYMBOL); } + virtual void PrintDataTo(StringStream* stream); + virtual Representation RequiredInputRepresentation(int index) const { return Representation::Tagged(); } @@ -2008,6 +2010,8 @@ LAST_INTERVAL_CHECK = IS_JS_ARRAY }; + const char* GetCheckName(); + HCheckInstanceType(HValue* value, Check check) : HUnaryOperation(value), check_(check) { set_representation(Representation::Tagged()); @@ -2623,6 +2627,8 @@ HValue* left() { return OperandAt(0); } HValue* right() { return OperandAt(1); } + virtual void PrintDataTo(StringStream* stream); + virtual Representation RequiredInputRepresentation(int index) const { return Representation::Tagged(); } @@ -2662,6 +2668,8 @@ EqualityKind kind() const { return kind_; } NilValue nil() const { return nil_; } + virtual void PrintDataTo(StringStream* stream); + virtual Representation RequiredInputRepresentation(int index) const { return Representation::Tagged(); } @@ -4129,6 +4137,8 @@ HValue* context() { return OperandAt(0); } HValue* value() { return OperandAt(1); } + virtual void PrintDataTo(StringStream* stream); + virtual Representation RequiredInputRepresentation(int index) const { return Representation::Tagged(); } -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
