RFR: 8296453: Simplify resource_area uses in ClassPathDirEntry::open_stream [v2]

David Holmes dholmes at openjdk.org
Fri Nov 11 03:47:44 UTC 2022


On Thu, 10 Nov 2022 08:39:53 GMT, Xin Liu <xliu at openjdk.org> wrote:

>> Currently it is correct, but there are two places we can improve it.
>> 
>> 1. We should assert that current == Thread::current(). If it were not case, then we would intermix NEW_RESOURCE_ARRAY_IN_THREAD(current, char, path_len) and FREE_RESOURCE_ARRAY(char, path, path_len)!
>> 
>> 2. We don't need to call FREE_RESOURCE_ARRAY(char, path, path_len) for path in its first exit. It won't release anything because buffer stands in its way.
>> 
>> The resource area is like this. `Afree(path, path_len)` won't reclaim the space.
>> 
>> |path | buffer |...|
>>                ^hwm
>
> Xin Liu has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
> 
>  - Add API FREE_RESOURCE_ARRAY_IN_THREAD.
>    
>    Remove the assert at the begining because it is redundant.
>    We also replace ResourceArea allocation/free with their IN_THREAD variants.
>  - Merge branch 'master' into JDK-8296453
>  - 8296453: Simplify resource_area uses in ClassPathDirEntry::open_stream

src/hotspot/share/classfile/classLoader.cpp line 245:

> 243: 
> 244: ClassFileStream* ClassPathDirEntry::open_stream(JavaThread* current, const char* name) {
> 245:   // current is Thread::current().

This is unnecessary

-------------

PR: https://git.openjdk.org/jdk/pull/11024


More information about the hotspot-runtime-dev mailing list