[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:
Alexander Aprelev
2024-11-25 18:15:16 +00:00
committed by Commit Queue
parent ed520f5f46
commit 59f290ea48
+4 -1
View File
@@ -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();