@@ -310,8 +310,9 @@ class Address : public ValueObject {
310310 switch (cid) {
311311 case kArrayCid :
312312 case kImmutableArrayCid :
313- case kTypeArgumentsCid :
314313 return kEightBytes ;
314+ case kTypeArgumentsCid :
315+ return kObjectBytes ;
315316 case kOneByteStringCid :
316317 case kExternalOneByteStringCid :
317318 return kByte ;
@@ -576,10 +577,15 @@ class Assembler : public AssemblerBase {
576577 void CompareWithFieldValue (Register value, FieldAddress address) {
577578 CompareWithMemoryValue (value, address);
578579 }
580+ void CompareWithCompressedFieldValue (Register value, FieldAddress address) {
581+ CompareWithMemoryValue (value, address, kObjectBytes );
582+ }
579583
580- void CompareWithMemoryValue (Register value, Address address) {
581- ldr (TMP, address);
582- cmp (value, Operand (TMP));
584+ void CompareWithMemoryValue (Register value,
585+ Address address,
586+ OperandSize sz = kEightBytes ) {
587+ ldr (TMP, address, sz);
588+ cmp (value, Operand (TMP), sz);
583589 }
584590
585591 void CompareTypeNullabilityWith (Register type, int8_t value) {
@@ -1707,6 +1713,13 @@ class Assembler : public AssemblerBase {
17071713 add (dest, base, Operand (index, LSL, scale));
17081714 LoadFromOffset (dest, dest, payload_offset - kHeapObjectTag , sz);
17091715 }
1716+ void LoadIndexedCompressed (Register dest,
1717+ Register base,
1718+ int32_t offset,
1719+ Register index) {
1720+ add (dest, base, Operand (index, LSL, TIMES_COMPRESSED_WORD_SIZE));
1721+ LoadCompressedFieldFromOffset (dest, dest, offset);
1722+ }
17101723 void LoadSFromOffset (VRegister dest, Register base, int32_t offset);
17111724 void LoadDFromOffset (VRegister dest, Register base, int32_t offset);
17121725 void LoadDFieldFromOffset (VRegister dest, Register base, int32_t offset) {
0 commit comments