OLD | NEW |
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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 V(GetCachedArrayIndex) \ | 116 V(GetCachedArrayIndex) \ |
117 V(GlobalObject) \ | 117 V(GlobalObject) \ |
118 V(GlobalReceiver) \ | 118 V(GlobalReceiver) \ |
119 V(Goto) \ | 119 V(Goto) \ |
120 V(HasCachedArrayIndexAndBranch) \ | 120 V(HasCachedArrayIndexAndBranch) \ |
121 V(HasInstanceTypeAndBranch) \ | 121 V(HasInstanceTypeAndBranch) \ |
122 V(InductionVariableAnnotation) \ | 122 V(InductionVariableAnnotation) \ |
123 V(In) \ | 123 V(In) \ |
124 V(InstanceOf) \ | 124 V(InstanceOf) \ |
125 V(InstanceOfKnownGlobal) \ | 125 V(InstanceOfKnownGlobal) \ |
| 126 V(InstanceSize) \ |
126 V(InvokeFunction) \ | 127 V(InvokeFunction) \ |
127 V(IsConstructCallAndBranch) \ | 128 V(IsConstructCallAndBranch) \ |
128 V(IsNilAndBranch) \ | 129 V(IsNilAndBranch) \ |
129 V(IsObjectAndBranch) \ | 130 V(IsObjectAndBranch) \ |
130 V(IsStringAndBranch) \ | 131 V(IsStringAndBranch) \ |
131 V(IsSmiAndBranch) \ | 132 V(IsSmiAndBranch) \ |
132 V(IsUndetectableAndBranch) \ | 133 V(IsUndetectableAndBranch) \ |
133 V(JSArrayLength) \ | 134 V(JSArrayLength) \ |
134 V(LeaveInlined) \ | 135 V(LeaveInlined) \ |
135 V(LoadContextSlot) \ | 136 V(LoadContextSlot) \ |
(...skipping 3805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3941 | 3942 |
3942 virtual HType CalculateInferredType(); | 3943 virtual HType CalculateInferredType(); |
3943 | 3944 |
3944 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal) | 3945 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal) |
3945 | 3946 |
3946 private: | 3947 private: |
3947 Handle<JSFunction> function_; | 3948 Handle<JSFunction> function_; |
3948 }; | 3949 }; |
3949 | 3950 |
3950 | 3951 |
| 3952 // TODO(mstarzinger): This instruction should be modeled as a load of the map |
| 3953 // field followed by a load of the instance size field once HLoadNamedField is |
| 3954 // flexible enough to accommodate byte-field loads. |
| 3955 class HInstanceSize: public HTemplateInstruction<1> { |
| 3956 public: |
| 3957 explicit HInstanceSize(HValue* object) { |
| 3958 SetOperandAt(0, object); |
| 3959 set_representation(Representation::Integer32()); |
| 3960 } |
| 3961 |
| 3962 HValue* object() { return OperandAt(0); } |
| 3963 |
| 3964 virtual Representation RequiredInputRepresentation(int index) { |
| 3965 return Representation::Tagged(); |
| 3966 } |
| 3967 |
| 3968 DECLARE_CONCRETE_INSTRUCTION(InstanceSize) |
| 3969 }; |
| 3970 |
| 3971 |
3951 class HPower: public HTemplateInstruction<2> { | 3972 class HPower: public HTemplateInstruction<2> { |
3952 public: | 3973 public: |
3953 static HInstruction* New(Zone* zone, HValue* left, HValue* right); | 3974 static HInstruction* New(Zone* zone, HValue* left, HValue* right); |
3954 | 3975 |
3955 HValue* left() { return OperandAt(0); } | 3976 HValue* left() { return OperandAt(0); } |
3956 HValue* right() const { return OperandAt(1); } | 3977 HValue* right() const { return OperandAt(1); } |
3957 | 3978 |
3958 virtual Representation RequiredInputRepresentation(int index) { | 3979 virtual Representation RequiredInputRepresentation(int index) { |
3959 return index == 0 | 3980 return index == 0 |
3960 ? Representation::Double() | 3981 ? Representation::Double() |
(...skipping 2158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6119 virtual bool IsDeletable() const { return true; } | 6140 virtual bool IsDeletable() const { return true; } |
6120 }; | 6141 }; |
6121 | 6142 |
6122 | 6143 |
6123 #undef DECLARE_INSTRUCTION | 6144 #undef DECLARE_INSTRUCTION |
6124 #undef DECLARE_CONCRETE_INSTRUCTION | 6145 #undef DECLARE_CONCRETE_INSTRUCTION |
6125 | 6146 |
6126 } } // namespace v8::internal | 6147 } } // namespace v8::internal |
6127 | 6148 |
6128 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 6149 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |