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

src/share/classes/java/lang/invoke/DirectMethodHandle.java

Print this page
rev 10271 : 8037209: Improvements and cleanups to bytecode assembly for lambda forms
Reviewed-by: vlivanov, psandoz
Contributed-by: john.r.rose@oracle.com
rev 10274 : 8050052: Small cleanups in java.lang.invoke code
Reviewed-by: ?
rev 10276 : 8050166: Get rid of some package-private methods on arguments in j.l.i.MethodHandle
Reviewed-by: vlivanov, ?
Contributed-by: john.r.rose@oracle.com
rev 10277 : 8050173: Add j.l.i.MethodHandle.copyWith(MethodType, LambdaForm)
Reviewed-by: vlivanov, ?
Contributed-by: john.r.rose@oracle.com
rev 10279 : 8050057: Improve caching of MethodHandle reinvokers
Reviewed-by: vlivanov, ?
Contributed-by: john.r.rose@oracle.com


 110     }
 111     static DirectMethodHandle make(Method method) {
 112         return make(method.getDeclaringClass(), new MemberName(method));
 113     }
 114     static DirectMethodHandle make(Field field) {
 115         return make(field.getDeclaringClass(), new MemberName(field));
 116     }
 117     private static DirectMethodHandle makeAllocator(MemberName ctor) {
 118         assert(ctor.isConstructor() && ctor.getName().equals("<init>"));
 119         Class<?> instanceClass = ctor.getDeclaringClass();
 120         ctor = ctor.asConstructor();
 121         assert(ctor.isConstructor() && ctor.getReferenceKind() == REF_newInvokeSpecial) : ctor;
 122         MethodType mtype = ctor.getMethodType().changeReturnType(instanceClass);
 123         LambdaForm lform = preparedLambdaForm(ctor);
 124         MemberName init = ctor.asSpecial();
 125         assert(init.getMethodType().returnType() == void.class);
 126         return new Constructor(mtype, lform, ctor, init, instanceClass);
 127     }
 128 
 129     @Override





 130     MethodHandle copyWith(MethodType mt, LambdaForm lf) {
 131         assert(this.getClass() == DirectMethodHandle.class);  // must override in subclasses
 132         return new DirectMethodHandle(mt, lf, member);
 133     }
 134 
 135     @Override
 136     String internalProperties() {
 137         return "\n& DMH.MN="+internalMemberName();
 138     }
 139 
 140     //// Implementation methods.
 141     @Override
 142     @ForceInline
 143     MemberName internalMemberName() {
 144         return member;
 145     }
 146 
 147     private static final MemberName.Factory IMPL_NAMES = MemberName.getFactory();
 148 
 149     /**




 110     }
 111     static DirectMethodHandle make(Method method) {
 112         return make(method.getDeclaringClass(), new MemberName(method));
 113     }
 114     static DirectMethodHandle make(Field field) {
 115         return make(field.getDeclaringClass(), new MemberName(field));
 116     }
 117     private static DirectMethodHandle makeAllocator(MemberName ctor) {
 118         assert(ctor.isConstructor() && ctor.getName().equals("<init>"));
 119         Class<?> instanceClass = ctor.getDeclaringClass();
 120         ctor = ctor.asConstructor();
 121         assert(ctor.isConstructor() && ctor.getReferenceKind() == REF_newInvokeSpecial) : ctor;
 122         MethodType mtype = ctor.getMethodType().changeReturnType(instanceClass);
 123         LambdaForm lform = preparedLambdaForm(ctor);
 124         MemberName init = ctor.asSpecial();
 125         assert(init.getMethodType().returnType() == void.class);
 126         return new Constructor(mtype, lform, ctor, init, instanceClass);
 127     }
 128 
 129     @Override
 130     BoundMethodHandle rebind() {
 131         return BoundMethodHandle.makeReinvoker(this);
 132     }
 133 
 134     @Override
 135     MethodHandle copyWith(MethodType mt, LambdaForm lf) {
 136         assert(this.getClass() == DirectMethodHandle.class);  // must override in subclasses
 137         return new DirectMethodHandle(mt, lf, member);
 138     }
 139 
 140     @Override
 141     String internalProperties() {
 142         return "\n& DMH.MN="+internalMemberName();
 143     }
 144 
 145     //// Implementation methods.
 146     @Override
 147     @ForceInline
 148     MemberName internalMemberName() {
 149         return member;
 150     }
 151 
 152     private static final MemberName.Factory IMPL_NAMES = MemberName.getFactory();
 153 
 154     /**


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