RFR: 8347830: [premain] UseCompatibleCompressedOops is broken after merging with mainline
Vladimir Kozlov
kvn at openjdk.org
Fri May 16 15:01:09 UTC 2025
On Fri, 16 May 2025 14:45:17 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:
>> The issue was that we did not allocate space "noaccess prefix" before heap for read-only page when we setup type of encoding with `UseCompatibleCompressedOops` flag. I update code which reserves heap for compressed oops to take into account this flag.
>>
>> An other issue was that `UseCompatibleCompressedOops` flag was set during CDS arguments consistency checkup. But `UseCompressedOops` flag is set by GC ergonomics. I moved code to CDS ergonomics setting method.
>>
>> During testing I hit assert that AOT code address table is missing some code blob address. But it was actually card table base address which pointed inside CodeCache. I added special case to check for it early.
>>
>> Tested premain-tier1.
>
> src/hotspot/share/cds/cdsConfig.cpp line 140:
>
>> 138: FLAG_SET_ERGO_IF_DEFAULT(UseCompatibleCompressedOops, true);
>> 139: } else if (!FLAG_IS_DEFAULT(UseCompatibleCompressedOops)) {
>> 140: FLAG_SET_ERGO(UseCompatibleCompressedOops, false);
>
> Why do we need to set it to false explicitly here? If it is not default shouldn't we use whatever value the user specified?
I consider the flag make sense only for AOT code and not for general usage. See description: [globals.hpp#L132](https://github.com/openjdk/leyden/blob/premain/src/hotspot/share/runtime/globals.hpp#L132)
We don't want generate more complex encoding if we don't generate/use AOT code. Or compressed oops are off.
We had also recently discussed how we should disable some AOT features if AOT caching is off - the conclusion was that we should silently ignore them (may be produce UL output on demand). That is why I used ERGO setting.
-------------
PR Review Comment: https://git.openjdk.org/leyden/pull/67#discussion_r2093217555
More information about the leyden-dev
mailing list