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

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

Issue 7918012: Unify the handling of comparinsons against null and undefined. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 3 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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 V(GlobalObject) \ 111 V(GlobalObject) \
112 V(GlobalReceiver) \ 112 V(GlobalReceiver) \
113 V(Goto) \ 113 V(Goto) \
114 V(HasCachedArrayIndexAndBranch) \ 114 V(HasCachedArrayIndexAndBranch) \
115 V(HasInstanceTypeAndBranch) \ 115 V(HasInstanceTypeAndBranch) \
116 V(In) \ 116 V(In) \
117 V(InstanceOf) \ 117 V(InstanceOf) \
118 V(InstanceOfKnownGlobal) \ 118 V(InstanceOfKnownGlobal) \
119 V(InvokeFunction) \ 119 V(InvokeFunction) \
120 V(IsConstructCallAndBranch) \ 120 V(IsConstructCallAndBranch) \
121 V(IsNullAndBranch) \ 121 V(IsNilAndBranch) \
122 V(IsObjectAndBranch) \ 122 V(IsObjectAndBranch) \
123 V(IsSmiAndBranch) \ 123 V(IsSmiAndBranch) \
124 V(IsUndetectableAndBranch) \ 124 V(IsUndetectableAndBranch) \
125 V(JSArrayLength) \ 125 V(JSArrayLength) \
126 V(LeaveInlined) \ 126 V(LeaveInlined) \
127 V(LoadContextSlot) \ 127 V(LoadContextSlot) \
128 V(LoadElements) \ 128 V(LoadElements) \
129 V(LoadExternalArrayPointer) \ 129 V(LoadExternalArrayPointer) \
130 V(LoadFunctionPrototype) \ 130 V(LoadFunctionPrototype) \
131 V(LoadGlobalCell) \ 131 V(LoadGlobalCell) \
(...skipping 2502 matching lines...) Expand 10 before | Expand all | Expand 10 after
2634 } 2634 }
2635 2635
2636 DECLARE_CONCRETE_INSTRUCTION(CompareConstantEqAndBranch); 2636 DECLARE_CONCRETE_INSTRUCTION(CompareConstantEqAndBranch);
2637 2637
2638 private: 2638 private:
2639 const Token::Value op_; 2639 const Token::Value op_;
2640 const int right_; 2640 const int right_;
2641 }; 2641 };
2642 2642
2643 2643
2644 class HIsNullAndBranch: public HUnaryControlInstruction { 2644 class HIsNilAndBranch: public HUnaryControlInstruction {
2645 public: 2645 public:
2646 HIsNullAndBranch(HValue* value, bool is_strict) 2646 HIsNilAndBranch(HValue* value, EqualityKind kind, NilValue nil)
2647 : HUnaryControlInstruction(value, NULL, NULL), is_strict_(is_strict) { } 2647 : HUnaryControlInstruction(value, NULL, NULL), kind_(kind), nil_(nil) { }
2648 2648
2649 bool is_strict() const { return is_strict_; } 2649 EqualityKind kind() const { return kind_; }
2650 NilValue nil() const { return nil_; }
2650 2651
2651 virtual Representation RequiredInputRepresentation(int index) const { 2652 virtual Representation RequiredInputRepresentation(int index) const {
2652 return Representation::Tagged(); 2653 return Representation::Tagged();
2653 } 2654 }
2654 2655
2655 DECLARE_CONCRETE_INSTRUCTION(IsNullAndBranch) 2656 DECLARE_CONCRETE_INSTRUCTION(IsNilAndBranch)
2656 2657
2657 private: 2658 private:
2658 bool is_strict_; 2659 EqualityKind kind_;
2660 NilValue nil_;
2659 }; 2661 };
2660 2662
2661 2663
2662 class HIsObjectAndBranch: public HUnaryControlInstruction { 2664 class HIsObjectAndBranch: public HUnaryControlInstruction {
2663 public: 2665 public:
2664 explicit HIsObjectAndBranch(HValue* value) 2666 explicit HIsObjectAndBranch(HValue* value)
2665 : HUnaryControlInstruction(value, NULL, NULL) { } 2667 : HUnaryControlInstruction(value, NULL, NULL) { }
2666 2668
2667 virtual Representation RequiredInputRepresentation(int index) const { 2669 virtual Representation RequiredInputRepresentation(int index) const {
2668 return Representation::Tagged(); 2670 return Representation::Tagged();
(...skipping 1532 matching lines...) Expand 10 before | Expand all | Expand 10 after
4201 4203
4202 DECLARE_CONCRETE_INSTRUCTION(In) 4204 DECLARE_CONCRETE_INSTRUCTION(In)
4203 }; 4205 };
4204 4206
4205 #undef DECLARE_INSTRUCTION 4207 #undef DECLARE_INSTRUCTION
4206 #undef DECLARE_CONCRETE_INSTRUCTION 4208 #undef DECLARE_CONCRETE_INSTRUCTION
4207 4209
4208 } } // namespace v8::internal 4210 } } // namespace v8::internal
4209 4211
4210 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 4212 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | src/v8.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698