src/share/classes/java/lang/invoke/MemberName.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/classes/java/lang/invoke/MemberName.java	Fri May 10 08:54:00 2013
--- new/src/share/classes/java/lang/invoke/MemberName.java	Fri May 10 08:53:59 2013

*** 234,243 **** --- 234,245 ---- } else if (isMethod()) { assert(staticIsConsistent()); assert(MethodHandleNatives.refKindIsMethod(refKind)); if (clazz.isInterface()) assert(refKind == REF_invokeInterface || + refKind == REF_invokeStatic || + refKind == REF_invokeSpecial || refKind == REF_invokeVirtual && isObjectPublicMethod()); } else { assert(false); } return true;
*** 266,276 **** --- 268,278 ---- case REF_newInvokeSpecial: // Looked up a virtual, can get (e.g.) final String.hashCode. assert(refKind == REF_invokeSpecial) : this; return true; } ! assert(false) : this+" != "+MethodHandleNatives.refKindName((byte)originalRefKind); return true; } private boolean staticIsConsistent() { byte refKind = getReferenceKind(); return MethodHandleNatives.refKindIsStatic(refKind) == isStatic() || getModifiers() == 0;
*** 483,500 **** --- 485,507 ---- assert(isResolved() && this.clazz != null); this.name = m.getName(); if (this.type == null) this.type = new Object[] { m.getReturnType(), m.getParameterTypes() }; if (wantSpecial) { + assert(!isAbstract()) : this; if (getReferenceKind() == REF_invokeVirtual) changeReferenceKind(REF_invokeSpecial, REF_invokeVirtual); + else if (getReferenceKind() == REF_invokeInterface) + // invokeSpecial on a default method + changeReferenceKind(REF_invokeSpecial, REF_invokeInterface); } } public MemberName asSpecial() { switch (getReferenceKind()) { case REF_invokeSpecial: return this; case REF_invokeVirtual: return clone().changeReferenceKind(REF_invokeSpecial, REF_invokeVirtual); + case REF_invokeInterface: return clone().changeReferenceKind(REF_invokeSpecial, REF_invokeInterface); case REF_newInvokeSpecial: return clone().changeReferenceKind(REF_invokeSpecial, REF_newInvokeSpecial); } throw new IllegalArgumentException(this.toString()); } public MemberName asConstructor() {

src/share/classes/java/lang/invoke/MemberName.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File