RFR (S) 8231410: Shenandoah: clone barrier should use base pointer

Roman Kennke rkennke at redhat.com
Wed Sep 25 14:57:58 UTC 2019


>> I guess it's more about not touching headers. Ultimately it's a little bit of overkill, but I am
>> suspicious of clone() because I noticed some benchmarks make heavy use of it. The runtime is only
>> touched on >32 or unknown numbers of fields though. Anyhow, I think it doesn't hurt to touch less
>> memory while copying, especially because the compiled setup-code computes all those interior
>> pointers and counts for us already anyway.
>>
>> I removed printing, fixed the signatures and also added include for copy.hpp:
>>
>> http://cr.openjdk.java.net/~rkennke/JDK-8231410/webrev.04/
> 
> I missed this the last time around: are we good with having jlong* in the signatures? That seems to
> be the implementation detail for the actual copy. We are passing the addresses there, and even
> though they should be aligned to 8, they are not necessarily jlong*-s. It seems the older way of
> passing oopDesc* is just as good?

I change the signatures to take void*, and cast to jlong* before calling 
the copy routine:

http://cr.openjdk.java.net/~rkennke/JDK-8231410/webrev.05/

Still passing all tests 64/32 bit.

Ok now?




More information about the shenandoah-dev mailing list