| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 #include "vm/intermediate_language.h" | 5 #include "vm/intermediate_language.h" | 
| 6 #include "vm/unit_test.h" | 6 #include "vm/unit_test.h" | 
| 7 | 7 | 
| 8 namespace dart { | 8 namespace dart { | 
| 9 | 9 | 
| 10 TEST_CASE(InstructionTests) { | 10 TEST_CASE(InstructionTests) { | 
| 11   TargetEntryInstr* target_instr = new TargetEntryInstr( | 11   TargetEntryInstr* target_instr = new TargetEntryInstr( | 
| 12       1, CatchClauseNode::kInvalidTryIndex, Thread::kNoDeoptId); | 12       1, CatchClauseNode::kInvalidTryIndex, Thread::kNoDeoptId); | 
| 13   EXPECT(target_instr->IsBlockEntry()); | 13   EXPECT(target_instr->IsBlockEntry()); | 
| 14   EXPECT(!target_instr->IsDefinition()); | 14   EXPECT(!target_instr->IsDefinition()); | 
| 15   SpecialParameterInstr* context = new SpecialParameterInstr( | 15   SpecialParameterInstr* context = new SpecialParameterInstr( | 
| 16       SpecialParameterInstr::kContext, Thread::kNoDeoptId); | 16       SpecialParameterInstr::kContext, Thread::kNoDeoptId); | 
| 17   EXPECT(context->IsDefinition()); | 17   EXPECT(context->IsDefinition()); | 
| 18   EXPECT(!context->IsBlockEntry()); | 18   EXPECT(!context->IsBlockEntry()); | 
| 19 } | 19 } | 
| 20 | 20 | 
| 21 |  | 
| 22 TEST_CASE(OptimizationTests) { | 21 TEST_CASE(OptimizationTests) { | 
| 23   JoinEntryInstr* join = new JoinEntryInstr( | 22   JoinEntryInstr* join = new JoinEntryInstr( | 
| 24       1, CatchClauseNode::kInvalidTryIndex, Thread::kNoDeoptId); | 23       1, CatchClauseNode::kInvalidTryIndex, Thread::kNoDeoptId); | 
| 25 | 24 | 
| 26   Definition* def1 = new PhiInstr(join, 0); | 25   Definition* def1 = new PhiInstr(join, 0); | 
| 27   Definition* def2 = new PhiInstr(join, 0); | 26   Definition* def2 = new PhiInstr(join, 0); | 
| 28   Value* use1a = new Value(def1); | 27   Value* use1a = new Value(def1); | 
| 29   Value* use1b = new Value(def1); | 28   Value* use1b = new Value(def1); | 
| 30   EXPECT(use1a->Equals(use1b)); | 29   EXPECT(use1a->Equals(use1b)); | 
| 31   Value* use2 = new Value(def2); | 30   Value* use2 = new Value(def2); | 
| 32   EXPECT(!use2->Equals(use1a)); | 31   EXPECT(!use2->Equals(use1a)); | 
| 33 | 32 | 
| 34   ConstantInstr* c1 = new ConstantInstr(Bool::True()); | 33   ConstantInstr* c1 = new ConstantInstr(Bool::True()); | 
| 35   ConstantInstr* c2 = new ConstantInstr(Bool::True()); | 34   ConstantInstr* c2 = new ConstantInstr(Bool::True()); | 
| 36   EXPECT(c1->Equals(c2)); | 35   EXPECT(c1->Equals(c2)); | 
| 37   ConstantInstr* c3 = new ConstantInstr(Object::ZoneHandle()); | 36   ConstantInstr* c3 = new ConstantInstr(Object::ZoneHandle()); | 
| 38   ConstantInstr* c4 = new ConstantInstr(Object::ZoneHandle()); | 37   ConstantInstr* c4 = new ConstantInstr(Object::ZoneHandle()); | 
| 39   EXPECT(c3->Equals(c4)); | 38   EXPECT(c3->Equals(c4)); | 
| 40   EXPECT(!c3->Equals(c1)); | 39   EXPECT(!c3->Equals(c1)); | 
| 41 } | 40 } | 
| 42 | 41 | 
| 43 |  | 
| 44 }  // namespace dart | 42 }  // namespace dart | 
| OLD | NEW | 
|---|