Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: src/hydrogen-instructions.h

Issue 10411016: Fix for issue 2132. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 kFlexibleRepresentation, 535 kFlexibleRepresentation,
536 // Participate in Global Value Numbering, i.e. elimination of 536 // Participate in Global Value Numbering, i.e. elimination of
537 // unnecessary recomputations. If an instruction sets this flag, it must 537 // unnecessary recomputations. If an instruction sets this flag, it must
538 // implement DataEquals(), which will be used to determine if other 538 // implement DataEquals(), which will be used to determine if other
539 // occurrences of the instruction are indeed the same. 539 // occurrences of the instruction are indeed the same.
540 kUseGVN, 540 kUseGVN,
541 // Track instructions that are dominating side effects. If an instruction 541 // Track instructions that are dominating side effects. If an instruction
542 // sets this flag, it must implement SetSideEffectDominator() and should 542 // sets this flag, it must implement SetSideEffectDominator() and should
543 // indicate which side effects to track by setting GVN flags. 543 // indicate which side effects to track by setting GVN flags.
544 kTrackSideEffectDominators, 544 kTrackSideEffectDominators,
545 // This flag must be set if a phase before range analysis adds range
546 // information, so that range analysis can still assert that it cannot
547 // be run twice on any HValue.
548 kHasPreinitializedRange,
545 kCanOverflow, 549 kCanOverflow,
546 kBailoutOnMinusZero, 550 kBailoutOnMinusZero,
547 kCanBeDivByZero, 551 kCanBeDivByZero,
548 kDeoptimizeOnUndefined, 552 kDeoptimizeOnUndefined,
549 kIsArguments, 553 kIsArguments,
550 kTruncatingToInt32, 554 kTruncatingToInt32,
551 kIsDead, 555 kIsDead,
552 kLastFlag = kIsDead 556 kLastFlag = kIsDead
553 }; 557 };
554 558
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 result.Intersect(AllChangesFlagSet()); 709 result.Intersect(AllChangesFlagSet());
706 result.Intersect(AllObservableSideEffectsFlagSet()); 710 result.Intersect(AllObservableSideEffectsFlagSet());
707 return result; 711 return result;
708 } 712 }
709 713
710 Range* range() const { return range_; } 714 Range* range() const { return range_; }
711 bool HasRange() const { return range_ != NULL; } 715 bool HasRange() const { return range_ != NULL; }
712 void AddNewRange(Range* r, Zone* zone); 716 void AddNewRange(Range* r, Zone* zone);
713 void RemoveLastAddedRange(); 717 void RemoveLastAddedRange();
714 void ComputeInitialRange(Zone* zone); 718 void ComputeInitialRange(Zone* zone);
719 void PreinitializeRange(Zone* zone);
715 720
716 // Representation helpers. 721 // Representation helpers.
717 virtual Representation RequiredInputRepresentation(int index) = 0; 722 virtual Representation RequiredInputRepresentation(int index) = 0;
718 723
719 virtual Representation InferredRepresentation() { 724 virtual Representation InferredRepresentation() {
720 return representation(); 725 return representation();
721 } 726 }
722 727
723 // This gives the instruction an opportunity to replace itself with an 728 // This gives the instruction an opportunity to replace itself with an
724 // instruction that does the same in some better way. To replace an 729 // instruction that does the same in some better way. To replace an
(...skipping 4234 matching lines...) Expand 10 before | Expand all | Expand 10 after
4959 DECLARE_CONCRETE_INSTRUCTION(LoadFieldByIndex); 4964 DECLARE_CONCRETE_INSTRUCTION(LoadFieldByIndex);
4960 }; 4965 };
4961 4966
4962 4967
4963 #undef DECLARE_INSTRUCTION 4968 #undef DECLARE_INSTRUCTION
4964 #undef DECLARE_CONCRETE_INSTRUCTION 4969 #undef DECLARE_CONCRETE_INSTRUCTION
4965 4970
4966 } } // namespace v8::internal 4971 } } // namespace v8::internal
4967 4972
4968 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 4973 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698