RFR: 8290464: Optimize ResourceArea zapping on ResourceMark release
Thomas Stuefe
stuefe at openjdk.org
Tue Jul 19 13:39:04 UTC 2022
On Tue, 19 Jul 2022 13:33:18 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:
>> We have `ResourceMark` scopes where we either do not resource-allocate at all (see the bug for the example), or we do not allocate a lot in the arena. Still, in debug builds, we are zapping the entirety of `ResourceArea` chunk in those cases. This wastes testing cycles unnecessarily. Doing this in a bit smarter way -- zapping only the parts that were actually allocated in the chunk -- makes testing significantly faster.
>>
>> Additional testing:
>> - [x] Linux x86_64 fastdebug, `FieldSetAccessibleTest` (~10% faster)
>> - [x] Linux x86_64 release, `FieldSetAccessibleTest` (no regressions)
>> - [x] Linux x86_64 fastdebug, `hotspot:tier1` (~5% faster)
>> - [x] Linux x86_64 release, `hotspot:tier1` (no regressions)
>> - [x] Linux x86_64 fastdebug, `tier1` (~2% faster)
>> - [x] Linux x86_64 release, `tier1` (no regressions)
>
> src/hotspot/share/memory/resourceArea.hpp line 140:
>
>> 138: // up to replaced hwm.
>> 139: if (ZapResourceArea) {
>> 140: char* limit = have_more_chunks ? _max : replaced_hwm;
>
> I'd feel better if we instead did a range check on _hwm with the chunks boundaries. Zap the whole chunk if replaced hwm falls outside the current chunk.
>
>
> limit = (_chunk->contains(replaced_hwm)) ? replaced_hwm : max;
>
> That's at least clearer intent and possibly safer.
>
> Also means you don't need your new "have_more_chunks" variable.
Oh, and an assert would be nice that if we rollback inside the same chunk that the new hwm is smaller than the old one.
-------------
PR: https://git.openjdk.org/jdk/pull/9543
More information about the hotspot-runtime-dev
mailing list