diff --git a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveMultiTypeState.java b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveMultiTypeState.java index d9392f296463..997c152a2c58 100644 --- a/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveMultiTypeState.java +++ b/substratevm/src/com.oracle.graal.pointsto/src/com/oracle/graal/pointsto/flow/context/bytecode/ContextSensitiveMultiTypeState.java @@ -24,6 +24,7 @@ */ package com.oracle.graal.pointsto.flow.context.bytecode; +import java.lang.invoke.VarHandle; import java.util.Arrays; import java.util.BitSet; import java.util.Iterator; @@ -75,6 +76,8 @@ public int[] getObjectTypeIds() { for (int i = 0; i < objects.length; i++) { result[i] = objects[i].getTypeId(); } + /* Ensure array element initializations are published before publishing the array. */ + VarHandle.storeStoreFence(); this.objectTypeIds = result; } return objectTypeIds;