@Override protected NewArrayNode createNewArrayNode(ResolvedJavaType type) { return new SubstrateNewArrayNode(type, length(), fillContents(), stateBefore()); } }
@Override protected NewInstanceNode createNewInstanceNode(ResolvedJavaType type) { return new SubstrateNewInstanceNode(type, fillContents(), stateBefore()); } }
@Override protected VirtualInstanceNode createVirtualInstanceNode(boolean hasIdentity) { return new SubstrateVirtualInstanceNode(instanceClass(), hasIdentity); }
@Override public void lower(LoweringTool tool) { FixedNode originalNext = next(); replaceFirstSuccessor(originalNext, null); GraphUtil.killCFG(originalNext); replaceAtPredecessor(graph().add(new FarReturnLoweredNode(result, sp, ip))); safeDelete(); } }
@Override public void simplify(SimplifierTool tool) { tool.deleteBranch(next()); replaceAtPredecessor(graph().add(new DeadEndNode())); safeDelete(); }
private DeoptProxyAnchorNode createDeoptEntry(FrameStateBuilder stateBuilder, FrameState stateAfter, boolean anchorOnly) { DeoptProxyAnchorNode deoptEntry = graph.add(anchorOnly ? new DeoptProxyAnchorNode() : new DeoptEntryNode()); deoptEntry.setStateAfter(stateAfter); insertProxies(deoptEntry, stateBuilder); return deoptEntry; } }
@Override protected VirtualArrayNode createVirtualArrayNode(int constantLength) { return new SubstrateVirtualArrayNode(elementType(), constantLength); }
@Override protected AbstractObjectStamp copyWith(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean alwaysNull) { return new SubstrateNarrowOopStamp(type, exactType, nonNull, alwaysNull, getEncoding()); }
public static ReadRegisterFloatingNode forHeapBase() { return new ReadRegisterFloatingNode(SubstrateRegisterConfig::getHeapBaseRegister); }
public static ReadRegisterFixedNode forIsolateThread() { return new ReadRegisterFixedNode(SubstrateRegisterConfig::getThreadRegister); }
@Override public void setStateAfter(FrameState f) { updateUsages(deoptState, f); deoptState = f; }
@Override public FieldLocationIdentity fieldLocationIdentity(ResolvedJavaField field) { return new SubstrateFieldLocationIdentity(field); }
@Override protected NewArrayNode createNewArray(ResolvedJavaType elementType, ValueNode length, boolean fillContents) { return new SubstrateNewArrayNode(elementType, length, fillContents, null); }
@Override protected VirtualInstanceNode createVirtualInstanceNode(ResolvedJavaType type, boolean hasIdentity) { return new SubstrateVirtualInstanceNode(type, hasIdentity); }
@Override protected NewInstanceNode createNewInstance(ResolvedJavaType type, boolean fillContents) { return new SubstrateNewInstanceNode(type, fillContents, null); }
@Override public VirtualArrayNode duplicate() { return new SubstrateVirtualArrayNode(componentType, length); }
@Override protected Stamp mkStamp(Stamp input) { return SubstrateNarrowOopStamp.mkStamp(op, input, encoding); }
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { ValueNode arg0 = args[0]; com.oracle.svm.core.graal.nodes.MethodReturnNode node = new com.oracle.svm.core.graal.nodes.MethodReturnNode(arg0); b.addPush(JavaKind.Object, node); return true; } @Override
public static ReadRegisterFloatingNode forIsolateThread() { return new ReadRegisterFloatingNode(SubstrateRegisterConfig::getThreadRegister); }
public static ReadRegisterFixedNode forHeapBase() { return new ReadRegisterFixedNode(SubstrateRegisterConfig::getHeapBaseRegister); }