| Index: src/compiler/access-builder.cc
|
| diff --git a/src/compiler/access-builder.cc b/src/compiler/access-builder.cc
|
| index c43a53fba7637f82561cd5185e03c2eda45c498e..6a70a75784d4f361e3f0e1a325bdab2bb0e7c80b 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,17 @@ FieldAccess AccessBuilder::ForPropertyCellValue() {
|
|
|
| // static
|
| FieldAccess AccessBuilder::ForPropertyCellValue(Type* type) {
|
| + // Extract representation dimension of {type} into MachineType {r}.
|
| + MachineType r = MachineType::AnyTagged();
|
| + WriteBarrierKind w = kFullWriteBarrier;
|
| + if (type->Is(Type::TaggedSigned())) {
|
| + r = MachineType::TaggedSigned();
|
| + w = kNoWriteBarrier;
|
| + } 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, w};
|
| return access;
|
| }
|
|
|
| @@ -619,6 +633,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:
|
|
|