# HG changeset patch # User Tom Rodriguez # Date 1435267734 25200 # Node ID dc45901aa913c1fab267185b24eed1444818d299 # Parent eed96001920d5e1c93e918aec96d945bfec84c0f Provide full set of NodeIntrinsics for DirectObjectStoreNode diff -r eed96001920d -r dc45901aa913 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java --- 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())));