changeset 7017:70bff0fa64b1

Rename Invoke.isMegamorphic to isPolymorphic since it's what it is actually used for. InvokeWithExceptionNode should not be polymorphic by default
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 23 Nov 2012 12:18:01 +0100
parents 05e03daa8645
children 17eeac928874
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/Invoke.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java
diffstat 5 files changed, 17 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Fri Nov 23 15:30:48 2012 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Fri Nov 23 12:18:01 2012 +0100
@@ -395,7 +395,7 @@
                 AbstractCallTargetNode loweredCallTarget = null;
                 if (callTarget.invokeKind() == InvokeKind.Virtual &&
                     GraalOptions.InlineVTableStubs &&
-                    (GraalOptions.AlwaysInlineVTableStubs || invoke.isMegamorphic())) {
+                    (GraalOptions.AlwaysInlineVTableStubs || invoke.isPolymorphic())) {
 
                     HotSpotResolvedJavaMethod hsMethod = (HotSpotResolvedJavaMethod) callTarget.targetMethod();
                     if (!hsMethod.getDeclaringClass().isInterface()) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/Invoke.java	Fri Nov 23 15:30:48 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/Invoke.java	Fri Nov 23 12:18:01 2012 +0100
@@ -62,11 +62,11 @@
     void setUseForInlining(boolean value);
 
     /**
-     * True if this invocation is almost certainly megamorphic, false when in doubt.
+     * True if this invocation is almost certainly polymorphic, false when in doubt.
      */
-    boolean isMegamorphic();
+    boolean isPolymorphic();
 
-    void setMegamorphic(boolean value);
+    void setPolymorphic(boolean value);
 
     long leafGraphId();
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Fri Nov 23 15:30:48 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Fri Nov 23 12:18:01 2012 +0100
@@ -39,7 +39,7 @@
 
     @Input private final CallTargetNode callTarget;
     private final int bci;
-    private boolean megamorphic;
+    private boolean polymorphic;
     private boolean useForInlining;
     private final long leafGraphId;
 
@@ -54,7 +54,7 @@
         this.callTarget = callTarget;
         this.bci = bci;
         this.leafGraphId = leafGraphId;
-        this.megamorphic = false;
+        this.polymorphic = false;
         this.useForInlining = true;
     }
 
@@ -69,13 +69,13 @@
     }
 
     @Override
-    public boolean isMegamorphic() {
-        return megamorphic;
+    public boolean isPolymorphic() {
+        return polymorphic;
     }
 
     @Override
-    public void setMegamorphic(boolean value) {
-        this.megamorphic = value;
+    public void setPolymorphic(boolean value) {
+        this.polymorphic = value;
     }
 
     public boolean useForInlining() {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Fri Nov 23 15:30:48 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Fri Nov 23 12:18:01 2012 +0100
@@ -39,8 +39,7 @@
     @Input private final CallTargetNode callTarget;
     @Input private FrameState stateAfter;
     private final int bci;
-    // megamorph should only be true when the compiler is sure that the call site is megamorph, and false when in doubt
-    private boolean megamorphic;
+    private boolean polymorphic;
     private boolean useForInlining;
     private final long leafGraphId;
 
@@ -49,7 +48,7 @@
         this.bci = bci;
         this.callTarget = callTarget;
         this.leafGraphId = leafGraphId;
-        this.megamorphic = true;
+        this.polymorphic = false;
         this.useForInlining = true;
     }
 
@@ -78,13 +77,13 @@
     }
 
     @Override
-    public boolean isMegamorphic() {
-        return megamorphic;
+    public boolean isPolymorphic() {
+        return polymorphic;
     }
 
     @Override
-    public void setMegamorphic(boolean value) {
-        this.megamorphic = value;
+    public void setPolymorphic(boolean value) {
+        this.polymorphic = value;
     }
 
     @Override
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Fri Nov 23 15:30:48 2012 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Fri Nov 23 12:18:01 2012 +0100
@@ -667,7 +667,7 @@
                         return null;
                     }
                 } else {
-                    invoke.setMegamorphic(true);
+                    invoke.setPolymorphic(true);
                     if (optimisticOpts.inlinePolymorphicCalls() && notRecordedTypeProbability == 0 || optimisticOpts.inlineMegamorphicCalls() && notRecordedTypeProbability > 0) {
                         // TODO (chaeubl) inlining of multiple methods should work differently
                         // 1. check which methods can be inlined