Mercurial > hg > graal-jvmci-8
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