# HG changeset patch # User Doug Simon # Date 1404208134 -7200 # Node ID e7af30d6ae5ba47deae9eb08b8a9979bfb4646b8 # Parent 0ffff2c5e44eec71dc27378c1fa9a423e6de51c9 remove frame state manipulation after a DeoptimizeNode is appended as the state will never be used; remove unused ParameterNodes from a graph diff -r 0ffff2c5e44e -r e7af30d6ae5b graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue Jul 01 09:48:10 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue Jul 01 11:48:54 2014 +0200 @@ -278,6 +278,14 @@ n.safeDelete(); } } + + // remove dead parameters + for (ParameterNode param : currentGraph.getNodes(ParameterNode.class)) { + if (param.usages().isEmpty()) { + assert param.inputs().isEmpty(); + param.safeDelete(); + } + } } } @@ -308,7 +316,6 @@ protected void handleUnresolvedLoadConstant(JavaType type) { assert !graphBuilderConfig.eagerResolving(); append(new DeoptimizeNode(InvalidateRecompile, Unresolved)); - frameState.push(Kind.Object, appendConstant(Constant.NULL_OBJECT)); } /** @@ -343,7 +350,6 @@ protected void handleUnresolvedNewInstance(JavaType type) { assert !graphBuilderConfig.eagerResolving(); append(new DeoptimizeNode(InvalidateRecompile, Unresolved)); - frameState.apush(appendConstant(Constant.NULL_OBJECT)); } /** @@ -354,7 +360,6 @@ protected void handleUnresolvedNewObjectArray(JavaType type, ValueNode length) { assert !graphBuilderConfig.eagerResolving(); append(new DeoptimizeNode(InvalidateRecompile, Unresolved)); - frameState.apush(appendConstant(Constant.NULL_OBJECT)); } /** @@ -365,7 +370,6 @@ protected void handleUnresolvedNewMultiArray(JavaType type, List dims) { assert !graphBuilderConfig.eagerResolving(); append(new DeoptimizeNode(InvalidateRecompile, Unresolved)); - frameState.apush(appendConstant(Constant.NULL_OBJECT)); } /** @@ -376,9 +380,7 @@ @Override protected void handleUnresolvedLoadField(JavaField field, ValueNode receiver) { assert !graphBuilderConfig.eagerResolving(); - Kind kind = field.getKind(); append(new DeoptimizeNode(InvalidateRecompile, Unresolved)); - frameState.push(kind.getStackKind(), appendConstant(Constant.defaultForKind(kind))); } /** @@ -403,15 +405,13 @@ append(new DeoptimizeNode(InvalidateRecompile, Unresolved)); } + /** + * @param javaMethod + * @param invokeKind + */ protected void handleUnresolvedInvoke(JavaMethod javaMethod, InvokeKind invokeKind) { assert !graphBuilderConfig.eagerResolving(); - boolean withReceiver = invokeKind != InvokeKind.Static; append(new DeoptimizeNode(InvalidateRecompile, Unresolved)); - frameState.popArguments(javaMethod.getSignature().getParameterSlots(withReceiver), javaMethod.getSignature().getParameterCount(withReceiver)); - Kind kind = javaMethod.getSignature().getReturnKind(); - if (kind != Kind.Void) { - frameState.push(kind.getStackKind(), appendConstant(Constant.defaultForKind(kind))); - } } private DispatchBeginNode handleException(ValueNode exceptionObject, int bci) {