Commit 942c61ab authored by Sathya Gunasekaran's avatar Sathya Gunasekaran Committed by Commit Bot

[runtime] Rename PropertyArray::kLengthOffset to kLengthAndHashOffset

LengthAndHashOffset describes the value stored in the offset better.

Bug: v8:6404
Change-Id: Ie5ea2a362c54aa03e0a4e314d1adb8b91d74a044
Reviewed-on: https://chromium-review.googlesource.com/624458Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47503}
parent fe50e817
...@@ -2557,9 +2557,9 @@ void CodeStubAssembler::InitializePropertyArrayLength(Node* property_array, ...@@ -2557,9 +2557,9 @@ void CodeStubAssembler::InitializePropertyArrayLength(Node* property_array,
this, this,
IntPtrOrSmiLessThanOrEqual( IntPtrOrSmiLessThanOrEqual(
length, IntPtrOrSmiConstant(PropertyArray::kMaxLength, mode), mode)); length, IntPtrOrSmiConstant(PropertyArray::kMaxLength, mode), mode));
StoreObjectFieldNoWriteBarrier(property_array, PropertyArray::kLengthOffset, StoreObjectFieldNoWriteBarrier(
ParameterToTagged(length, mode), property_array, PropertyArray::kLengthAndHashOffset,
MachineRepresentation::kTaggedSigned); ParameterToTagged(length, mode), MachineRepresentation::kTaggedSigned);
} }
Node* CodeStubAssembler::AllocatePropertyArray(Node* capacity_node, Node* CodeStubAssembler::AllocatePropertyArray(Node* capacity_node,
......
...@@ -491,7 +491,6 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { ...@@ -491,7 +491,6 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
// doesn't have an existing hash. // doesn't have an existing hash.
void InitializePropertyArrayLength(Node* property_array, Node* length, void InitializePropertyArrayLength(Node* property_array, Node* length,
ParameterMode mode); ParameterMode mode);
Node* LoadPropertyArrayLength(Node* property_array);
// Check if the map is set for slow properties. // Check if the map is set for slow properties.
TNode<BoolT> IsDictionaryMap(SloppyTNode<Map> map); TNode<BoolT> IsDictionaryMap(SloppyTNode<Map> map);
......
...@@ -477,12 +477,12 @@ FieldAccess AccessBuilder::ForFixedArrayLength() { ...@@ -477,12 +477,12 @@ FieldAccess AccessBuilder::ForFixedArrayLength() {
} }
// static // static
// TODO(gsathya): Rename this to PropertyArrayLengthAndHash. FieldAccess AccessBuilder::ForPropertyArrayLengthAndHash() {
FieldAccess AccessBuilder::ForPropertyArrayLength() { FieldAccess access = {
FieldAccess access = {kTaggedBase, PropertyArray::kLengthOffset, kTaggedBase, PropertyArray::kLengthAndHashOffset,
MaybeHandle<Name>(), MaybeHandle<Map>(), MaybeHandle<Name>(), MaybeHandle<Map>(),
Type::SignedSmall(), MachineType::TaggedSigned(), Type::SignedSmall(), MachineType::TaggedSigned(),
kNoWriteBarrier}; kNoWriteBarrier};
return access; return access;
} }
......
...@@ -161,7 +161,7 @@ class V8_EXPORT_PRIVATE AccessBuilder final ...@@ -161,7 +161,7 @@ class V8_EXPORT_PRIVATE AccessBuilder final
static FieldAccess ForFixedArrayLength(); static FieldAccess ForFixedArrayLength();
// Provides access to PropertyArray::length() field. // Provides access to PropertyArray::length() field.
static FieldAccess ForPropertyArrayLength(); static FieldAccess ForPropertyArrayLengthAndHash();
// Provides access to FixedTypedArrayBase::base_pointer() field. // Provides access to FixedTypedArrayBase::base_pointer() field.
static FieldAccess ForFixedTypedArrayBaseBasePointer(); static FieldAccess ForFixedTypedArrayBaseBasePointer();
......
...@@ -2278,7 +2278,7 @@ Node* JSNativeContextSpecialization::BuildExtendPropertiesBackingStore( ...@@ -2278,7 +2278,7 @@ Node* JSNativeContextSpecialization::BuildExtendPropertiesBackingStore(
control); control);
} else { } else {
hash = effect = graph()->NewNode( hash = effect = graph()->NewNode(
simplified()->LoadField(AccessBuilder::ForPropertyArrayLength()), simplified()->LoadField(AccessBuilder::ForPropertyArrayLengthAndHash()),
properties, effect, control); properties, effect, control);
effect = graph()->NewNode( effect = graph()->NewNode(
common()->BeginRegion(RegionObservability::kNotObservable), effect); common()->BeginRegion(RegionObservability::kNotObservable), effect);
...@@ -2295,7 +2295,7 @@ Node* JSNativeContextSpecialization::BuildExtendPropertiesBackingStore( ...@@ -2295,7 +2295,7 @@ Node* JSNativeContextSpecialization::BuildExtendPropertiesBackingStore(
simplified()->StoreField(AccessBuilder::ForMap()), new_properties, simplified()->StoreField(AccessBuilder::ForMap()), new_properties,
jsgraph()->PropertyArrayMapConstant(), effect, control); jsgraph()->PropertyArrayMapConstant(), effect, control);
effect = graph()->NewNode( effect = graph()->NewNode(
simplified()->StoreField(AccessBuilder::ForPropertyArrayLength()), simplified()->StoreField(AccessBuilder::ForPropertyArrayLengthAndHash()),
new_properties, new_length_and_hash, effect, control); new_properties, new_length_and_hash, effect, control);
for (int i = 0; i < new_length; ++i) { for (int i = 0; i < new_length; ++i) {
effect = graph()->NewNode( effect = graph()->NewNode(
......
...@@ -1083,7 +1083,7 @@ void AccessorAssembler::ExtendPropertiesBackingStore(Node* object, ...@@ -1083,7 +1083,7 @@ void AccessorAssembler::ExtendPropertiesBackingStore(Node* object,
BIND(&if_property_array); BIND(&if_property_array);
{ {
Node* length_and_hash_int32 = LoadAndUntagToWord32ObjectField( Node* length_and_hash_int32 = LoadAndUntagToWord32ObjectField(
var_properties.value(), PropertyArray::kLengthOffset); var_properties.value(), PropertyArray::kLengthAndHashOffset);
var_hash.Bind(Word32And(length_and_hash_int32, var_hash.Bind(Word32And(length_and_hash_int32,
Int32Constant(PropertyArray::kHashMask))); Int32Constant(PropertyArray::kHashMask)));
Node* length_intptr = ChangeInt32ToIntPtr(Word32And( Node* length_intptr = ChangeInt32ToIntPtr(Word32And(
...@@ -1134,7 +1134,7 @@ void AccessorAssembler::ExtendPropertiesBackingStore(Node* object, ...@@ -1134,7 +1134,7 @@ void AccessorAssembler::ExtendPropertiesBackingStore(Node* object,
TruncateWordToWord32(ParameterToWord(new_capacity, mode)); TruncateWordToWord32(ParameterToWord(new_capacity, mode));
Node* new_length_and_hash_int32 = Node* new_length_and_hash_int32 =
Word32Or(var_hash.value(), new_capacity_int32); Word32Or(var_hash.value(), new_capacity_int32);
StoreObjectField(new_properties, PropertyArray::kLengthOffset, StoreObjectField(new_properties, PropertyArray::kLengthAndHashOffset,
SmiFromWord32(new_length_and_hash_int32)); SmiFromWord32(new_length_and_hash_int32));
StoreObjectField(object, JSObject::kPropertiesOrHashOffset, new_properties); StoreObjectField(object, JSObject::kPropertiesOrHashOffset, new_properties);
Comment("] Extend storage"); Comment("] Extend storage");
......
...@@ -2687,7 +2687,7 @@ SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) ...@@ -2687,7 +2687,7 @@ SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset)
SYNCHRONIZED_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) SYNCHRONIZED_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset)
int PropertyArray::length() const { int PropertyArray::length() const {
Object* value_obj = READ_FIELD(this, kLengthOffset); Object* value_obj = READ_FIELD(this, kLengthAndHashOffset);
int value = Smi::ToInt(value_obj); int value = Smi::ToInt(value_obj);
return value & kLengthMask; return value & kLengthMask;
} }
...@@ -2695,17 +2695,17 @@ int PropertyArray::length() const { ...@@ -2695,17 +2695,17 @@ int PropertyArray::length() const {
void PropertyArray::initialize_length(int len) { void PropertyArray::initialize_length(int len) {
SLOW_DCHECK(len >= 0); SLOW_DCHECK(len >= 0);
SLOW_DCHECK(len < kMaxLength); SLOW_DCHECK(len < kMaxLength);
WRITE_FIELD(this, kLengthOffset, Smi::FromInt(len)); WRITE_FIELD(this, kLengthAndHashOffset, Smi::FromInt(len));
} }
int PropertyArray::synchronized_length() const { int PropertyArray::synchronized_length() const {
Object* value_obj = ACQUIRE_READ_FIELD(this, kLengthOffset); Object* value_obj = ACQUIRE_READ_FIELD(this, kLengthAndHashOffset);
int value = Smi::ToInt(value_obj); int value = Smi::ToInt(value_obj);
return value & kLengthMask; return value & kLengthMask;
} }
int PropertyArray::Hash() const { int PropertyArray::Hash() const {
Object* value_obj = READ_FIELD(this, kLengthOffset); Object* value_obj = READ_FIELD(this, kLengthAndHashOffset);
int value = Smi::ToInt(value_obj); int value = Smi::ToInt(value_obj);
int hash = value & kHashMask; int hash = value & kHashMask;
return hash; return hash;
...@@ -2713,10 +2713,10 @@ int PropertyArray::Hash() const { ...@@ -2713,10 +2713,10 @@ int PropertyArray::Hash() const {
void PropertyArray::SetHash(int masked_hash) { void PropertyArray::SetHash(int masked_hash) {
DCHECK_EQ(masked_hash & JSReceiver::kHashMask, masked_hash); DCHECK_EQ(masked_hash & JSReceiver::kHashMask, masked_hash);
Object* value_obj = READ_FIELD(this, kLengthOffset); Object* value_obj = READ_FIELD(this, kLengthAndHashOffset);
int value = Smi::ToInt(value_obj); int value = Smi::ToInt(value_obj);
value = (value & kLengthMask) | masked_hash; value = (value & kLengthMask) | masked_hash;
WRITE_FIELD(this, kLengthOffset, Smi::FromInt(value)); WRITE_FIELD(this, kLengthAndHashOffset, Smi::FromInt(value));
} }
SMI_ACCESSORS(FreeSpace, size, kSizeOffset) SMI_ACCESSORS(FreeSpace, size, kSizeOffset)
......
...@@ -1947,9 +1947,8 @@ class PropertyArray : public HeapObject { ...@@ -1947,9 +1947,8 @@ class PropertyArray : public HeapObject {
DECL_VERIFIER(PropertyArray) DECL_VERIFIER(PropertyArray)
// Layout description. // Layout description.
// TODO(gsathya): Rename kLengthOffset to kLengthAndHashOffset. static const int kLengthAndHashOffset = HeapObject::kHeaderSize;
static const int kLengthOffset = HeapObject::kHeaderSize; static const int kHeaderSize = kLengthAndHashOffset + kPointerSize;
static const int kHeaderSize = kLengthOffset + kPointerSize;
// Garbage collection support. // Garbage collection support.
typedef FlexibleBodyDescriptor<kHeaderSize> BodyDescriptor; typedef FlexibleBodyDescriptor<kHeaderSize> BodyDescriptor;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment