[vm] Clone forwarder function object with relaxed atomics.
TEST=ci BUG=dartbug.com/59594 Change-Id: I8f6b7ee0bb477d1f05cc8baed2b03650888fba5b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/396569 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Alexander Aprelev <aam@google.com>
This commit is contained in:
committed by
Commit Queue
parent
ed520f5f46
commit
59f290ea48
@@ -4346,7 +4346,10 @@ FunctionPtr Function::CreateDynamicInvocationForwarder(
|
||||
Zone* zone = thread->zone();
|
||||
|
||||
Function& forwarder = Function::Handle(zone);
|
||||
forwarder ^= Object::Clone(*this, Heap::kOld);
|
||||
// Load with relaxed atomics to prevent data race with updating original's
|
||||
// properties that are overridden below for the copy anyway.
|
||||
forwarder ^= Object::Clone(*this, Heap::kOld,
|
||||
/*load_with_relaxed_atomics=*/true);
|
||||
|
||||
forwarder.reset_unboxed_parameters_and_return();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user