Review request: 8009174: add class load event tracing
David Holmes
david.holmes at oracle.com
Thu Feb 28 23:59:28 PST 2013
On 1/03/2013 5:37 PM, Staffan Larsen wrote:
>
> On 1 mar 2013, at 07:57, David Holmes <David.Holmes at oracle.com> wrote:
>
>> Hi Calvin,
>>
>> So this adds the code that would allow for the event tracing but it doesn't actually add the code that will do the event tracing ???
>
> It does add the code that creates the event and pushes it into the event tracing framework. This is all that is required to add a new event to the event tracing.
Now that was weird. When I loaded the webrev the systemDictionary.cpp
change stopped just after the post_class_load_event method. I didn't see
the changes that used the post_class_load_event method.
So now that I can see them ... the event is being recorded prematurely:
816 // If everything was OK (no exceptions, no null return value),
817 // post a class load event.
818 if (!HAS_PENDING_EXCEPTION && !k.is_null()) {
819 // post class load event
820 post_class_load_event(starttime, k, class_loader);
821
822 // class_loader is NOT the defining loader, do a little
more bookkeeping.
823 if (k->class_loader() != class_loader()) {
824
825 check_constraints(d_index, d_hash, k, class_loader,
false, THREAD);
826
827 // Need to check for a PENDING_EXCEPTION again;
check_constraints
828 // can throw and doesn't use the CHECK macro.
The class isn't really loaded until it has passed the loader constraint
check. And later the protection domain validation check could fail.
>> Second problem: you can't store raw oops into the event. Even if classloader oops were somehow non-moving, the loader may not exist at the time the event is examined.
>
> You can store raw oops into the event. We take care to make sure they are never referenced after the commit() is called.
Sorry I misread the code. You don't store the loader oop you store the
klass() - so this just records the type of the Loader rather than
identifying the actual instance. What do you do with these values - just
treat them as addresses that you print? (Same question if you store oops
- what can you do with an oop you can't reference?)
David
> /Staffan
>
>>
>> David
>>
>> On 1/03/2013 9:24 AM, Calvin Cheung wrote:
>>> This change is for adding the class load event tracing.
>>> The event will include the following fields:
>>> loaded class
>>> defining class loader
>>> initiating class loader
>>>
>>> webrev: http://cr.openjdk.java.net/~ccheung/8009174/webrev/
>>>
>>> thanks,
>>> Calvin
>
More information about the hotspot-dev
mailing list