RFR (S): JDK-6991197 G1: specialize deal_with_reference() for narrowOop*

Tony Printezis tprintezis at twitter.com
Wed Jan 29 20:34:36 UTC 2014


Thomas,

(if you need one more opinion) The latest webrev also looks good to me 
and I found it a nice improvement over the first one.

Can I take it a step (OK: two steps!) further, if you're interested (and 
feel free to ignore this)?

Why is clear_partial_array_mask() a template given that it should only 
work on oops*'s? (correct?)

Then, why is G1ParScanPartialArrayClosure::do_oop_nv(T* p) a template 
too (should only be called for T == oop). In fact, why is it a closure 
at all? Would it make sense to just move its body to a method with an 
oop* parameter and just call it directly from deal_with_reference()?

Tony

On 1/29/14, 3:50 AM, Thomas Schatzl wrote:
> Hi all,
>
> On Tue, 2014-01-28 at 10:29 +0100, Bengt Rutisson wrote:
>> Hi Thomas,
>>
>> The new webrev looks much better. I like that solution.
>>
>> Can we do something similar with set_partial_array_mask()? It would be
>> good if that one could not be called with a narrowOop. Maybe this works?
>>
> New webrev at
> http://cr.openjdk.java.net/~tschatzl/6991197/webrev.2/
>
> The "fix" is to simply to only implement set_partial_array_mask() for
> regular oops. The compiler will automatically complain if somebody tries
> to use it with narrowOops then.
>
> Thanks a lot,
>    Thomas
>
>

-- 
Tony Printezis | JVM/GC Engineer / VM Team | Twitter

@TonyPrintezis
tprintezis at twitter.com




More information about the hotspot-gc-dev mailing list