< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/VirtualizerTool.java

Print this page

        

@@ -23,10 +23,11 @@
 package org.graalvm.compiler.nodes.spi;
 
 import java.util.List;
 
 import org.graalvm.compiler.debug.DebugContext;
+import org.graalvm.compiler.debug.GraalError;
 import org.graalvm.compiler.graph.Node;
 import org.graalvm.compiler.nodes.ValueNode;
 import org.graalvm.compiler.nodes.java.MonitorIdNode;
 import org.graalvm.compiler.nodes.virtual.VirtualObjectNode;
 import org.graalvm.compiler.options.OptionValues;

@@ -89,13 +90,21 @@
     /**
      * Sets the entry (field or array element) with the given index in the virtualized object.
      *
      * @param index the index to be set.
      * @param value the new value for the given index.
-     * @param unsafe if true, then mismatching value {@link JavaKind}s will be accepted.
-     */
-    void setVirtualEntry(VirtualObjectNode virtualObject, int index, ValueNode value, boolean unsafe);
+     * @param accessKind the kind of the store which might be different than
+     *            {@link VirtualObjectNode#entryKind(int)}.
+     * @return true if the operation was permitted
+     */
+    boolean setVirtualEntry(VirtualObjectNode virtualObject, int index, ValueNode value, JavaKind accessKind, long offset);
+
+    default void setVirtualEntry(VirtualObjectNode virtualObject, int index, ValueNode value) {
+        if (!setVirtualEntry(virtualObject, index, value, null, 0)) {
+            throw new GraalError("unexpected failure when updating virtual entry");
+        }
+    }
 
     ValueNode getEntry(VirtualObjectNode virtualObject, int index);
 
     void addLock(VirtualObjectNode virtualObject, MonitorIdNode monitorId);
 
< prev index next >