RFR(M): 8026253: New type profiling points: sparc support
christian.thalinger at oracle.com
Thu Jan 9 12:36:11 PST 2014
! ciKlass* exact = profile_type(md, 0, md->byte_offset_of_slot(data, ret->type_offset()),
! ciKlass* exact = profile_type(md, md->byte_offset_of_slot(data, ret->type_offset()), 0,
What is this change?
+ // We're right after the type profile for the last
+ // argument. tmp is the number of cell left in the
+ // CallTypeData/VirtualCallTypeData to reach its end. Non null
+ // if there's a return to profile.
+ assert(ReturnTypeEntry::static_cell_count() < TypeStackSlotEntries::per_arg_count(), "can't move past ret type");
+ sll(tmp1, exact_log2(DataLayout::cell_size), tmp1);
+ add(ImethodDataPtr, tmp1, ImethodDataPtr);
I think “tmp” is referring to “tmp1” and “cell” should be plural, shouldn’t it?
Some comments are missing the final “.”.
Also, I didn’t verify the machine instructions in detail but a quick scan didn’t bring up anything obviously wrong. I guess you did some testing.
On Jan 9, 2014, at 12:35 AM, Roland Westrelin <roland.westrelin at oracle.com> wrote:
> The main difference with the x86 code is that on sparc, the current profile value is loaded, checked & updated and finally stored rather than checked & updated in place as is done on x86. As a consequence the code is somewhat simpler because concurrent updates to the profile are not possible.
More information about the hotspot-compiler-dev