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