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 4502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4513 SetInputAt(0, value); | 4513 SetInputAt(0, value); |
4514 } | 4514 } |
4515 | 4515 |
4516 Value* value() const { return inputs_[0]; } | 4516 Value* value() const { return inputs_[0]; } |
4517 | 4517 |
4518 DECLARE_INSTRUCTION(BoxDouble) | 4518 DECLARE_INSTRUCTION(BoxDouble) |
4519 virtual CompileType ComputeType() const; | 4519 virtual CompileType ComputeType() const; |
4520 | 4520 |
4521 virtual bool CanDeoptimize() const { return false; } | 4521 virtual bool CanDeoptimize() const { return false; } |
4522 | 4522 |
| 4523 virtual intptr_t DeoptimizationTarget() const { |
| 4524 return Isolate::kNoDeoptId; |
| 4525 } |
| 4526 |
4523 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | 4527 virtual Representation RequiredInputRepresentation(intptr_t idx) const { |
4524 ASSERT(idx == 0); | 4528 ASSERT(idx == 0); |
4525 return kUnboxedDouble; | 4529 return kUnboxedDouble; |
4526 } | 4530 } |
4527 | 4531 |
4528 virtual bool AllowsCSE() const { return true; } | 4532 virtual bool AllowsCSE() const { return true; } |
4529 virtual EffectSet Effects() const { return EffectSet::None(); } | 4533 virtual EffectSet Effects() const { return EffectSet::None(); } |
4530 virtual EffectSet Dependencies() const { return EffectSet::None(); } | 4534 virtual EffectSet Dependencies() const { return EffectSet::None(); } |
4531 virtual bool AttributesEqual(Instruction* other) const { return true; } | 4535 virtual bool AttributesEqual(Instruction* other) const { return true; } |
4532 | 4536 |
4533 virtual bool MayThrow() const { return false; } | 4537 virtual bool MayThrow() const { return false; } |
4534 | 4538 |
4535 Definition* Canonicalize(FlowGraph* flow_graph); | 4539 Definition* Canonicalize(FlowGraph* flow_graph); |
4536 | 4540 |
4537 private: | 4541 private: |
4538 DISALLOW_COPY_AND_ASSIGN(BoxDoubleInstr); | 4542 DISALLOW_COPY_AND_ASSIGN(BoxDoubleInstr); |
4539 }; | 4543 }; |
4540 | 4544 |
4541 | 4545 |
4542 class BoxFloat32x4Instr : public TemplateDefinition<1> { | 4546 class BoxFloat32x4Instr : public TemplateDefinition<1> { |
4543 public: | 4547 public: |
4544 explicit BoxFloat32x4Instr(Value* value) { | 4548 explicit BoxFloat32x4Instr(Value* value) { |
4545 SetInputAt(0, value); | 4549 SetInputAt(0, value); |
4546 } | 4550 } |
4547 | 4551 |
4548 Value* value() const { return inputs_[0]; } | 4552 Value* value() const { return inputs_[0]; } |
4549 | 4553 |
4550 virtual bool CanDeoptimize() const { return false; } | 4554 virtual bool CanDeoptimize() const { return false; } |
4551 | 4555 |
| 4556 virtual intptr_t DeoptimizationTarget() const { |
| 4557 return Isolate::kNoDeoptId; |
| 4558 } |
| 4559 |
4552 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | 4560 virtual Representation RequiredInputRepresentation(intptr_t idx) const { |
4553 ASSERT(idx == 0); | 4561 ASSERT(idx == 0); |
4554 return kUnboxedFloat32x4; | 4562 return kUnboxedFloat32x4; |
4555 } | 4563 } |
4556 | 4564 |
4557 DECLARE_INSTRUCTION(BoxFloat32x4) | 4565 DECLARE_INSTRUCTION(BoxFloat32x4) |
4558 virtual CompileType ComputeType() const; | 4566 virtual CompileType ComputeType() const; |
4559 | 4567 |
4560 virtual bool AllowsCSE() const { return true; } | 4568 virtual bool AllowsCSE() const { return true; } |
4561 virtual EffectSet Effects() const { return EffectSet::None(); } | 4569 virtual EffectSet Effects() const { return EffectSet::None(); } |
(...skipping 12 matching lines...) Expand all Loading... |
4574 class BoxInt32x4Instr : public TemplateDefinition<1> { | 4582 class BoxInt32x4Instr : public TemplateDefinition<1> { |
4575 public: | 4583 public: |
4576 explicit BoxInt32x4Instr(Value* value) { | 4584 explicit BoxInt32x4Instr(Value* value) { |
4577 SetInputAt(0, value); | 4585 SetInputAt(0, value); |
4578 } | 4586 } |
4579 | 4587 |
4580 Value* value() const { return inputs_[0]; } | 4588 Value* value() const { return inputs_[0]; } |
4581 | 4589 |
4582 virtual bool CanDeoptimize() const { return false; } | 4590 virtual bool CanDeoptimize() const { return false; } |
4583 | 4591 |
| 4592 virtual intptr_t DeoptimizationTarget() const { |
| 4593 return Isolate::kNoDeoptId; |
| 4594 } |
| 4595 |
4584 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | 4596 virtual Representation RequiredInputRepresentation(intptr_t idx) const { |
4585 ASSERT(idx == 0); | 4597 ASSERT(idx == 0); |
4586 return kUnboxedInt32x4; | 4598 return kUnboxedInt32x4; |
4587 } | 4599 } |
4588 | 4600 |
4589 DECLARE_INSTRUCTION(BoxInt32x4) | 4601 DECLARE_INSTRUCTION(BoxInt32x4) |
4590 virtual CompileType ComputeType() const; | 4602 virtual CompileType ComputeType() const; |
4591 | 4603 |
4592 virtual bool AllowsCSE() const { return true; } | 4604 virtual bool AllowsCSE() const { return true; } |
4593 virtual EffectSet Effects() const { return EffectSet::None(); } | 4605 virtual EffectSet Effects() const { return EffectSet::None(); } |
(...skipping 12 matching lines...) Expand all Loading... |
4606 class BoxIntegerInstr : public TemplateDefinition<1> { | 4618 class BoxIntegerInstr : public TemplateDefinition<1> { |
4607 public: | 4619 public: |
4608 explicit BoxIntegerInstr(Value* value) { | 4620 explicit BoxIntegerInstr(Value* value) { |
4609 SetInputAt(0, value); | 4621 SetInputAt(0, value); |
4610 } | 4622 } |
4611 | 4623 |
4612 Value* value() const { return inputs_[0]; } | 4624 Value* value() const { return inputs_[0]; } |
4613 | 4625 |
4614 virtual bool CanDeoptimize() const { return false; } | 4626 virtual bool CanDeoptimize() const { return false; } |
4615 | 4627 |
| 4628 virtual intptr_t DeoptimizationTarget() const { |
| 4629 return Isolate::kNoDeoptId; |
| 4630 } |
| 4631 |
4616 virtual Representation RequiredInputRepresentation(intptr_t idx) const { | 4632 virtual Representation RequiredInputRepresentation(intptr_t idx) const { |
4617 ASSERT(idx == 0); | 4633 ASSERT(idx == 0); |
4618 return kUnboxedMint; | 4634 return kUnboxedMint; |
4619 } | 4635 } |
4620 | 4636 |
4621 DECLARE_INSTRUCTION(BoxInteger) | 4637 DECLARE_INSTRUCTION(BoxInteger) |
4622 virtual CompileType ComputeType() const; | 4638 virtual CompileType ComputeType() const; |
4623 | 4639 |
4624 virtual bool AllowsCSE() const { return true; } | 4640 virtual bool AllowsCSE() const { return true; } |
4625 virtual EffectSet Effects() const { return EffectSet::None(); } | 4641 virtual EffectSet Effects() const { return EffectSet::None(); } |
(...skipping 2302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6928 ForwardInstructionIterator* current_iterator_; | 6944 ForwardInstructionIterator* current_iterator_; |
6929 | 6945 |
6930 private: | 6946 private: |
6931 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); | 6947 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); |
6932 }; | 6948 }; |
6933 | 6949 |
6934 | 6950 |
6935 } // namespace dart | 6951 } // namespace dart |
6936 | 6952 |
6937 #endif // VM_INTERMEDIATE_LANGUAGE_H_ | 6953 #endif // VM_INTERMEDIATE_LANGUAGE_H_ |
OLD | NEW |