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/dart_entry.h" | 10 #include "vm/dart_entry.h" |
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
983 case kExternalTypedDataUint8ArrayCid: | 983 case kExternalTypedDataUint8ArrayCid: |
984 case kExternalTypedDataUint8ClampedArrayCid: | 984 case kExternalTypedDataUint8ClampedArrayCid: |
985 case kTypedDataInt16ArrayCid: | 985 case kTypedDataInt16ArrayCid: |
986 case kTypedDataUint16ArrayCid: | 986 case kTypedDataUint16ArrayCid: |
987 case kOneByteStringCid: | 987 case kOneByteStringCid: |
988 case kTwoByteStringCid: | 988 case kTwoByteStringCid: |
989 return CompileType::FromCid(kSmiCid); | 989 return CompileType::FromCid(kSmiCid); |
990 | 990 |
991 case kTypedDataInt32ArrayCid: | 991 case kTypedDataInt32ArrayCid: |
992 case kTypedDataUint32ArrayCid: | 992 case kTypedDataUint32ArrayCid: |
993 // Result can be Smi or Mint when boxed. | 993 return Typed32BitIsSmi() ? CompileType::FromCid(kSmiCid) |
994 // Instruction can deoptimize if we optimistically assumed that the result | 994 : CompileType::FromCid(kMintCid); |
995 // fits into Smi. | |
996 return CanDeoptimize() ? CompileType::FromCid(kSmiCid) | |
997 : CompileType::Int(); | |
998 | 995 |
999 default: | 996 default: |
1000 UNIMPLEMENTED(); | 997 UNIMPLEMENTED(); |
1001 return CompileType::Dynamic(); | 998 return CompileType::Dynamic(); |
1002 } | 999 } |
1003 } | 1000 } |
1004 | 1001 |
1005 | 1002 |
1006 Representation LoadIndexedInstr::representation() const { | 1003 Representation LoadIndexedInstr::representation() const { |
1007 switch (class_id_) { | 1004 switch (class_id_) { |
1008 case kArrayCid: | 1005 case kArrayCid: |
1009 case kImmutableArrayCid: | 1006 case kImmutableArrayCid: |
1010 case kTypedDataInt8ArrayCid: | 1007 case kTypedDataInt8ArrayCid: |
1011 case kTypedDataUint8ArrayCid: | 1008 case kTypedDataUint8ArrayCid: |
1012 case kTypedDataUint8ClampedArrayCid: | 1009 case kTypedDataUint8ClampedArrayCid: |
1013 case kExternalTypedDataUint8ArrayCid: | 1010 case kExternalTypedDataUint8ArrayCid: |
1014 case kExternalTypedDataUint8ClampedArrayCid: | 1011 case kExternalTypedDataUint8ClampedArrayCid: |
1015 case kTypedDataInt16ArrayCid: | 1012 case kTypedDataInt16ArrayCid: |
1016 case kTypedDataUint16ArrayCid: | 1013 case kTypedDataUint16ArrayCid: |
1017 case kOneByteStringCid: | 1014 case kOneByteStringCid: |
1018 case kTwoByteStringCid: | 1015 case kTwoByteStringCid: |
1019 return kTagged; | 1016 return kTagged; |
1020 case kTypedDataInt32ArrayCid: | 1017 case kTypedDataInt32ArrayCid: |
1021 case kTypedDataUint32ArrayCid: | 1018 case kTypedDataUint32ArrayCid: |
1022 // Instruction can deoptimize if we optimistically assumed that the result | 1019 return Typed32BitIsSmi() ? kTagged : kUnboxedMint; |
1023 // fits into Smi. | |
1024 return CanDeoptimize() ? kTagged : kUnboxedMint; | |
1025 case kTypedDataFloat32ArrayCid: | 1020 case kTypedDataFloat32ArrayCid: |
1026 case kTypedDataFloat64ArrayCid: | 1021 case kTypedDataFloat64ArrayCid: |
1027 return kUnboxedDouble; | 1022 return kUnboxedDouble; |
1028 case kTypedDataFloat32x4ArrayCid: | 1023 case kTypedDataFloat32x4ArrayCid: |
1029 return kUnboxedFloat32x4; | 1024 return kUnboxedFloat32x4; |
1030 case kTypedDataInt32x4ArrayCid: | 1025 case kTypedDataInt32x4ArrayCid: |
1031 return kUnboxedInt32x4; | 1026 return kUnboxedInt32x4; |
1032 case kTypedDataFloat64x2ArrayCid: | 1027 case kTypedDataFloat64x2ArrayCid: |
1033 return kUnboxedFloat64x2; | 1028 return kUnboxedFloat64x2; |
1034 default: | 1029 default: |
(...skipping 5526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6561 __ movl(EDX, Immediate(kInvalidObjectPointer)); | 6556 __ movl(EDX, Immediate(kInvalidObjectPointer)); |
6562 __ movl(EDX, Immediate(kInvalidObjectPointer)); | 6557 __ movl(EDX, Immediate(kInvalidObjectPointer)); |
6563 #endif | 6558 #endif |
6564 } | 6559 } |
6565 | 6560 |
6566 } // namespace dart | 6561 } // namespace dart |
6567 | 6562 |
6568 #undef __ | 6563 #undef __ |
6569 | 6564 |
6570 #endif // defined TARGET_ARCH_IA32 | 6565 #endif // defined TARGET_ARCH_IA32 |
OLD | NEW |