Skip to content

Commit e5f9eb5

Browse files
authored
Merge pull request #140 from bulasevich/GR-62941
[Backport] [Oracle GraalVM] [GR-62941] Backport to 23.1: Memory barrier after Object.clone() is missing.
2 parents 985f08c + 64302c5 commit e5f9eb5

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;
@@ -176,6 +177,12 @@ private static Object doClone(Object original) throws CloneNotSupportedException
176177
BarrieredAccess.writeObject(result, monitorOffset, null);
177178
}
178179

180+
/*
181+
* Emit a STORE_STORE barrier to ensure that other threads see consistent values for final
182+
* fields and VM internal fields.
183+
*/
184+
MembarNode.memoryBarrier(MembarNode.FenceKind.STORE_STORE);
185+
179186
return result;
180187
}
181188

0 commit comments

Comments
 (0)