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 #include "vm/flow_graph_optimizer.h" | 5 #include "vm/flow_graph_optimizer.h" |
6 | 6 |
7 #include "vm/bit_vector.h" | 7 #include "vm/bit_vector.h" |
8 #include "vm/cha.h" | 8 #include "vm/cha.h" |
9 #include "vm/cpu.h" | 9 #include "vm/cpu.h" |
10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 | 621 |
622 Definition* converted = NULL; | 622 Definition* converted = NULL; |
623 if ((from == kTagged) && (to == kUnboxedMint)) { | 623 if ((from == kTagged) && (to == kUnboxedMint)) { |
624 ASSERT((deopt_target != NULL) || | 624 ASSERT((deopt_target != NULL) || |
625 (use->Type()->ToCid() == kUnboxedMint)); | 625 (use->Type()->ToCid() == kUnboxedMint)); |
626 const intptr_t deopt_id = (deopt_target != NULL) ? | 626 const intptr_t deopt_id = (deopt_target != NULL) ? |
627 deopt_target->DeoptimizationTarget() : Isolate::kNoDeoptId; | 627 deopt_target->DeoptimizationTarget() : Isolate::kNoDeoptId; |
628 converted = new(I) UnboxIntegerInstr(use->CopyWithType(), deopt_id); | 628 converted = new(I) UnboxIntegerInstr(use->CopyWithType(), deopt_id); |
629 } else if ((from == kUnboxedMint) && (to == kTagged)) { | 629 } else if ((from == kUnboxedMint) && (to == kTagged)) { |
630 converted = new(I) BoxIntegerInstr(use->CopyWithType()); | 630 converted = new(I) BoxIntegerInstr(use->CopyWithType()); |
| 631 } else if ((from == kUnboxedUint32) && (to == kTagged)) { |
| 632 converted = new(I) BoxUint32Instr(use->CopyWithType()); |
631 } else if (IsUnboxedInteger(from) && IsUnboxedInteger(to)) { | 633 } else if (IsUnboxedInteger(from) && IsUnboxedInteger(to)) { |
632 const intptr_t deopt_id = (to == kUnboxedInt32) && (deopt_target != NULL) ? | 634 const intptr_t deopt_id = (to == kUnboxedInt32) && (deopt_target != NULL) ? |
633 deopt_target->DeoptimizationTarget() : Isolate::kNoDeoptId; | 635 deopt_target->DeoptimizationTarget() : Isolate::kNoDeoptId; |
634 converted = new(I) UnboxedIntConverterInstr(from, | 636 converted = new(I) UnboxedIntConverterInstr(from, |
635 to, | 637 to, |
636 use->CopyWithType(), | 638 use->CopyWithType(), |
637 deopt_id); | 639 deopt_id); |
638 } else if ((from == kUnboxedInt32) && (to == kUnboxedDouble)) { | 640 } else if ((from == kUnboxedInt32) && (to == kUnboxedDouble)) { |
639 converted = new Int32ToDoubleInstr(use->CopyWithType()); | 641 converted = new Int32ToDoubleInstr(use->CopyWithType()); |
640 } else if ((from == kTagged) && (to == kUnboxedInt32)) { | 642 } else if ((from == kTagged) && (to == kUnboxedInt32)) { |
(...skipping 9479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10120 | 10122 |
10121 // Insert materializations at environment uses. | 10123 // Insert materializations at environment uses. |
10122 for (intptr_t i = 0; i < exits_collector_.exits().length(); i++) { | 10124 for (intptr_t i = 0; i < exits_collector_.exits().length(); i++) { |
10123 CreateMaterializationAt( | 10125 CreateMaterializationAt( |
10124 exits_collector_.exits()[i], alloc, alloc->cls(), *slots); | 10126 exits_collector_.exits()[i], alloc, alloc->cls(), *slots); |
10125 } | 10127 } |
10126 } | 10128 } |
10127 | 10129 |
10128 | 10130 |
10129 } // namespace dart | 10131 } // namespace dart |
OLD | NEW |