changeset 22092:dc45901aa913

Provide full set of NodeIntrinsics for DirectObjectStoreNode
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Thu, 25 Jun 2015 14:28:54 -0700
parents eed96001920d
children eb025d2d7ce2
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java
diffstat 1 files changed, 30 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java	Thu Jun 25 14:24:41 2015 -0700
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java	Thu Jun 25 14:28:54 2015 -0700
@@ -36,7 +36,8 @@
 
 /**
  * A special purpose store node that differs from {@link UnsafeStoreNode} in that it is not a
- * {@link StateSplit} and does not include a write barrier.
+ * {@link StateSplit} and does not include a write barrier. Note that contrary to the sound of the
+ * name this node can be used for storing any kind.
  */
 @NodeInfo
 public final class DirectObjectStoreNode extends FixedWithNextNode implements Lowerable {
@@ -64,9 +65,37 @@
                     @ConstantNodeParameter Kind storeKind);
 
     @NodeIntrinsic
+    public static native void storeBoolean(Object obj, @ConstantNodeParameter int displacement, long offset, boolean value, @ConstantNodeParameter LocationIdentity locationIdenity,
+                    @ConstantNodeParameter Kind storeKind);
+
+    @NodeIntrinsic
+    public static native void storeByte(Object obj, @ConstantNodeParameter int displacement, long offset, byte value, @ConstantNodeParameter LocationIdentity locationIdenity,
+                    @ConstantNodeParameter Kind storeKind);
+
+    @NodeIntrinsic
+    public static native void storeChar(Object obj, @ConstantNodeParameter int displacement, long offset, char value, @ConstantNodeParameter LocationIdentity locationIdenity,
+                    @ConstantNodeParameter Kind storeKind);
+
+    @NodeIntrinsic
+    public static native void storeShort(Object obj, @ConstantNodeParameter int displacement, long offset, short value, @ConstantNodeParameter LocationIdentity locationIdenity,
+                    @ConstantNodeParameter Kind storeKind);
+
+    @NodeIntrinsic
+    public static native void storeInt(Object obj, @ConstantNodeParameter int displacement, long offset, int value, @ConstantNodeParameter LocationIdentity locationIdenity,
+                    @ConstantNodeParameter Kind storeKind);
+
+    @NodeIntrinsic
     public static native void storeLong(Object obj, @ConstantNodeParameter int displacement, long offset, long value, @ConstantNodeParameter LocationIdentity locationIdenity,
                     @ConstantNodeParameter Kind storeKind);
 
+    @NodeIntrinsic
+    public static native void storeFloat(Object obj, @ConstantNodeParameter int displacement, long offset, float value, @ConstantNodeParameter LocationIdentity locationIdenity,
+                    @ConstantNodeParameter Kind storeKind);
+
+    @NodeIntrinsic
+    public static native void storeDouble(Object obj, @ConstantNodeParameter int displacement, long offset, double value, @ConstantNodeParameter LocationIdentity locationIdenity,
+                    @ConstantNodeParameter Kind storeKind);
+
     @Override
     public void lower(LoweringTool tool) {
         ValueNode off = graph().unique(new AddNode(offset, ConstantNode.forIntegerStamp(offset.stamp(), displacement, graph())));