| 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 |