RFR: JDK-8179531: JShell: fails to provide bytecode for dynamically created lambdas

Robert Field robert.field at oracle.com
Fri May 5 15:27:04 UTC 2017


Ok



On May 5, 2017 7:01:32 AM Jan Lahoda <jan.lahoda at oracle.com> wrote:

> On 5.5.2017 04:24, Robert Field wrote:
>> One concern, in DefaultLoaderDelegate.RemoteClassLoader.findResources,
>> if it is possible for the result found by doFindResource to equal one of
>> those returned super.findResources then there would be a duplicate in
>> the Enumeration.
>
> I don't think super.findResources can return the resource we are
> returning from doFindResource.
>
> Thanks,
>      Jan
>
>>
>> Otherwise, looks good.
>>
>> Robert
>>
>> On 05/04/17 14:07, Jan Lahoda wrote:
>>> Thanks for the comments. An updated webrev:
>>> http://cr.openjdk.java.net/~jlahoda/8179531/webrev.01/
>>>
>>> On 4.5.2017 19:32, Paul Sandoz wrote:
>>>>
>>>>> On 4 May 2017, at 06:44, Jan Lahoda <jan.lahoda at oracle.com> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> This makes ClassLoader.getResource(s) return the actual bytecode
>>>>> that is being run.
>>>>>
>>>>> Bug:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8179531
>>>>>
>>>>> Webrev:
>>>>> http://cr.openjdk.java.net/~jlahoda/8179531/webrev.00/
>>>>>
>>>>
>>>> Looks good. Minor comments.
>>>>
>>>>
>>>> DefaultLoaderDelegate
>>>>>>>>
>>>>    68         private final Map<String, ClassFile> classFiles = new
>>>> TreeMap<>();
>>>>
>>>> HashMap?
>>>
>>> Sorry, done.
>>>
>>>>
>>>>
>>>>   187                 } catch (MalformedURLException ex) {
>>>>   188                 }
>>>>
>>>>
>>>> Rather than swallowing the exception you might wanna throw an
>>>> InternalError. I don’t think there are any valid resource names that
>>>> used in a raw manner would result in the creation of a malformed URL,
>>>> but just in case… I am a little paranoid about this, so would create
>>>> a URI instance from the component parts, and then pass the result of
>>>> toString to the URL constructor, thereby ensuring correct escaping of
>>>> the resource name as the URL path. Up to you.
>>>
>>> Done.
>>>
>>>>
>>>>
>>>> GetResourceTest
>>>>>>>>
>>>>   118         Thread.sleep(1000); //ensure time change:
>>>>
>>>> The test might intermittently fail. Recommend you wrap in try/catch
>>>> (InterruptedException e ) {}
>>>
>>> Done. (Will wait for a second even in case of the exception, to
>>> prevent following failure.)
>>>
>>>>
>>>>
>>>>   136     public void checkFieldAccess() throws InterruptedException {
>>>>
>>>>   152     public void checkGetResources() throws InterruptedException {
>>>>
>>>> I don’t see how those methods throw InterruptedException.
>>>
>>> Done.
>>>
>>> Jan
>>>
>>>>
>>>> Paul.
>>>>
>>




More information about the kulla-dev mailing list