src/share/classes/java/lang/invoke/DirectMethodHandle.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/classes/java/lang/invoke/DirectMethodHandle.java	Mon Jul 14 19:55:42 2014
--- new/src/share/classes/java/lang/invoke/DirectMethodHandle.java	Mon Jul 14 19:55:42 2014

*** 125,144 **** --- 125,146 ---- assert(init.getMethodType().returnType() == void.class); return new Constructor(mtype, lform, ctor, init, instanceClass); } @Override + MethodHandle copyWith(MethodType mt, LambdaForm lf) { + assert(this.getClass() == DirectMethodHandle.class); // must override in subclasses + return new DirectMethodHandle(mt, lf, member); + } + + @Override String internalProperties() { return "\n& DMH.MN="+internalMemberName(); } //// Implementation methods. @Override MethodHandle viewAsType(MethodType newType) { return new DirectMethodHandle(newType, form, member); } @Override @ForceInline MemberName internalMemberName() { return member; }
*** 362,373 **** --- 364,375 ---- @Override boolean isInvokeSpecial() { return true; } @Override ! MethodHandle viewAsType(MethodType newType) { ! return new Special(newType, form, member); ! MethodHandle copyWith(MethodType mt, LambdaForm lf) { ! return new Special(mt, lf, member); } } /** This subclass handles constructor references. */ static class Constructor extends DirectMethodHandle {
*** 380,391 **** --- 382,393 ---- this.initMethod = initMethod; this.instanceClass = instanceClass; assert(initMethod.isResolved()); } @Override ! MethodHandle viewAsType(MethodType newType) { ! return new Constructor(newType, form, member, initMethod, instanceClass); ! MethodHandle copyWith(MethodType mt, LambdaForm lf) { ! return new Constructor(mt, lf, member, initMethod, instanceClass); } } /*non-public*/ static Object constructorMethod(Object mh) { Constructor dmh = (Constructor)mh;
*** 410,421 **** --- 412,423 ---- @Override Object checkCast(Object obj) { return fieldType.cast(obj); } @Override ! MethodHandle viewAsType(MethodType newType) { ! return new Accessor(newType, form, member, fieldOffset); ! MethodHandle copyWith(MethodType mt, LambdaForm lf) { ! return new Accessor(mt, lf, member, fieldOffset); } } @ForceInline /*non-public*/ static long fieldOffset(Object accessorObj) {
*** 453,464 **** --- 455,466 ---- @Override Object checkCast(Object obj) { return fieldType.cast(obj); } @Override ! MethodHandle viewAsType(MethodType newType) { ! return new StaticAccessor(newType, form, member, staticBase, staticOffset); ! MethodHandle copyWith(MethodType mt, LambdaForm lf) { ! return new StaticAccessor(mt, lf, member, staticBase, staticOffset); } } @ForceInline /*non-public*/ static Object nullCheck(Object obj) {

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