OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
7 | 7 |
8 #include <cstring> | 8 #include <cstring> |
9 #include <iosfwd> | 9 #include <iosfwd> |
10 | 10 |
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
769 protected: | 769 protected: |
770 // This function must be overridden for instructions with flag kUseGVN, to | 770 // This function must be overridden for instructions with flag kUseGVN, to |
771 // compare the non-Operand parts of the instruction. | 771 // compare the non-Operand parts of the instruction. |
772 virtual bool DataEquals(HValue* other) { | 772 virtual bool DataEquals(HValue* other) { |
773 UNREACHABLE(); | 773 UNREACHABLE(); |
774 return false; | 774 return false; |
775 } | 775 } |
776 | 776 |
777 bool ToStringOrToNumberCanBeObserved() const { | 777 bool ToStringOrToNumberCanBeObserved() const { |
778 if (type().IsTaggedPrimitive()) return false; | 778 if (type().IsTaggedPrimitive()) return false; |
779 if (type().IsJSObject()) return true; | 779 if (type().IsJSReceiver()) return true; |
780 return !representation().IsSmiOrInteger32() && !representation().IsDouble(); | 780 return !representation().IsSmiOrInteger32() && !representation().IsDouble(); |
781 } | 781 } |
782 | 782 |
783 virtual Representation RepresentationFromInputs() { | 783 virtual Representation RepresentationFromInputs() { |
784 return representation(); | 784 return representation(); |
785 } | 785 } |
786 virtual Representation RepresentationFromUses(); | 786 virtual Representation RepresentationFromUses(); |
787 Representation RepresentationFromUseRequirements(); | 787 Representation RepresentationFromUseRequirements(); |
788 bool HasNonSmiUse(); | 788 bool HasNonSmiUse(); |
789 virtual void UpdateRepresentation(Representation new_rep, | 789 virtual void UpdateRepresentation(Representation new_rep, |
(...skipping 2083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2873 DECLARE_INSTRUCTION_FACTORY_P2(HCheckInstanceType, HValue*, Check); | 2873 DECLARE_INSTRUCTION_FACTORY_P2(HCheckInstanceType, HValue*, Check); |
2874 | 2874 |
2875 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | 2875 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
2876 | 2876 |
2877 Representation RequiredInputRepresentation(int index) override { | 2877 Representation RequiredInputRepresentation(int index) override { |
2878 return Representation::Tagged(); | 2878 return Representation::Tagged(); |
2879 } | 2879 } |
2880 | 2880 |
2881 HType CalculateInferredType() override { | 2881 HType CalculateInferredType() override { |
2882 switch (check_) { | 2882 switch (check_) { |
2883 case IS_JS_RECEIVER: return HType::JSObject(); | 2883 case IS_JS_RECEIVER: return HType::JSReceiver(); |
2884 case IS_JS_ARRAY: return HType::JSArray(); | 2884 case IS_JS_ARRAY: return HType::JSArray(); |
2885 case IS_JS_DATE: return HType::JSObject(); | 2885 case IS_JS_DATE: return HType::JSObject(); |
2886 case IS_STRING: return HType::String(); | 2886 case IS_STRING: return HType::String(); |
2887 case IS_INTERNALIZED_STRING: return HType::String(); | 2887 case IS_INTERNALIZED_STRING: return HType::String(); |
2888 } | 2888 } |
2889 UNREACHABLE(); | 2889 UNREACHABLE(); |
2890 return HType::Tagged(); | 2890 return HType::Tagged(); |
2891 } | 2891 } |
2892 | 2892 |
2893 HValue* Canonicalize() override; | 2893 HValue* Canonicalize() override; |
(...skipping 4923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7817 | 7817 |
7818 | 7818 |
7819 | 7819 |
7820 #undef DECLARE_INSTRUCTION | 7820 #undef DECLARE_INSTRUCTION |
7821 #undef DECLARE_CONCRETE_INSTRUCTION | 7821 #undef DECLARE_CONCRETE_INSTRUCTION |
7822 | 7822 |
7823 } // namespace internal | 7823 } // namespace internal |
7824 } // namespace v8 | 7824 } // namespace v8 |
7825 | 7825 |
7826 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7826 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |