| 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 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 547 M(BooleanNegate) \ | 547 M(BooleanNegate) \ |
| 548 M(InstanceOf) \ | 548 M(InstanceOf) \ |
| 549 M(CreateArray) \ | 549 M(CreateArray) \ |
| 550 M(CreateClosure) \ | 550 M(CreateClosure) \ |
| 551 M(AllocateObject) \ | 551 M(AllocateObject) \ |
| 552 M(AllocateObjectWithBoundsCheck) \ | 552 M(AllocateObjectWithBoundsCheck) \ |
| 553 M(LoadField) \ | 553 M(LoadField) \ |
| 554 M(StoreVMField) \ | 554 M(StoreVMField) \ |
| 555 M(LoadUntagged) \ | 555 M(LoadUntagged) \ |
| 556 M(LoadClassId) \ | 556 M(LoadClassId) \ |
| 557 M(InstantiateType) \ |
| 557 M(InstantiateTypeArguments) \ | 558 M(InstantiateTypeArguments) \ |
| 558 M(ExtractConstructorTypeArguments) \ | 559 M(ExtractConstructorTypeArguments) \ |
| 559 M(ExtractConstructorInstantiator) \ | 560 M(ExtractConstructorInstantiator) \ |
| 560 M(AllocateContext) \ | 561 M(AllocateContext) \ |
| 561 M(ChainContext) \ | 562 M(ChainContext) \ |
| 562 M(CloneContext) \ | 563 M(CloneContext) \ |
| 563 M(CatchEntry) \ | 564 M(CatchEntry) \ |
| 564 M(BinarySmiOp) \ | 565 M(BinarySmiOp) \ |
| 565 M(UnarySmiOp) \ | 566 M(UnarySmiOp) \ |
| 566 M(CheckStackOverflow) \ | 567 M(CheckStackOverflow) \ |
| (...skipping 3489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4056 virtual bool MayThrow() const { return false; } | 4057 virtual bool MayThrow() const { return false; } |
| 4057 | 4058 |
| 4058 private: | 4059 private: |
| 4059 const intptr_t offset_in_bytes_; | 4060 const intptr_t offset_in_bytes_; |
| 4060 const AbstractType& type_; | 4061 const AbstractType& type_; |
| 4061 | 4062 |
| 4062 DISALLOW_COPY_AND_ASSIGN(StoreVMFieldInstr); | 4063 DISALLOW_COPY_AND_ASSIGN(StoreVMFieldInstr); |
| 4063 }; | 4064 }; |
| 4064 | 4065 |
| 4065 | 4066 |
| 4067 class InstantiateTypeInstr : public TemplateDefinition<1> { |
| 4068 public: |
| 4069 InstantiateTypeInstr(intptr_t token_pos, |
| 4070 const AbstractType& type, |
| 4071 const Class& instantiator_class, |
| 4072 Value* instantiator) |
| 4073 : token_pos_(token_pos), |
| 4074 type_(type), |
| 4075 instantiator_class_(instantiator_class) { |
| 4076 ASSERT(type.IsZoneHandle()); |
| 4077 SetInputAt(0, instantiator); |
| 4078 } |
| 4079 |
| 4080 DECLARE_INSTRUCTION(InstantiateType) |
| 4081 |
| 4082 Value* instantiator() const { return inputs_[0]; } |
| 4083 const AbstractType& type() const { return type_; |
| 4084 } |
| 4085 const Class& instantiator_class() const { return instantiator_class_; } |
| 4086 intptr_t token_pos() const { return token_pos_; } |
| 4087 |
| 4088 virtual void PrintOperandsTo(BufferFormatter* f) const; |
| 4089 |
| 4090 virtual bool CanDeoptimize() const { return true; } |
| 4091 |
| 4092 virtual EffectSet Effects() const { return EffectSet::None(); } |
| 4093 |
| 4094 virtual bool MayThrow() const { return true; } |
| 4095 |
| 4096 private: |
| 4097 const intptr_t token_pos_; |
| 4098 const AbstractType& type_; |
| 4099 const Class& instantiator_class_; |
| 4100 |
| 4101 DISALLOW_COPY_AND_ASSIGN(InstantiateTypeInstr); |
| 4102 }; |
| 4103 |
| 4104 |
| 4066 class InstantiateTypeArgumentsInstr : public TemplateDefinition<1> { | 4105 class InstantiateTypeArgumentsInstr : public TemplateDefinition<1> { |
| 4067 public: | 4106 public: |
| 4068 InstantiateTypeArgumentsInstr(intptr_t token_pos, | 4107 InstantiateTypeArgumentsInstr(intptr_t token_pos, |
| 4069 const AbstractTypeArguments& type_arguments, | 4108 const AbstractTypeArguments& type_arguments, |
| 4070 const Class& instantiator_class, | 4109 const Class& instantiator_class, |
| 4071 Value* instantiator) | 4110 Value* instantiator) |
| 4072 : token_pos_(token_pos), | 4111 : token_pos_(token_pos), |
| 4073 type_arguments_(type_arguments), | 4112 type_arguments_(type_arguments), |
| 4074 instantiator_class_(instantiator_class) { | 4113 instantiator_class_(instantiator_class) { |
| 4075 ASSERT(type_arguments.IsZoneHandle()); | 4114 ASSERT(type_arguments.IsZoneHandle()); |
| (...skipping 2398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6474 ForwardInstructionIterator* current_iterator_; | 6513 ForwardInstructionIterator* current_iterator_; |
| 6475 | 6514 |
| 6476 private: | 6515 private: |
| 6477 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); | 6516 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); |
| 6478 }; | 6517 }; |
| 6479 | 6518 |
| 6480 | 6519 |
| 6481 } // namespace dart | 6520 } // namespace dart |
| 6482 | 6521 |
| 6483 #endif // VM_INTERMEDIATE_LANGUAGE_H_ | 6522 #endif // VM_INTERMEDIATE_LANGUAGE_H_ |
| OLD | NEW |