Skip to content

Commit 64302c5

Browse files
christianhaeublbulasevich
authored andcommitted
Add STORE_STORE barrier after Object.clone().
(cherry picked from commit 7eab68b6200d6f4995c30dc26d6c3570760baccf)
1 parent 0eb3069 commit 64302c5

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/graal/jdk/SubstrateObjectCloneSnippets.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.graalvm.compiler.nodes.ValueNode;
4242
import org.graalvm.compiler.nodes.extended.BranchProbabilityNode;
4343
import org.graalvm.compiler.nodes.extended.ForeignCallNode;
44+
import org.graalvm.compiler.nodes.extended.MembarNode;
4445
import org.graalvm.compiler.nodes.java.ArrayLengthNode;
4546
import org.graalvm.compiler.nodes.spi.LoweringTool;
4647
import org.graalvm.compiler.nodes.spi.VirtualizerTool;
@@ -170,6 +171,12 @@ private static Object doClone(Object original) throws CloneNotSupportedException
170171
BarrieredAccess.writeObject(result, monitorOffset, null);
171172
}
172173

174+
/*
175+
* Emit a STORE_STORE barrier to ensure that other threads see consistent values for final
176+
* fields and VM internal fields.
177+
*/
178+
MembarNode.memoryBarrier(MembarNode.FenceKind.STORE_STORE);
179+
173180
return result;
174181
}
175182

0 commit comments

Comments
 (0)