[lworld] RFR: 8248003: [lworld] [lw3] VM crashes when classes with inline type fields are loaded from CDS archive
Frederic Parain
frederic.parain at oracle.com
Mon Jun 22 19:43:52 UTC 2020
Ioi,
Thank you for reviewing these changes.
Line 1497 was added when I was trying to be more selective in
InstanceKlass::remove_unshareable_info() but it didn’t work out.
After unconditional reset at instanceKlass.cpp:2669, then
line 1497 in systemDictionary.cpp is not needed anymore. Thank you
for spotting this.
I’m looking at RewriteBytecodesTest.java.
Fred
> On Jun 22, 2020, at 14:25, Ioi Lam <ioi.lam at oracle.com> wrote:
>
> Hi Fred,
>
> The changesets look OK to me. It is mixed with both CDS changes and function renaming. I reviewed only the CDS changes.
>
> instanceKlass.cpp
>
> 2666 if (has_inline_type_fields()) {
> 2667 for (AllFieldStream fs(fields(), constants()); !fs.done(); fs.next()) {
> 2668 if (Signature::basic_type(fs.signature()) == T_VALUETYPE) {
> 2669 reset_inline_type_field_klass(fs.index());
> 2670 }
> 2671 }
> 2672 }
>
> systemDictionary.cpp:
>
> 1484 if (ik->has_inline_type_fields()) {
> 1485 for (AllFieldStream fs(ik->fields(), ik->constants()); !fs.done(); fs.next()) {
> 1486 if (Signature::basic_type(fs.signature()) == T_VALUETYPE) {
> 1487 if (!fs.access_flags().is_static()) {
> 1488 // Pre-load inline class
> 1489 Klass* real_k = SystemDictionary::resolve_inline_type_field_or_fail(&fs,
> 1490 class_loader, protection_domain, true, CHECK_NULL);
> 1491 Klass* k = ik->get_inline_type_field_klass_or_null(fs.index());
> 1492 if (real_k != k) {
> 1493 // oops, the app has substituted a different version of k!
> 1494 return NULL;
> 1495 }
> 1496 } else {
> 1497 ik->reset_inline_type_field_klass(fs.index());
> 1498 }
>
> [1] Is line 1497 still necessary?
> [2] For testing line 1494, I would recommend writing a new test case that dynamically redefines a "Q" class. You can see an example:
>
> test/hotspot/jtreg/runtime/cds/appcds/RewriteBytecodesTest.java
>
> Thanks
> - Ioi
>
> On 6/22/20 5:56 AM, Frederic Parain wrote:
>> Please review this changeset fixing several issues in CDS related to inline type metadata removal and restoration.
>>
>> Thank you,
>>
>> Fred
>>
>> -------------
>>
>> Commit messages:
>> - Fix inline type support in CDS
>>
>> Changes: https://git.openjdk.java.net/valhalla/pull/95/files
>> Webrev: https://webrevs.openjdk.java.net/valhalla/95/webrev.00
>> Issue: https://bugs.openjdk.java.net/browse/JDK-8248003
>> Stats: 151 lines in 22 files changed: 93 ins; 5 del; 53 mod
>> Patch: https://git.openjdk.java.net/valhalla/pull/95.diff
>> Fetch: git fetch https://git.openjdk.java.net/valhalla pull/95/head:pull/95
>>
>> PR: https://git.openjdk.java.net/valhalla/pull/95
>
More information about the valhalla-dev
mailing list