66 public RawStoreNode(ValueNode object, ValueNode offset, ValueNode value, JavaKind accessKind, LocationIdentity locationIdentity, boolean needsBarrier) { 67 this(object, offset, value, accessKind, locationIdentity, needsBarrier, null, false); 68 } 69 70 public RawStoreNode(ValueNode object, ValueNode offset, ValueNode value, JavaKind accessKind, LocationIdentity locationIdentity, boolean needsBarrier, FrameState stateAfter, 71 boolean forceAnyLocation) { 72 super(TYPE, StampFactory.forVoid(), object, offset, accessKind, locationIdentity, forceAnyLocation); 73 this.value = value; 74 this.needsBarrier = needsBarrier; 75 this.stateAfter = stateAfter; 76 assert accessKind != JavaKind.Void && accessKind != JavaKind.Illegal; 77 } 78 79 @NodeIntrinsic 80 public static native Object storeObject(Object object, long offset, Object value, @ConstantNodeParameter JavaKind kind, @ConstantNodeParameter LocationIdentity locationIdentity, 81 @ConstantNodeParameter boolean needsBarrier); 82 83 @NodeIntrinsic 84 public static native Object storeChar(Object object, long offset, char value, @ConstantNodeParameter JavaKind kind, @ConstantNodeParameter LocationIdentity locationIdentity); 85 86 public boolean needsBarrier() { 87 return needsBarrier; 88 } 89 90 @Override 91 public FrameState stateAfter() { 92 return stateAfter; 93 } 94 95 @Override 96 public void setStateAfter(FrameState x) { 97 assert x == null || x.isAlive() : "frame state must be in a graph"; 98 updateUsages(stateAfter, x); 99 stateAfter = x; 100 } 101 102 @Override 103 public boolean hasSideEffect() { 104 return true; 105 } | 66 public RawStoreNode(ValueNode object, ValueNode offset, ValueNode value, JavaKind accessKind, LocationIdentity locationIdentity, boolean needsBarrier) { 67 this(object, offset, value, accessKind, locationIdentity, needsBarrier, null, false); 68 } 69 70 public RawStoreNode(ValueNode object, ValueNode offset, ValueNode value, JavaKind accessKind, LocationIdentity locationIdentity, boolean needsBarrier, FrameState stateAfter, 71 boolean forceAnyLocation) { 72 super(TYPE, StampFactory.forVoid(), object, offset, accessKind, locationIdentity, forceAnyLocation); 73 this.value = value; 74 this.needsBarrier = needsBarrier; 75 this.stateAfter = stateAfter; 76 assert accessKind != JavaKind.Void && accessKind != JavaKind.Illegal; 77 } 78 79 @NodeIntrinsic 80 public static native Object storeObject(Object object, long offset, Object value, @ConstantNodeParameter JavaKind kind, @ConstantNodeParameter LocationIdentity locationIdentity, 81 @ConstantNodeParameter boolean needsBarrier); 82 83 @NodeIntrinsic 84 public static native Object storeChar(Object object, long offset, char value, @ConstantNodeParameter JavaKind kind, @ConstantNodeParameter LocationIdentity locationIdentity); 85 86 @NodeIntrinsic 87 public static native Object storeByte(Object object, long offset, byte value, @ConstantNodeParameter JavaKind kind, @ConstantNodeParameter LocationIdentity locationIdentity); 88 89 public boolean needsBarrier() { 90 return needsBarrier; 91 } 92 93 @Override 94 public FrameState stateAfter() { 95 return stateAfter; 96 } 97 98 @Override 99 public void setStateAfter(FrameState x) { 100 assert x == null || x.isAlive() : "frame state must be in a graph"; 101 updateUsages(stateAfter, x); 102 stateAfter = x; 103 } 104 105 @Override 106 public boolean hasSideEffect() { 107 return true; 108 } |