Mercurial > hg > graal-compiler
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())));