| 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 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 M(MathMinMax) \ | 505 M(MathMinMax) \ |
| 506 M(Box) \ | 506 M(Box) \ |
| 507 M(Unbox) \ | 507 M(Unbox) \ |
| 508 M(BoxInt64) \ | 508 M(BoxInt64) \ |
| 509 M(UnboxInt64) \ | 509 M(UnboxInt64) \ |
| 510 M(CaseInsensitiveCompareUC16) \ | 510 M(CaseInsensitiveCompareUC16) \ |
| 511 M(BinaryMintOp) \ | 511 M(BinaryMintOp) \ |
| 512 M(ShiftMintOp) \ | 512 M(ShiftMintOp) \ |
| 513 M(UnaryMintOp) \ | 513 M(UnaryMintOp) \ |
| 514 M(CheckArrayBound) \ | 514 M(CheckArrayBound) \ |
| 515 M(GenericCheckBound) \ | |
| 516 M(Constraint) \ | 515 M(Constraint) \ |
| 517 M(StringToCharCode) \ | 516 M(StringToCharCode) \ |
| 518 M(OneByteStringFromCharCode) \ | 517 M(OneByteStringFromCharCode) \ |
| 519 M(StringInterpolate) \ | 518 M(StringInterpolate) \ |
| 520 M(InvokeMathCFunction) \ | 519 M(InvokeMathCFunction) \ |
| 521 M(MergedMath) \ | 520 M(MergedMath) \ |
| 522 M(GuardFieldClass) \ | 521 M(GuardFieldClass) \ |
| 523 M(GuardFieldLength) \ | 522 M(GuardFieldLength) \ |
| 524 M(IfThenElse) \ | 523 M(IfThenElse) \ |
| 525 M(BinaryFloat32x4Op) \ | 524 M(BinaryFloat32x4Op) \ |
| (...skipping 7396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7922 }; | 7921 }; |
| 7923 | 7922 |
| 7924 private: | 7923 private: |
| 7925 bool generalized_; | 7924 bool generalized_; |
| 7926 bool licm_hoisted_; | 7925 bool licm_hoisted_; |
| 7927 | 7926 |
| 7928 DISALLOW_COPY_AND_ASSIGN(CheckArrayBoundInstr); | 7927 DISALLOW_COPY_AND_ASSIGN(CheckArrayBoundInstr); |
| 7929 }; | 7928 }; |
| 7930 | 7929 |
| 7931 | 7930 |
| 7932 class GenericCheckBoundInstr : public TemplateInstruction<2, Throws, NoCSE> { | |
| 7933 public: | |
| 7934 GenericCheckBoundInstr(Value* length, Value* index, intptr_t deopt_id) | |
| 7935 : TemplateInstruction(deopt_id) { | |
| 7936 SetInputAt(kLengthPos, length); | |
| 7937 SetInputAt(kIndexPos, index); | |
| 7938 } | |
| 7939 | |
| 7940 Value* length() const { return inputs_[kLengthPos]; } | |
| 7941 Value* index() const { return inputs_[kIndexPos]; } | |
| 7942 | |
| 7943 virtual EffectSet Effects() const { return EffectSet::None(); } | |
| 7944 virtual EffectSet Dependencies() const { return EffectSet::None(); } | |
| 7945 | |
| 7946 DECLARE_INSTRUCTION(GenericCheckBound) | |
| 7947 | |
| 7948 virtual bool CanDeoptimize() const { return true; } | |
| 7949 | |
| 7950 // Give a name to the location/input indices. | |
| 7951 enum { | |
| 7952 kLengthPos = 0, | |
| 7953 kIndexPos = 1 | |
| 7954 }; | |
| 7955 | |
| 7956 private: | |
| 7957 DISALLOW_COPY_AND_ASSIGN(GenericCheckBoundInstr); | |
| 7958 }; | |
| 7959 | |
| 7960 | |
| 7961 class UnboxedIntConverterInstr : public TemplateDefinition<1, NoThrow> { | 7931 class UnboxedIntConverterInstr : public TemplateDefinition<1, NoThrow> { |
| 7962 public: | 7932 public: |
| 7963 UnboxedIntConverterInstr(Representation from, | 7933 UnboxedIntConverterInstr(Representation from, |
| 7964 Representation to, | 7934 Representation to, |
| 7965 Value* value, | 7935 Value* value, |
| 7966 intptr_t deopt_id) | 7936 intptr_t deopt_id) |
| 7967 : TemplateDefinition(deopt_id), | 7937 : TemplateDefinition(deopt_id), |
| 7968 from_representation_(from), | 7938 from_representation_(from), |
| 7969 to_representation_(to), | 7939 to_representation_(to), |
| 7970 is_truncating_(to == kUnboxedUint32) { | 7940 is_truncating_(to == kUnboxedUint32) { |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8313 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ | 8283 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ |
| 8314 UNIMPLEMENTED(); \ | 8284 UNIMPLEMENTED(); \ |
| 8315 return NULL; \ | 8285 return NULL; \ |
| 8316 } \ | 8286 } \ |
| 8317 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } | 8287 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } |
| 8318 | 8288 |
| 8319 | 8289 |
| 8320 } // namespace dart | 8290 } // namespace dart |
| 8321 | 8291 |
| 8322 #endif // VM_INTERMEDIATE_LANGUAGE_H_ | 8292 #endif // VM_INTERMEDIATE_LANGUAGE_H_ |
| OLD | NEW |