# HG changeset patch # User Lukas Stadler # Date 1363023693 -3600 # Node ID afb190b1eeb348baf563c806308220b4ab1ae3e2 # Parent 841ae7237a142812adbdf99c0f5cd57acff2ff7b added RegisterFinalizer.virtualize diff -r 841ae7237a14 -r afb190b1eeb3 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Wed Mar 20 13:41:44 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Mon Mar 11 18:41:33 2013 +0100 @@ -32,7 +32,7 @@ * This node is used to perform the finalizer registration at the end of the java.lang.Object * constructor. */ -public final class RegisterFinalizerNode extends AbstractStateSplit implements StateSplit, Canonicalizable, LIRLowerable { +public final class RegisterFinalizerNode extends AbstractStateSplit implements StateSplit, Canonicalizable, LIRLowerable, Virtualizable { public static final Descriptor REGISTER_FINALIZER = new Descriptor("registerFinalizer", true, void.class, Object.class); @@ -74,4 +74,12 @@ return this; } + + @Override + public void virtualize(VirtualizerTool tool) { + State state = tool.getObjectState(object); + if (state != null && !state.getVirtualObject().type().hasFinalizer()) { + tool.delete(); + } + } }