Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_ | 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_ |
| 6 #define VM_INTERMEDIATE_LANGUAGE_H_ | 6 #define VM_INTERMEDIATE_LANGUAGE_H_ |
| 7 | 7 |
| 8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
| 9 #include "vm/ast.h" | 9 #include "vm/ast.h" |
| 10 #include "vm/growable_array.h" | 10 #include "vm/growable_array.h" |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 96 V(_Float32x4, _reciprocalSqrt, Float32x4ReciprocalSqrt, 42621627) \ | 96 V(_Float32x4, _reciprocalSqrt, Float32x4ReciprocalSqrt, 42621627) \ |
| 97 V(_Float32x4, _reciprocal, Float32x4Reciprocal, 42621627) \ | 97 V(_Float32x4, _reciprocal, Float32x4Reciprocal, 42621627) \ |
| 98 V(_Float32x4, _negate, Float32x4Negate, 42621627) \ | 98 V(_Float32x4, _negate, Float32x4Negate, 42621627) \ |
| 99 V(_Float32x4, _abs, Float32x4Absolute, 42621627) \ | 99 V(_Float32x4, _abs, Float32x4Absolute, 42621627) \ |
| 100 V(_Float32x4, _clamp, Float32x4Clamp, 615895313) \ | 100 V(_Float32x4, _clamp, Float32x4Clamp, 615895313) \ |
| 101 V(_Float32x4, withX, Float32x4WithX, 219466242) \ | 101 V(_Float32x4, withX, Float32x4WithX, 219466242) \ |
| 102 V(_Float32x4, withY, Float32x4WithY, 219466242) \ | 102 V(_Float32x4, withY, Float32x4WithY, 219466242) \ |
| 103 V(_Float32x4, withZ, Float32x4WithZ, 219466242) \ | 103 V(_Float32x4, withZ, Float32x4WithZ, 219466242) \ |
| 104 V(_Float32x4, withW, Float32x4WithW, 219466242) \ | 104 V(_Float32x4, withW, Float32x4WithW, 219466242) \ |
| 105 V(_Float32x4, _toUint32x4, Float32x4ToUint32x4, 1044409108) \ | 105 V(_Float32x4, _toUint32x4, Float32x4ToUint32x4, 1044409108) \ |
| 106 V(Uint32x4, Uint32x4.bool, Uint32x4BoolConstructor, 1489869343) \ | |
| 107 V(_Uint32x4, get:flagX, Uint32x4GetFlagX, 782547529) \ | |
| 108 V(_Uint32x4, get:flagY, Uint32x4GetFlagY, 782547529) \ | |
| 109 V(_Uint32x4, get:flagZ, Uint32x4GetFlagZ, 782547529) \ | |
| 110 V(_Uint32x4, get:flagW, Uint32x4GetFlagW, 782547529) \ | |
| 111 V(_Uint32x4, select, Uint32x4Select, 405662786) \ | |
| 112 V(_Uint32x4, withFlagX, Uint32x4WithFlagX, 980864994) \ | |
| 113 V(_Uint32x4, withFlagY, Uint32x4WithFlagY, 980864994) \ | |
| 114 V(_Uint32x4, withFlagZ, Uint32x4WithFlagZ, 980864994) \ | |
| 115 V(_Uint32x4, withFlagW, Uint32x4WithFlagW, 980864994) \ | |
| 116 V(_Uint32x4, _toFloat32x4, Uint32x4ToUint32x4, 311564070) \ | |
| 106 | 117 |
| 107 | 118 |
| 108 // Class that recognizes the name and owner of a function and returns the | 119 // Class that recognizes the name and owner of a function and returns the |
| 109 // corresponding enum. See RECOGNIZED_LIST above for list of recognizable | 120 // corresponding enum. See RECOGNIZED_LIST above for list of recognizable |
| 110 // functions. | 121 // functions. |
| 111 class MethodRecognizer : public AllStatic { | 122 class MethodRecognizer : public AllStatic { |
| 112 public: | 123 public: |
| 113 enum Kind { | 124 enum Kind { |
| 114 kUnknown, | 125 kUnknown, |
| 115 #define DEFINE_ENUM_LIST(class_name, function_name, enum_name, fp) k##enum_name, | 126 #define DEFINE_ENUM_LIST(class_name, function_name, enum_name, fp) k##enum_name, |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 581 M(Float32x4Splat) \ | 592 M(Float32x4Splat) \ |
| 582 M(Float32x4Comparison) \ | 593 M(Float32x4Comparison) \ |
| 583 M(Float32x4MinMax) \ | 594 M(Float32x4MinMax) \ |
| 584 M(Float32x4Scale) \ | 595 M(Float32x4Scale) \ |
| 585 M(Float32x4Sqrt) \ | 596 M(Float32x4Sqrt) \ |
| 586 M(Float32x4ZeroArg) \ | 597 M(Float32x4ZeroArg) \ |
| 587 M(Float32x4Clamp) \ | 598 M(Float32x4Clamp) \ |
| 588 M(Float32x4With) \ | 599 M(Float32x4With) \ |
| 589 M(Float32x4ToUint32x4) \ | 600 M(Float32x4ToUint32x4) \ |
| 590 M(MaterializeObject) \ | 601 M(MaterializeObject) \ |
| 602 M(Uint32x4BoolConstructor) \ | |
| 603 M(Uint32x4GetFlag) \ | |
| 604 M(Uint32x4Select) \ | |
| 605 M(Uint32x4SetFlag) \ | |
| 606 M(Uint32x4ToFloat32x4) \ | |
| 607 M(BinaryUint32x4Op) \ | |
| 608 | |
| 591 | 609 |
| 592 #define FORWARD_DECLARATION(type) class type##Instr; | 610 #define FORWARD_DECLARATION(type) class type##Instr; |
| 593 FOR_EACH_INSTRUCTION(FORWARD_DECLARATION) | 611 FOR_EACH_INSTRUCTION(FORWARD_DECLARATION) |
| 594 #undef FORWARD_DECLARATION | 612 #undef FORWARD_DECLARATION |
| 595 | 613 |
| 596 | 614 |
| 597 // Functions required in all concrete instruction classes. | 615 // Functions required in all concrete instruction classes. |
| 598 #define DECLARE_INSTRUCTION(type) \ | 616 #define DECLARE_INSTRUCTION(type) \ |
| 599 virtual Tag tag() const { return k##type; } \ | 617 virtual Tag tag() const { return k##type; } \ |
| 600 virtual void Accept(FlowGraphVisitor* visitor); \ | 618 virtual void Accept(FlowGraphVisitor* visitor); \ |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 848 friend class Float32x4ShuffleInstr; | 866 friend class Float32x4ShuffleInstr; |
| 849 friend class Float32x4ConstructorInstr; | 867 friend class Float32x4ConstructorInstr; |
| 850 friend class Float32x4ComparisonInstr; | 868 friend class Float32x4ComparisonInstr; |
| 851 friend class Float32x4MinMaxInstr; | 869 friend class Float32x4MinMaxInstr; |
| 852 friend class Float32x4ScaleInstr; | 870 friend class Float32x4ScaleInstr; |
| 853 friend class Float32x4SqrtInstr; | 871 friend class Float32x4SqrtInstr; |
| 854 friend class Float32x4ZeroArgInstr; | 872 friend class Float32x4ZeroArgInstr; |
| 855 friend class Float32x4ClampInstr; | 873 friend class Float32x4ClampInstr; |
| 856 friend class Float32x4WithInstr; | 874 friend class Float32x4WithInstr; |
| 857 friend class Float32x4ToUint32x4Instr; | 875 friend class Float32x4ToUint32x4Instr; |
| 876 friend class Uint32x4BoolConstructorInstr; | |
| 877 friend class Uint32x4GetFlagInstr; | |
| 878 friend class Uint32x4SetFlagInstr; | |
| 879 friend class Uint32x4SelectInstr; | |
| 880 friend class Uint32x4ToFloat32x4Instr; | |
| 881 friend class BinaryUint32x4OpInstr; | |
| 858 friend class BinaryMintOpInstr; | 882 friend class BinaryMintOpInstr; |
| 859 friend class BinarySmiOpInstr; | 883 friend class BinarySmiOpInstr; |
| 860 friend class UnarySmiOpInstr; | 884 friend class UnarySmiOpInstr; |
| 861 friend class ShiftMintOpInstr; | 885 friend class ShiftMintOpInstr; |
| 862 friend class UnaryMintOpInstr; | 886 friend class UnaryMintOpInstr; |
| 863 friend class MathSqrtInstr; | 887 friend class MathSqrtInstr; |
| 864 friend class CheckClassInstr; | 888 friend class CheckClassInstr; |
| 865 friend class GuardFieldInstr; | 889 friend class GuardFieldInstr; |
| 866 friend class CheckSmiInstr; | 890 friend class CheckSmiInstr; |
| 867 friend class CheckArrayBoundInstr; | 891 friend class CheckArrayBoundInstr; |
| (...skipping 4156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5024 virtual bool AllowsCSE() const { return true; } | 5048 virtual bool AllowsCSE() const { return true; } |
| 5025 virtual EffectSet Effects() const { return EffectSet::None(); } | 5049 virtual EffectSet Effects() const { return EffectSet::None(); } |
| 5026 virtual EffectSet Dependencies() const { return EffectSet::None(); } | 5050 virtual EffectSet Dependencies() const { return EffectSet::None(); } |
| 5027 virtual bool AttributesEqual(Instruction* other) const { return true; } | 5051 virtual bool AttributesEqual(Instruction* other) const { return true; } |
| 5028 | 5052 |
| 5029 private: | 5053 private: |
| 5030 DISALLOW_COPY_AND_ASSIGN(Float32x4ToUint32x4Instr); | 5054 DISALLOW_COPY_AND_ASSIGN(Float32x4ToUint32x4Instr); |
| 5031 }; | 5055 }; |
| 5032 | 5056 |
| 5033 | 5057 |
| 5058 class Uint32x4BoolConstructorInstr : public TemplateDefinition<4> { | |
| 5059 public: | |
| 5060 Uint32x4BoolConstructorInstr(Value* value0, Value* value1, Value* value2, | |
| 5061 Value* value3, StaticCallInstr* static_call) { | |
| 5062 SetInputAt(0, value0); | |
| 5063 SetInputAt(1, value1); | |
| 5064 SetInputAt(2, value2); | |
| 5065 SetInputAt(3, value3); | |
| 5066 deopt_id_ = static_call->deopt_id(); | |
|
srdjan
2013/05/10 18:36:58
If you do not need the call, pass the deopt_id onl
Cutch
2013/05/13 19:40:24
Done.
| |
| 5067 } | |
| 5068 | |
| 5069 Value* value0() const { return inputs_[0]; } | |
| 5070 Value* value1() const { return inputs_[1]; } | |
| 5071 Value* value2() const { return inputs_[2]; } | |
| 5072 Value* value3() const { return inputs_[3]; } | |
| 5073 | |
| 5074 virtual void PrintOperandsTo(BufferFormatter* f) const; | |
| 5075 | |
| 5076 virtual bool CanDeoptimize() const { return false; } | |
| 5077 | |
| 5078 virtual Representation representation() const { | |
| 5079 return kUnboxedUint32x4; | |
| 5080 } | |
| 5081 | |
| 5082 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | |
| 5083 ASSERT(idx >= 0 && idx < 4); | |
| 5084 return kTagged; | |
| 5085 } | |
| 5086 | |
| 5087 virtual intptr_t DeoptimizationTarget() const { | |
| 5088 // Direct access since this instruction cannot deoptimize, and the deopt-id | |
| 5089 // was inherited from another instruction that could deoptimize. | |
| 5090 return deopt_id_; | |
| 5091 } | |
| 5092 | |
| 5093 DECLARE_INSTRUCTION(Uint32x4BoolConstructor) | |
| 5094 virtual CompileType ComputeType() const; | |
| 5095 | |
| 5096 virtual bool AllowsCSE() const { return true; } | |
| 5097 virtual EffectSet Effects() const { return EffectSet::None(); } | |
| 5098 virtual EffectSet Dependencies() const { return EffectSet::None(); } | |
| 5099 virtual bool AttributesEqual(Instruction* other) const { return true; } | |
| 5100 | |
| 5101 private: | |
| 5102 DISALLOW_COPY_AND_ASSIGN(Uint32x4BoolConstructorInstr); | |
| 5103 }; | |
| 5104 | |
| 5105 | |
| 5106 class Uint32x4GetFlagInstr : public TemplateDefinition<1> { | |
| 5107 public: | |
| 5108 Uint32x4GetFlagInstr(MethodRecognizer::Kind op_kind, Value* value, | |
| 5109 InstanceCallInstr* instance_call) | |
| 5110 : op_kind_(op_kind) { | |
| 5111 SetInputAt(0, value); | |
| 5112 deopt_id_ = instance_call->deopt_id(); | |
| 5113 } | |
| 5114 | |
| 5115 Value* value() const { return inputs_[0]; } | |
| 5116 | |
| 5117 MethodRecognizer::Kind op_kind() const { return op_kind_; } | |
| 5118 | |
| 5119 virtual void PrintOperandsTo(BufferFormatter* f) const; | |
| 5120 | |
| 5121 virtual bool CanDeoptimize() const { return false; } | |
| 5122 | |
| 5123 virtual Representation representation() const { | |
| 5124 return kTagged; | |
| 5125 } | |
| 5126 | |
| 5127 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | |
| 5128 ASSERT(idx == 0); | |
| 5129 return kUnboxedUint32x4; | |
| 5130 } | |
| 5131 | |
| 5132 virtual intptr_t DeoptimizationTarget() const { | |
| 5133 // Direct access since this instruction cannot deoptimize, and the deopt-id | |
| 5134 // was inherited from another instruction that could deoptimize. | |
| 5135 return deopt_id_; | |
| 5136 } | |
| 5137 | |
| 5138 DECLARE_INSTRUCTION(Uint32x4GetFlag) | |
| 5139 virtual CompileType ComputeType() const; | |
| 5140 | |
| 5141 virtual bool AllowsCSE() const { return true; } | |
| 5142 virtual EffectSet Effects() const { return EffectSet::None(); } | |
| 5143 virtual EffectSet Dependencies() const { return EffectSet::None(); } | |
| 5144 virtual bool AttributesEqual(Instruction* other) const { | |
| 5145 return op_kind() == other->AsUint32x4GetFlag()->op_kind(); | |
| 5146 } | |
| 5147 | |
| 5148 private: | |
| 5149 const MethodRecognizer::Kind op_kind_; | |
| 5150 | |
| 5151 DISALLOW_COPY_AND_ASSIGN(Uint32x4GetFlagInstr); | |
| 5152 }; | |
| 5153 | |
| 5154 | |
| 5155 class Uint32x4SelectInstr : public TemplateDefinition<3> { | |
| 5156 public: | |
| 5157 Uint32x4SelectInstr(Value* mask, Value* trueValue, Value* falseValue, | |
| 5158 InstanceCallInstr* instance_call) { | |
| 5159 SetInputAt(0, mask); | |
| 5160 SetInputAt(1, trueValue); | |
| 5161 SetInputAt(2, falseValue); | |
| 5162 deopt_id_ = instance_call->deopt_id(); | |
| 5163 } | |
| 5164 | |
| 5165 Value* mask() const { return inputs_[0]; } | |
| 5166 Value* trueValue() const { return inputs_[1]; } | |
| 5167 Value* falseValue() const { return inputs_[2]; } | |
| 5168 | |
| 5169 virtual void PrintOperandsTo(BufferFormatter* f) const; | |
| 5170 | |
| 5171 virtual bool CanDeoptimize() const { return false; } | |
| 5172 | |
| 5173 virtual Representation representation() const { | |
| 5174 return kUnboxedFloat32x4; | |
| 5175 } | |
| 5176 | |
| 5177 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | |
| 5178 ASSERT((idx == 0) || (idx == 1) || (idx == 2)); | |
| 5179 if (idx == 0) { | |
| 5180 return kUnboxedUint32x4; | |
| 5181 } | |
| 5182 return kUnboxedFloat32x4; | |
| 5183 } | |
| 5184 | |
| 5185 virtual intptr_t DeoptimizationTarget() const { | |
| 5186 // Direct access since this instruction cannot deoptimize, and the deopt-id | |
| 5187 // was inherited from another instruction that could deoptimize. | |
| 5188 return deopt_id_; | |
| 5189 } | |
| 5190 | |
| 5191 DECLARE_INSTRUCTION(Uint32x4Select) | |
| 5192 virtual CompileType ComputeType() const; | |
| 5193 | |
| 5194 virtual bool AllowsCSE() const { return true; } | |
| 5195 virtual EffectSet Effects() const { return EffectSet::None(); } | |
| 5196 virtual EffectSet Dependencies() const { return EffectSet::None(); } | |
| 5197 virtual bool AttributesEqual(Instruction* other) const { return true; } | |
| 5198 | |
| 5199 private: | |
| 5200 DISALLOW_COPY_AND_ASSIGN(Uint32x4SelectInstr); | |
| 5201 }; | |
| 5202 | |
| 5203 | |
| 5204 class Uint32x4SetFlagInstr : public TemplateDefinition<2> { | |
| 5205 public: | |
| 5206 Uint32x4SetFlagInstr(MethodRecognizer::Kind op_kind, Value* value, | |
| 5207 Value* flagValue, InstanceCallInstr* instance_call) | |
| 5208 : op_kind_(op_kind) { | |
| 5209 SetInputAt(0, value); | |
| 5210 SetInputAt(1, flagValue); | |
| 5211 deopt_id_ = instance_call->deopt_id(); | |
| 5212 } | |
| 5213 | |
| 5214 Value* value() const { return inputs_[0]; } | |
| 5215 Value* flagValue() const { return inputs_[1]; } | |
| 5216 | |
| 5217 MethodRecognizer::Kind op_kind() const { return op_kind_; } | |
| 5218 | |
| 5219 virtual void PrintOperandsTo(BufferFormatter* f) const; | |
| 5220 | |
| 5221 virtual bool CanDeoptimize() const { return false; } | |
| 5222 | |
| 5223 virtual Representation representation() const { | |
| 5224 return kUnboxedUint32x4; | |
| 5225 } | |
| 5226 | |
| 5227 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | |
| 5228 ASSERT((idx == 0) || (idx == 1)); | |
| 5229 if (idx == 1) { | |
| 5230 return kTagged; | |
| 5231 } | |
| 5232 return kUnboxedUint32x4; | |
| 5233 } | |
| 5234 | |
| 5235 virtual intptr_t DeoptimizationTarget() const { | |
| 5236 // Direct access since this instruction cannot deoptimize, and the deopt-id | |
| 5237 // was inherited from another instruction that could deoptimize. | |
| 5238 return deopt_id_; | |
| 5239 } | |
| 5240 | |
| 5241 DECLARE_INSTRUCTION(Uint32x4SetFlag) | |
| 5242 virtual CompileType ComputeType() const; | |
| 5243 | |
| 5244 virtual bool AllowsCSE() const { return true; } | |
| 5245 virtual EffectSet Effects() const { return EffectSet::None(); } | |
| 5246 virtual EffectSet Dependencies() const { return EffectSet::None(); } | |
| 5247 virtual bool AttributesEqual(Instruction* other) const { | |
| 5248 return op_kind() == other->AsUint32x4SetFlag()->op_kind(); | |
| 5249 } | |
| 5250 | |
| 5251 private: | |
| 5252 const MethodRecognizer::Kind op_kind_; | |
| 5253 | |
| 5254 DISALLOW_COPY_AND_ASSIGN(Uint32x4SetFlagInstr); | |
| 5255 }; | |
| 5256 | |
| 5257 | |
| 5258 class Uint32x4ToFloat32x4Instr : public TemplateDefinition<1> { | |
| 5259 public: | |
| 5260 Uint32x4ToFloat32x4Instr(Value* left, InstanceCallInstr* instance_call) { | |
| 5261 SetInputAt(0, left); | |
| 5262 deopt_id_ = instance_call->deopt_id(); | |
| 5263 } | |
| 5264 | |
| 5265 Value* left() const { return inputs_[0]; } | |
| 5266 | |
| 5267 virtual void PrintOperandsTo(BufferFormatter* f) const; | |
| 5268 | |
| 5269 virtual bool CanDeoptimize() const { return false; } | |
| 5270 | |
| 5271 virtual Representation representation() const { | |
| 5272 return kUnboxedFloat32x4; | |
| 5273 } | |
| 5274 | |
| 5275 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | |
| 5276 ASSERT(idx == 0); | |
| 5277 return kUnboxedUint32x4; | |
| 5278 } | |
| 5279 | |
| 5280 virtual intptr_t DeoptimizationTarget() const { | |
| 5281 // Direct access since this instruction cannot deoptimize, and the deopt-id | |
| 5282 // was inherited from another instruction that could deoptimize. | |
| 5283 return deopt_id_; | |
| 5284 } | |
| 5285 | |
| 5286 DECLARE_INSTRUCTION(Uint32x4ToFloat32x4) | |
| 5287 virtual CompileType ComputeType() const; | |
| 5288 | |
| 5289 virtual bool AllowsCSE() const { return true; } | |
| 5290 virtual EffectSet Effects() const { return EffectSet::None(); } | |
| 5291 virtual EffectSet Dependencies() const { return EffectSet::None(); } | |
| 5292 virtual bool AttributesEqual(Instruction* other) const { return true; } | |
| 5293 | |
| 5294 private: | |
| 5295 DISALLOW_COPY_AND_ASSIGN(Uint32x4ToFloat32x4Instr); | |
| 5296 }; | |
| 5297 | |
| 5298 | |
| 5299 class BinaryUint32x4OpInstr : public TemplateDefinition<2> { | |
| 5300 public: | |
| 5301 BinaryUint32x4OpInstr(Token::Kind op_kind, | |
| 5302 Value* left, | |
| 5303 Value* right, | |
| 5304 InstanceCallInstr* instance_call) | |
| 5305 : op_kind_(op_kind) { | |
| 5306 SetInputAt(0, left); | |
| 5307 SetInputAt(1, right); | |
| 5308 deopt_id_ = instance_call->deopt_id(); | |
| 5309 } | |
| 5310 | |
| 5311 Value* left() const { return inputs_[0]; } | |
| 5312 Value* right() const { return inputs_[1]; } | |
| 5313 | |
| 5314 Token::Kind op_kind() const { return op_kind_; } | |
| 5315 | |
| 5316 virtual void PrintOperandsTo(BufferFormatter* f) const; | |
| 5317 | |
| 5318 virtual bool CanDeoptimize() const { return false; } | |
| 5319 | |
| 5320 virtual Representation representation() const { | |
| 5321 return kUnboxedUint32x4; | |
| 5322 } | |
| 5323 | |
| 5324 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | |
| 5325 ASSERT((idx == 0) || (idx == 1)); | |
| 5326 return kUnboxedUint32x4; | |
| 5327 } | |
| 5328 | |
| 5329 virtual intptr_t DeoptimizationTarget() const { | |
| 5330 // Direct access since this instruction cannot deoptimize, and the deopt-id | |
| 5331 // was inherited from another instruction that could deoptimize. | |
| 5332 return deopt_id_; | |
| 5333 } | |
| 5334 | |
| 5335 DECLARE_INSTRUCTION(BinaryUint32x4Op) | |
| 5336 virtual CompileType ComputeType() const; | |
| 5337 | |
| 5338 virtual bool AllowsCSE() const { return true; } | |
| 5339 virtual EffectSet Effects() const { return EffectSet::None(); } | |
| 5340 virtual EffectSet Dependencies() const { return EffectSet::None(); } | |
| 5341 virtual bool AttributesEqual(Instruction* other) const { | |
| 5342 return op_kind() == other->AsBinaryUint32x4Op()->op_kind(); | |
| 5343 } | |
| 5344 | |
| 5345 private: | |
| 5346 const Token::Kind op_kind_; | |
| 5347 | |
| 5348 DISALLOW_COPY_AND_ASSIGN(BinaryUint32x4OpInstr); | |
| 5349 }; | |
| 5350 | |
| 5034 class BinaryMintOpInstr : public TemplateDefinition<2> { | 5351 class BinaryMintOpInstr : public TemplateDefinition<2> { |
| 5035 public: | 5352 public: |
| 5036 BinaryMintOpInstr(Token::Kind op_kind, | 5353 BinaryMintOpInstr(Token::Kind op_kind, |
| 5037 Value* left, | 5354 Value* left, |
| 5038 Value* right, | 5355 Value* right, |
| 5039 InstanceCallInstr* instance_call) | 5356 InstanceCallInstr* instance_call) |
| 5040 : op_kind_(op_kind), | 5357 : op_kind_(op_kind), |
| 5041 instance_call_(instance_call) { | 5358 instance_call_(instance_call) { |
| 5042 SetInputAt(0, left); | 5359 SetInputAt(0, left); |
| 5043 SetInputAt(1, right); | 5360 SetInputAt(1, right); |
| (...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5842 ForwardInstructionIterator* current_iterator_; | 6159 ForwardInstructionIterator* current_iterator_; |
| 5843 | 6160 |
| 5844 private: | 6161 private: |
| 5845 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); | 6162 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); |
| 5846 }; | 6163 }; |
| 5847 | 6164 |
| 5848 | 6165 |
| 5849 } // namespace dart | 6166 } // namespace dart |
| 5850 | 6167 |
| 5851 #endif // VM_INTERMEDIATE_LANGUAGE_H_ | 6168 #endif // VM_INTERMEDIATE_LANGUAGE_H_ |
| OLD | NEW |