Hi Mandy, good for me. in Basic.java, in methodTypes(), instead of using a new HashMap, you can use Map.of().
cheers, Rémi ----- Mail original ----- > De: "mandy chung" <[email protected]> > À: "Remi Forax" <[email protected]> > Cc: "core-libs-dev" <[email protected]> > Envoyé: Vendredi 1 Septembre 2017 07:39:54 > Objet: Re: Review Request JDK-8186050: StackFrame should provide the method > signature > Updated webrev: > http://cr.openjdk.java.net/~mchung/jdk10/webrevs/8186050/webrev.01/index.html > > This introduces two new methods, StackFrame::getMethodType and > StackFrame::getDescriptor. > > Mandy > > On 8/30/17 12:25 AM, Remi Forax wrote: >> Hi Mandy, >> thanks for taking care of this. >> >> In my opinion, we should provide both getMethodType() and getDescriptor(), >> getDescriptor() is handy for logging (finding the right overload when line >> numbers are not present) and getMethodType() is the one you whant if you want >> to inspect the runtime view of the stack frames (and by example interact with >> java.lang.invoke). For me, it's the same reason that give us >> getDeclaringClass() and getClassName() in the current API. >> >> So getDescriptor() can be called with no restriction but getMethodType() >> requires RETAIN_CLASS_REFERENCE. >> >> regards, >> Rémi >> >> ----- Mail original ----- >>> De: "mandy chung" <[email protected]> >>> À: "core-libs-dev" <[email protected]> >>> Envoyé: Mardi 29 Août 2017 00:57:28 >>> Objet: Review Request JDK-8186050: StackFrame should provide the method >>> signature >>> Method signature is missing in the StackFrame API. This proposes to add >>> StackFrame::getMethodDescriptor method to return the method descriptor >>> in a stack frame. >>> >>> Webrev at: >>> http://cr.openjdk.java.net/~mchung/jdk10/webrevs/8186050/webrev.00/index.html >>> >>> There are a couple options how to present the method signature in the >>> API level: >>> 1. Class<?>[] getParameterTypes() and Class<?> getReturnTypes() similiar >>> to what java.lang.reflect.Method has. >>> 2. java.lang.invoke.MethodType >>> 3. a String representation (i) comma-separated list of the method's >>> formal parameter types (ii) bytecode method descriptor as specified in JVMS >>> >>> Returning Class<?> instance should require to add a new StackWalker >>> option to access to the parameter types and return type for option #1 >>> and #2. StackFrame::getDeclaringClass requires the stack walker to have >>> the RETAIN_CLASS_REFERENCE capability. >>> >>> Option #2 returning MethodType is handy while java.lang would reference >>> a type in java.lang.invoke. >>> >>> Option #3 requires the caller to parse the return string and call >>> Class.forName to get the Class<?> instance. OTOH >>> MethodType::fromMethodDescriptorString method that returns MethodType >>> from a bytecode method descriptor string. >>> >>> Method signature is for information for typical cases. Getting Class<?> >>> for the parameter types and return type would be a niche case. I think >>> returning the method descriptor string is a good option - keep the API >>> simple and can use MethodType::fromMethodDescriptorString to get back >>> the types if needed. >>> >>> thanks > >> Mandy
