18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package org.graalvm.compiler.nodes.extended; 24 25 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0; 26 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0; 27 28 import org.graalvm.compiler.core.common.type.Stamp; 29 import org.graalvm.compiler.graph.NodeClass; 30 import org.graalvm.compiler.nodeinfo.NodeInfo; 31 import org.graalvm.compiler.nodes.FixedWithNextNode; 32 import org.graalvm.compiler.nodes.ValueNode; 33 import org.graalvm.compiler.nodes.spi.LIRLowerable; 34 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; 35 import org.graalvm.compiler.nodes.spi.ValueProxy; 36 37 @NodeInfo(cycles = CYCLES_0, size = SIZE_0) 38 public final class FixedValueAnchorNode extends FixedWithNextNode implements LIRLowerable, ValueProxy, GuardingNode { 39 public static final NodeClass<FixedValueAnchorNode> TYPE = NodeClass.create(FixedValueAnchorNode.class); 40 41 @Input ValueNode object; 42 private Stamp predefinedStamp; 43 44 public ValueNode object() { 45 return object; 46 } 47 48 public FixedValueAnchorNode(ValueNode object) { 49 super(TYPE, object.stamp()); 50 this.object = object; 51 } 52 53 public FixedValueAnchorNode(ValueNode object, Stamp predefinedStamp) { 54 super(TYPE, predefinedStamp); 55 this.object = object; 56 this.predefinedStamp = predefinedStamp; 57 } 58 59 @Override 60 public boolean inferStamp() { 61 if (predefinedStamp == null) { 62 return updateStamp(object.stamp()); 63 } else { 64 return false; 65 } 66 } 67 68 @NodeIntrinsic 69 public static native Object getObject(Object object); 70 | 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package org.graalvm.compiler.nodes.extended; 24 25 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0; 26 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0; 27 28 import org.graalvm.compiler.core.common.type.Stamp; 29 import org.graalvm.compiler.graph.NodeClass; 30 import org.graalvm.compiler.nodeinfo.NodeInfo; 31 import org.graalvm.compiler.nodes.FixedWithNextNode; 32 import org.graalvm.compiler.nodes.ValueNode; 33 import org.graalvm.compiler.nodes.spi.LIRLowerable; 34 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; 35 import org.graalvm.compiler.nodes.spi.ValueProxy; 36 37 @NodeInfo(cycles = CYCLES_0, size = SIZE_0) 38 public class FixedValueAnchorNode extends FixedWithNextNode implements LIRLowerable, ValueProxy, GuardingNode { 39 public static final NodeClass<FixedValueAnchorNode> TYPE = NodeClass.create(FixedValueAnchorNode.class); 40 41 @Input ValueNode object; 42 private Stamp predefinedStamp; 43 44 public ValueNode object() { 45 return object; 46 } 47 48 protected FixedValueAnchorNode(NodeClass<? extends FixedValueAnchorNode> c, ValueNode object) { 49 super(c, object.stamp()); 50 this.object = object; 51 } 52 53 public FixedValueAnchorNode(ValueNode object) { 54 this(TYPE, object); 55 } 56 57 public FixedValueAnchorNode(ValueNode object, Stamp predefinedStamp) { 58 super(TYPE, predefinedStamp); 59 this.object = object; 60 this.predefinedStamp = predefinedStamp; 61 } 62 63 @Override 64 public boolean inferStamp() { 65 if (predefinedStamp == null) { 66 return updateStamp(object.stamp()); 67 } else { 68 return false; 69 } 70 } 71 72 @NodeIntrinsic 73 public static native Object getObject(Object object); 74 |