Chromium Code Reviews| Index: runtime/vm/intermediate_language.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language.cc (revision 15254) |
| +++ runtime/vm/intermediate_language.cc (working copy) |
| @@ -1142,12 +1142,14 @@ |
| RawAbstractType* LoadIndexedInstr::CompileType() const { |
| switch (class_id_) { |
| case kArrayCid: |
| - case kGrowableObjectArrayCid: |
| case kImmutableArrayCid: |
| return Type::DynamicType(); |
| case kFloat32ArrayCid : |
| case kFloat64ArrayCid : |
| return Type::Double(); |
| + case kUint8ArrayCid: |
| + case kExternalUint8ArrayCid: |
| + return Type::IntType(); |
|
srdjan
2012/11/22 18:18:19
Could we also add range for the result?
Florian Schneider
2012/11/23 14:49:39
Done. Added LoadIndexedInstr::InferRange.
|
| default: |
| UNIMPLEMENTED(); |
| return Type::IntType(); |
| @@ -1158,12 +1160,14 @@ |
| intptr_t LoadIndexedInstr::ResultCid() const { |
| switch (class_id_) { |
| case kArrayCid: |
| - case kGrowableObjectArrayCid: |
| case kImmutableArrayCid: |
| return kDynamicCid; |
| case kFloat32ArrayCid : |
| case kFloat64ArrayCid : |
| return kDoubleCid; |
| + case kUint8ArrayCid: |
| + case kExternalUint8ArrayCid: |
| + return kSmiCid; |
| default: |
| UNIMPLEMENTED(); |
| return kSmiCid; |
| @@ -1174,8 +1178,9 @@ |
| Representation LoadIndexedInstr::representation() const { |
| switch (class_id_) { |
| case kArrayCid: |
| - case kGrowableObjectArrayCid: |
| case kImmutableArrayCid: |
| + case kUint8ArrayCid: |
| + case kExternalUint8ArrayCid: |
| return kTagged; |
| case kFloat32ArrayCid : |
| case kFloat64ArrayCid : |
| @@ -2662,6 +2667,10 @@ |
| case kArrayCid: |
| case kImmutableArrayCid: |
| return Array::length_offset(); |
| + case kUint8ArrayCid: |
| + return Uint8Array::length_offset(); |
| + case kExternalUint8ArrayCid: |
| + return ByteArray::length_offset(); |
| default: |
| UNREACHABLE(); |
| return -1; |