RFR: 8217450: Add PackageEntry::locked_lookup_only
Lois Foltan
lois.foltan at oracle.com
Tue Jan 22 21:53:27 UTC 2019
On 1/22/2019 2:35 PM, Claes Redestad wrote:
>
>
> On 2019-01-22 18:10, Lois Foltan wrote:
>>>>
>>>> Ok - updated http://cr.openjdk.java.net/~redestad/8217450/open.01/ in
>>>> place and running some sanity tests before push.
>>>>
>>>> Thanks!
>>>>
>>>> /Claes
>>>
>>> Hi Claes,
>>>
>>> The code change in modules.cpp lines #211-214 does not look correct.
>>> PackageEntry::locked_create_entry_or_null() will return NULL if the
>>> package exists and has already been created. The code at lines
>>> #211-214 need a PackageEntry to be successfully returned for
>>> java.base packages created during bootstrapping so we can decrement
>>> the refcount for it appropriately.
>>
>> Just to clarify further. Obtaining a PackageEntry itself is not a
>> requirement for decrementing the refcount of the Symbol* within the
>> table. However, the assert at line #213 will trigger if
>> PackageEntry::locked_create_entry_or_null() returns NULL for an
>> existing package. A PackageEntry can be created for any class
>> loaded, such as java/lang/Class and java/lang/Object for example,
>> during bootstrapping before java.base is defined to the JVM. These
>> classes are put on a fixup_module_list so that once the java.base
>> module is defined the JVM can then fixup their java.lang.Module field
>> to be correctly set to java.base.
>
> Hi Lois,
>
> thanks for looking at this!
>
> As you say: when locked_create_entry_or_null() returns NULL this
> *should* be because the package already exists. The assert is thus not
> asserting if pkg == NULL alone, locked_lookup_only() must also return
> NULL for the assert to trigger: i.e., I'm checking that a NULL really
> meant that the package already existed, and not something else, such as
> a failure to allocate the PackageEntry.
>
> I thought this was the purpose of the original assert: getting a NULL
> back from locked_create_entry_or_null() when we *know* there was no pre-
> existing package should be impossible (we're holding the lock, so that a
> NULL must be a failure to allocate or worse).
>
> Am I missing something here?
Hi Claes,
No you're not! I wrongfully assumed you had not changed the conditional
of the assert and was only checking if pkg != NULL. Thanks for
clarifying, I'm ok with the change.
Lois
>
> /Claes
More information about the hotspot-runtime-dev
mailing list