RFR: 8253037: G1: Improve check for string dedup
Kim Barrett
kbarrett at openjdk.java.net
Mon Nov 2 11:23:02 UTC 2020
On Mon, 2 Nov 2020 08:39:43 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:
>> Please review this change to G1 evacuation's checking for string
>> deduplication. The old code would go out of line to the G1StringDedup
>> support code for every object when deduplication is enabled, only to usually
>> discover the object isn't a string. Instead we now have a simpl inline
>> test for the combination of dedup enabled and object is a string, and only
>> call out to the dedup support code when that's true. This eliminates some
>> work for every non-string (non-array) object when dedup is enabled.
>>
>> The performance impact seems to be pretty small and hard to measure, since
>> enabling deduplication has other costs that seem to overwhelm the cost
>> here. I'm hoping to improve that with JDK-8254598.
>>
>> Testing:
>> tier1 on Oracle supported platforms.
>> Performance testing with deduplication enabled.
>
> src/hotspot/share/gc/g1/g1ParScanThreadState.hpp line 88:
>
>> 86: PartialArrayTaskStepper _partial_array_stepper;
>> 87: // Used to check whether string dedup should be applied to an object.
>> 88: Klass* _string_klass_or_null;
>
> Maybe add a note that we replicate java_lang_String::is_instance_inlined() here for performance reasons (skipping the NULL check), so that when it changes, maybe a grep will find this here?
I think such a comment is better placed at the point of use, which is what I intend to do.
-------------
PR: https://git.openjdk.java.net/jdk/pull/981
More information about the hotspot-gc-dev
mailing list