Mercurial > hg > graal-compiler
changeset 16340:e7af30d6ae5b
remove frame state manipulation after a DeoptimizeNode is appended as the state will never be used; remove unused ParameterNodes from a graph
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 01 Jul 2014 11:48:54 +0200 |
parents | 0ffff2c5e44e |
children | 627f255ee298 |
files | graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java |
diffstat | 1 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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<ValueNode> 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) {