RFR (S) 8134758: Final String field values should be trusted as stable
aleksey.shipilev at oracle.com
Tue Sep 1 12:31:44 UTC 2015
Yes, I wondered how String Deduplication works with the String.value
stability. I guessed that as long as dedup is idempotent (e.g. it
switches the char to the semantically the same char), we are fine.
Even if we inline the "old" reference to char into the generated code,
it seems to become the GC root on its own.
And yes, this particular change does nothing new to that mechanics.
On 09/01/2015 02:43 PM, Per Liden wrote:
> Hi Aleksey,
> I'm trying to figure out if this has any impact on String deduplication
> (which can change the String.value field), but I can't see any obvious
> problems. Dedup already handles the case where GraphKit treats it as a
> stable field and I don't see that this adds any new cases. Just wanted
> to double check that you reached the same conclusion?
> On 2015-08-31 16:59, Aleksey Shipilev wrote:
>> I would like to make a forward move and make VM to trust all final
>> String fields. I cannot quickly find the scenario where it helps current
>> JDK -- there is only String.value field, which components are not
>> treated as constants anyway. But, it helps a lot the upcoming Compact
>> Strings change, which introduces String.coder field.
>> String.value is actually handled as stable in the GraphKit with
>> UseImplicitStableValues, but it does not affect "normal" Java code.
>> Therefore, in a way, this change extends the same behavior to the normal
>> code. See more here:
>> Here is a patch:
>> Passes JPRT and eyeballed assembly looks fine on Linux x86_64.
>> Does the change itself look generic enough to consider straight in the
>> mainline? Otherwise, we can keep it in Compact Strings sandbox, but it
>> will eventually arrive back entangled in a much larger code change, and
>> shall still require review.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 819 bytes
Desc: OpenPGP digital signature
More information about the hotspot-compiler-dev