# HG changeset patch # User Gilles Duboscq # Date 1353669481 -3600 # Node ID 70bff0fa64b14434f99879fbdb318dca2002c0a3 # Parent 05e03daa8645db490ce351027a32f98ac04aba17 Rename Invoke.isMegamorphic to isPolymorphic since it's what it is actually used for. InvokeWithExceptionNode should not be polymorphic by default diff -r 05e03daa8645 -r 70bff0fa64b1 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java --- 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()) { diff -r 05e03daa8645 -r 70bff0fa64b1 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/Invoke.java --- 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(); } diff -r 05e03daa8645 -r 70bff0fa64b1 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java --- 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() { diff -r 05e03daa8645 -r 70bff0fa64b1 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java --- 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 diff -r 05e03daa8645 -r 70bff0fa64b1 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java --- 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