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) {