magic reflection access checks
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Tue Aug 21 15:10:09 PDT 2007
I agree that wasn't clear. We are only loading these classes at this point so
the access checks are only performed for supers and interfaces. Access checks
for those should always pass these tests, i.e we shouldn't be inheriting from
non public classes unless we are in the same package.
There is a later section of verify_class_access that checks for some other
special cases that I guess you could get on the bootclasspath but I think those
deal with access checks for inner classes which I don't think come in to play
during our bootstrap.
tom
Christian Thalinger wrote:
> On Tue, 2007-08-21 at 14:30 -0700, Tom Rodriguez wrote:
>> MagicAccessorImpl is loaded as part of our bootstrap in
>> SystemDictionary::initialize_preloaded_classes. verify_class_access will only
>> try to use MagicAccessorImpl if this test fails:
>>
>> 445 if ((current_class == NULL) ||
>> 446 (current_class == new_class) ||
>> 447 (instanceKlass::cast(new_class)->is_public()) ||
>> 448 is_same_class_package(current_class, new_class)) {
>> 449 return true;
>> 450 }
>>
>> This test should never fail for any classes on the boot classpath so by the time
>> any code needs a non null value we have it. Do you have logic equivalent to this?
>
> Hmm, sorry, I don't see why this test should always be true for the boot
> classpath. Could you explain a bit more?
>
> - twisti
More information about the hotspot-dev
mailing list