[10] RFR 8187254 Rearrange private MethodType constructors (original) (raw)
Paul Sandoz paul.sandoz at oracle.com
Mon Dec 11 22:02:06 UTC 2017
- Previous message: RFR(JDK10/JAXP) 8190823: Broken link in org/w3c/dom/ls/
- Next message: [10] RFR 8187254 Rearrange private MethodType constructors
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi,
Please review this small fix to collapse the two private constructors of MethodType into one. This consolidates all the copying/validation logic into the factory method makeImpl.
Thanks, Paul.
diff -r 77866b9147be src/java.base/share/classes/java/lang/invoke/MethodType.java --- a/src/java.base/share/classes/java/lang/invoke/MethodType.java Mon Dec 11 10:50:17 2017 -0800 +++ b/src/java.base/share/classes/java/lang/invoke/MethodType.java Mon Dec 11 14:00:09 2017 -0800 @@ -105,23 +105,10 @@ private @Stable String methodDescriptor; // cache for toMethodDescriptorString
/**
* Check the given parameters for validity and store them into the final fields.
* Constructor that performs no copying or validation.
* Should only be called from the factory method makeImpl */
- private MethodType(Class rtype, Class[] ptypes, boolean trusted) {
checkRtype(rtype);
checkPtypes(ptypes);
this.rtype = rtype;
// defensively copy the array passed in by the user
this.ptypes = trusted ? ptypes : Arrays.copyOf(ptypes, ptypes.length);
- }
- /**
* Construct a temporary unchecked instance of MethodType for use only as a key to the intern table.
* Does not check the given parameters for validity, and must discarded (if untrusted) or checked
* (if trusted) after it has been used as a searching key.
* The parameters are reversed for this constructor, so that it is not accidentally used.
*/
- private MethodType(Class[] ptypes, Class rtype) {
- private MethodType(Class rtype, Class[] ptypes) { this.rtype = rtype; this.ptypes = ptypes; } @@ -308,18 +295,21 @@ if (ptypes.length == 0) { ptypes = NO_PTYPES; trusted = true; }
MethodType primordialMT = new MethodType(ptypes, rtype);
MethodType primordialMT = new MethodType(rtype, ptypes); MethodType mt = internTable.get(primordialMT); if (mt != null) return mt; // promote the object to the Real Thing, and reprobe
MethodType.checkRtype(rtype); if (trusted) {
MethodType.checkRtype(rtype); MethodType.checkPtypes(ptypes); mt = primordialMT; } else {
mt = new MethodType(rtype, ptypes, false);
// Make defensive copy then validate
ptypes = Arrays.copyOf(ptypes, ptypes.length);
MethodType.checkPtypes(ptypes);
mt = new MethodType(rtype, ptypes); } mt.form = MethodTypeForm.findForm(mt); return internTable.add(mt);
- Previous message: RFR(JDK10/JAXP) 8190823: Broken link in org/w3c/dom/ls/
- Next message: [10] RFR 8187254 Rearrange private MethodType constructors
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]