Mercurial > hg > graal-compiler
diff graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java @ 15102:175111728365
improve canBeStaticallyBound
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Mon, 14 Apr 2014 15:08:30 -0700 |
parents | d3add9b82b71 |
children | 96bb07a5d667 |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java Mon Apr 14 15:07:55 2014 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java Mon Apr 14 15:08:30 2014 -0700 @@ -187,7 +187,7 @@ @Override public boolean canBeStaticallyBound() { int modifiers = getModifiers(); - return (Modifier.isFinal(modifiers) || Modifier.isPrivate(modifiers) || Modifier.isStatic(modifiers)) && !Modifier.isAbstract(modifiers); + return (Modifier.isFinal(modifiers) || Modifier.isPrivate(modifiers) || Modifier.isStatic(modifiers) || Modifier.isFinal(holder.getModifiers())) && !Modifier.isAbstract(modifiers); } @Override @@ -616,8 +616,11 @@ * @return virtual table index */ private int getVtableIndex() { + assert !Modifier.isInterface(holder.getModifiers()); HotSpotVMConfig config = runtime().getConfig(); - return unsafe.getInt(metaspaceMethod + config.methodVtableIndexOffset); + int result = unsafe.getInt(metaspaceMethod + config.methodVtableIndexOffset); + assert result >= config.nonvirtualVtableIndex : "must be linked"; + return result; } public SpeculationLog getSpeculationLog() {