Index: src/compiler/access-builder.cc |
diff --git a/src/compiler/access-builder.cc b/src/compiler/access-builder.cc |
index c43a53fba7637f82561cd5185e03c2eda45c498e..6d30ebc5e7fb49ce48b2b73bdd15c1b7e427ed4c 100644 |
--- a/src/compiler/access-builder.cc |
+++ b/src/compiler/access-builder.cc |
@@ -230,7 +230,7 @@ FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() { |
JSArrayBufferView::kBufferOffset, |
MaybeHandle<Name>(), |
Type::TaggedPointer(), |
- MachineType::AnyTagged(), |
+ MachineType::TaggedPointer(), |
kPointerWriteBarrier}; |
return access; |
} |
@@ -355,7 +355,7 @@ FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() { |
DescriptorArray::kEnumCacheOffset, |
Handle<Name>(), |
Type::TaggedPointer(), |
- MachineType::AnyTagged(), |
+ MachineType::TaggedPointer(), |
kPointerWriteBarrier}; |
return access; |
} |
@@ -367,7 +367,7 @@ FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() { |
DescriptorArray::kEnumCacheBridgeCacheOffset, |
Handle<Name>(), |
Type::TaggedPointer(), |
- MachineType::AnyTagged(), |
+ MachineType::TaggedPointer(), |
kPointerWriteBarrier}; |
return access; |
} |
@@ -393,9 +393,12 @@ FieldAccess AccessBuilder::ForMapBitField3() { |
// static |
FieldAccess AccessBuilder::ForMapDescriptors() { |
- FieldAccess access = { |
- kTaggedBase, Map::kDescriptorsOffset, Handle<Name>(), |
- Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier}; |
+ FieldAccess access = {kTaggedBase, |
+ Map::kDescriptorsOffset, |
+ Handle<Name>(), |
+ Type::TaggedPointer(), |
+ MachineType::TaggedPointer(), |
+ kPointerWriteBarrier}; |
return access; |
} |
@@ -411,9 +414,12 @@ FieldAccess AccessBuilder::ForMapInstanceType() { |
// static |
FieldAccess AccessBuilder::ForMapPrototype() { |
- FieldAccess access = { |
- kTaggedBase, Map::kPrototypeOffset, Handle<Name>(), |
- Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier}; |
+ FieldAccess access = {kTaggedBase, |
+ Map::kPrototypeOffset, |
+ Handle<Name>(), |
+ Type::TaggedPointer(), |
+ MachineType::TaggedPointer(), |
+ kPointerWriteBarrier}; |
return access; |
} |
@@ -599,9 +605,16 @@ FieldAccess AccessBuilder::ForPropertyCellValue() { |
// static |
FieldAccess AccessBuilder::ForPropertyCellValue(Type* type) { |
+ // Extract representation dimension of {type} into MachineType {r}. |
+ MachineType r = MachineType::AnyTagged(); |
+ if (type->Is(Type::TaggedSigned())) { |
+ r = MachineType::TaggedSigned(); |
+ } else if (type->Is(Type::TaggedPointer())) { |
+ r = MachineType::TaggedPointer(); |
+ } |
FieldAccess access = { |
- kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), |
- type, MachineType::AnyTagged(), kFullWriteBarrier}; |
+ kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), type, |
+ r, kFullWriteBarrier}; |
return access; |
} |
@@ -619,6 +632,7 @@ ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) { |
switch (kind) { |
case FAST_SMI_ELEMENTS: |
access.type = TypeCache::Get().kSmi; |
+ access.machine_type = MachineType::TaggedSigned(); |
access.write_barrier_kind = kNoWriteBarrier; |
break; |
case FAST_HOLEY_SMI_ELEMENTS: |