RFR (S): JDK-6991197 G1: specialize deal_with_reference() for narrowOop* (original) (raw)
Thomas Schatzl thomas.schatzl at oracle.com
Thu Jan 30 11:46:07 UTC 2014
- Previous message (by thread): RFR (S): JDK-6991197 G1: specialize deal_with_reference() for narrowOop*
- Next message (by thread): RFR (S): JDK-6991197 G1: specialize deal_with_reference() for narrowOop*
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Tony,
thanks for the review :)
On Wed, 2014-01-29 at 15:34 -0500, Tony Printezis wrote:
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 clearpartialarraymask() a template given that it should only work on oops*'s? (correct?)
Cannot do that right away, since the compiler always instantiates G1ParScanPartialArrayClosure::do_oop_nv() with both narrowOop and oop*. It does not detect at parse time that has_partial_array_mask() always returns false for narrowOop*.
Then, why is G1ParScanPartialArrayClosure::dooopnv(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 dealwithreference()?
I am currently working on JDK-8027547 to change the array chunk iteration code to something like you suggest. Is it okay for you to defer these cleanup changes for that CR (or another CR)?
Thanks for the information, Thomas
- Previous message (by thread): RFR (S): JDK-6991197 G1: specialize deal_with_reference() for narrowOop*
- Next message (by thread): RFR (S): JDK-6991197 G1: specialize deal_with_reference() for narrowOop*
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]