Commit 302bfa21 authored by Dominik Inführ's avatar Dominik Inführ Committed by Commit Bot

Initialize bit field in map using relaxed store

Map::bit_field needs to be set with relaxed store. The concurrent marker
accesses the has_prototype_slot bit in Map::bit_field to calculate
header size.

Bug: v8:10315
Change-Id: Ie7ebb9316b8c703adfddf10df25949b872ce0c8d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2194012Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#67728}
parent e43dfd7f
...@@ -1456,7 +1456,7 @@ Handle<Map> Map::RawCopy(Isolate* isolate, Handle<Map> map, int instance_size, ...@@ -1456,7 +1456,7 @@ Handle<Map> Map::RawCopy(Isolate* isolate, Handle<Map> map, int instance_size,
Handle<HeapObject> prototype(map->prototype(), isolate); Handle<HeapObject> prototype(map->prototype(), isolate);
Map::SetPrototype(isolate, result, prototype); Map::SetPrototype(isolate, result, prototype);
result->set_constructor_or_backpointer(map->GetConstructor()); result->set_constructor_or_backpointer(map->GetConstructor());
result->set_bit_field(map->bit_field()); result->set_relaxed_bit_field(map->bit_field());
result->set_bit_field2(map->bit_field2()); result->set_bit_field2(map->bit_field2());
int new_bit_field3 = map->bit_field3(); int new_bit_field3 = map->bit_field3();
new_bit_field3 = Bits3::OwnsDescriptorsBit::update(new_bit_field3, true); new_bit_field3 = Bits3::OwnsDescriptorsBit::update(new_bit_field3, true);
......
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