[Nestmates] RFR Lookup.defineClass nest-host update
Mandy Chung
mandy.chung at oracle.com
Mon Nov 5 21:34:28 UTC 2018
On 11/5/18 1:16 PM, David Holmes wrote:
> Hi Mandy,
>
> On 6/11/2018 4:52 AM, Mandy Chung wrote:
>> Hi David,
>>
>> On 11/4/18 11:03 PM, David Holmes wrote:
>>> webrev:
>>> http://cr.openjdk.java.net/~dholmes/dynamic-nestmates/webrev.nest_host_update/
>>>
>>>
>>> Testing showed that the internal use of Class.getNestHost inside
>>> Lookup.defineClass was not suitable as invalidly defined
>>> nest-hosts/members resulted in an inappropriate nest-host being
>>> passed into the the VM to set_nest_host (a class becomes it's own
>>> nest-host if there are any validation errors). set_nest_host needs a
>>> valid nest-host else we'll hit assertion failures.
>>>
>>> The solution was to pass the lookupClass through to the VM and have
>>> jvm_lookup_define_class do a direct InstanceKlass::nest_host()
>>> lookup that will throw exceptions if there are validation issues.
>>>
>>
>> The fix looks fine to me. The adjusted logging statement reads
>> better, thanks. Should we add a test for it?
>
> What kind of test, it is just an informational output AFAICS.
>
I referred to ICCE. I was thinking when the LoggerFinder tests that
uncover this bug are updated and whether this issue is caught by
existing tests.
>> Alternatively we can keep JVM_LookupDefineClass to expect the lookup
>> class parameter must be the nest host (that's the intent - do you see
>> a check in the VM side to enforce that?). The library will do the
>> validation and pass a valid nest host to JVM entry point to keep it
>> simple. In that case perhaps JVM_GetNestHost can take an additional
>> argument with exception or not. Lois may have an opinion.
>
> I wanted to avoid having to expose a second API to call into the VM to
> get the nest-host but allow for exceptions. This also reduces the
> number of calls into the VM.
>
> Further, all the way through the library code and into the VM the
> class parameter was already called "lookup", but in fact was only
> non-NULL when it was actually the nest-host - which need not be the
> same as the lookup class. At least now the parameter is always
> non-null and always the lookup.
I'm fine with your current patch. I agree to avoid a second API to get
the nest host with the exception.
Mandy
More information about the valhalla-dev
mailing list