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/globals.h" // Needed here to get TARGET_ARCH_IA32. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. |
6 #if defined(TARGET_ARCH_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
7 | 7 |
8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
9 | 9 |
10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
(...skipping 5829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5840 if (unary_checks().GetReceiverClassIdAt(0) == kSmiCid) { | 5840 if (unary_checks().GetReceiverClassIdAt(0) == kSmiCid) { |
5841 __ testl(value, Immediate(kSmiTagMask)); | 5841 __ testl(value, Immediate(kSmiTagMask)); |
5842 __ j(ZERO, &is_ok); | 5842 __ j(ZERO, &is_ok); |
5843 } else { | 5843 } else { |
5844 __ testl(value, Immediate(kSmiTagMask)); | 5844 __ testl(value, Immediate(kSmiTagMask)); |
5845 __ j(ZERO, deopt); | 5845 __ j(ZERO, deopt); |
5846 } | 5846 } |
5847 Register biased_cid = temp; | 5847 Register biased_cid = temp; |
5848 __ LoadClassId(biased_cid, value); | 5848 __ LoadClassId(biased_cid, value); |
5849 | 5849 |
5850 GrowableArray<CidRangeTarget> sorted_ic_data; | 5850 ZoneGrowableArray<CidRangeTarget> sorted_ic_data; |
5851 FlowGraphCompiler::SortICDataByCount(unary_checks(), &sorted_ic_data, | 5851 FlowGraphCompiler::SortICDataByCount(unary_checks(), &sorted_ic_data, |
5852 /* drop_smi = */ true); | 5852 /* drop_smi = */ true); |
5853 | 5853 |
5854 if (IsDenseSwitch()) { | 5854 if (IsDenseSwitch()) { |
5855 ASSERT(cids_[0] < cids_[cids_.length() - 1]); | 5855 ASSERT(cids_[0] < cids_[cids_.length() - 1]); |
5856 __ subl(biased_cid, Immediate(cids_[0])); | 5856 __ subl(biased_cid, Immediate(cids_[0])); |
5857 __ cmpl(biased_cid, Immediate(cids_[cids_.length() - 1] - cids_[0])); | 5857 __ cmpl(biased_cid, Immediate(cids_[cids_.length() - 1] - cids_[0])); |
5858 __ j(ABOVE, deopt); | 5858 __ j(ABOVE, deopt); |
5859 | 5859 |
5860 intptr_t mask = ComputeCidMask(); | 5860 intptr_t mask = ComputeCidMask(); |
(...skipping 1073 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6934 __ Drop(1); | 6934 __ Drop(1); |
6935 __ popl(result); | 6935 __ popl(result); |
6936 } | 6936 } |
6937 | 6937 |
6938 | 6938 |
6939 } // namespace dart | 6939 } // namespace dart |
6940 | 6940 |
6941 #undef __ | 6941 #undef __ |
6942 | 6942 |
6943 #endif // defined TARGET_ARCH_IA32 | 6943 #endif // defined TARGET_ARCH_IA32 |
OLD | NEW |