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/aot_optimizer.h" | 5 #include "vm/aot_optimizer.h" |
6 | 6 |
7 #include "vm/bit_vector.h" | 7 #include "vm/bit_vector.h" |
8 #include "vm/branch_optimizer.h" | 8 #include "vm/branch_optimizer.h" |
9 #include "vm/cha.h" | 9 #include "vm/cha.h" |
10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
(...skipping 2470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2481 Function::Handle(Z, unary_checks.GetTargetAt(0)).kind(); | 2481 Function::Handle(Z, unary_checks.GetTargetAt(0)).kind(); |
2482 if (!InstanceCallNeedsClassCheck(instr, function_kind)) { | 2482 if (!InstanceCallNeedsClassCheck(instr, function_kind)) { |
2483 PolymorphicInstanceCallInstr* call = | 2483 PolymorphicInstanceCallInstr* call = |
2484 new(Z) PolymorphicInstanceCallInstr(instr, unary_checks, | 2484 new(Z) PolymorphicInstanceCallInstr(instr, unary_checks, |
2485 /* with_checks = */ false); | 2485 /* with_checks = */ false); |
2486 instr->ReplaceWith(call, current_iterator()); | 2486 instr->ReplaceWith(call, current_iterator()); |
2487 return; | 2487 return; |
2488 } | 2488 } |
2489 } | 2489 } |
2490 switch (instr->token_kind()) { | 2490 switch (instr->token_kind()) { |
| 2491 case Token::kEQ: |
| 2492 case Token::kLT: |
| 2493 case Token::kLTE: |
| 2494 case Token::kGT: |
| 2495 case Token::kGTE: |
2491 case Token::kBIT_OR: | 2496 case Token::kBIT_OR: |
2492 case Token::kBIT_XOR: | 2497 case Token::kBIT_XOR: |
2493 case Token::kBIT_AND: | 2498 case Token::kBIT_AND: |
2494 case Token::kADD: | 2499 case Token::kADD: |
2495 case Token::kSUB: { | 2500 case Token::kSUB: { |
2496 if (HasOnlyTwoOf(*instr->ic_data(), kSmiCid)) { | 2501 if (HasOnlyTwoOf(*instr->ic_data(), kSmiCid)) { |
2497 Definition* left = instr->ArgumentAt(0); | 2502 Definition* left = instr->ArgumentAt(0); |
2498 Definition* right = instr->ArgumentAt(1); | 2503 Definition* right = instr->ArgumentAt(1); |
2499 CheckedSmiOpInstr* smi_op = | 2504 CheckedSmiOpInstr* smi_op = |
2500 new(Z) CheckedSmiOpInstr(instr->token_kind(), | 2505 new(Z) CheckedSmiOpInstr(instr->token_kind(), |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2788 | 2793 |
2789 // Discard the environment from the original instruction because the store | 2794 // Discard the environment from the original instruction because the store |
2790 // can't deoptimize. | 2795 // can't deoptimize. |
2791 instr->RemoveEnvironment(); | 2796 instr->RemoveEnvironment(); |
2792 ReplaceCall(instr, store); | 2797 ReplaceCall(instr, store); |
2793 return true; | 2798 return true; |
2794 } | 2799 } |
2795 | 2800 |
2796 | 2801 |
2797 } // namespace dart | 2802 } // namespace dart |
OLD | NEW |