[compiler] Perform FindFieldOwner concurrently through Refs
Also, enable concurrent GetBackPointer(). Bug: v8:7790 Change-Id: If92cb7cdd9e6f5eb9a636764ca8abe2fc2c05ab2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2650205 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#72483}
This commit is contained in:
parent
26653f894c
commit
be3a6690bd
@ -3181,11 +3181,12 @@ bool MapRef::IsPrimitiveMap() const {
|
||||
}
|
||||
|
||||
MapRef MapRef::FindFieldOwner(InternalIndex descriptor_index) const {
|
||||
if (data_->should_access_heap()) {
|
||||
Handle<Map> owner(
|
||||
object()->FindFieldOwner(broker()->isolate(), descriptor_index),
|
||||
broker()->isolate());
|
||||
return MapRef(broker(), owner);
|
||||
if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
|
||||
// TODO(solanes, v8:7790): Consider caching the result of the field owner on
|
||||
// the descriptor array. It would be useful for same map as well as any
|
||||
// other map sharing that descriptor array.
|
||||
return MapRef(broker(), broker()->GetOrCreateData(object()->FindFieldOwner(
|
||||
broker()->isolate(), descriptor_index)));
|
||||
}
|
||||
DescriptorArrayData* descriptors =
|
||||
data()->AsMap()->instance_descriptors()->AsDescriptorArray();
|
||||
@ -3476,7 +3477,7 @@ BIMODAL_ACCESSOR_C(Map, int, UnusedPropertyFields)
|
||||
BIMODAL_ACCESSOR(Map, HeapObject, prototype)
|
||||
BIMODAL_ACCESSOR_C(Map, InstanceType, instance_type)
|
||||
BIMODAL_ACCESSOR(Map, Object, GetConstructor)
|
||||
BIMODAL_ACCESSOR(Map, HeapObject, GetBackPointer)
|
||||
BIMODAL_ACCESSOR_WITH_FLAG(Map, HeapObject, GetBackPointer)
|
||||
BIMODAL_ACCESSOR_C(Map, bool, is_abandoned_prototype_map)
|
||||
|
||||
BIMODAL_ACCESSOR_C(Code, unsigned, inlined_bytecode_size)
|
||||
|
Loading…
Reference in New Issue
Block a user