Enable optimization of arraycopy as loads/stores with Shenandoah

Roman Kennke rkennke at redhat.com
Thu Dec 8 16:08:04 UTC 2016


Am Donnerstag, den 08.12.2016, 16:55 +0100 schrieb Roland Westrelin:
> > This removes the call to SharedRuntime::shenandoah_clone_barrier().
> 
> It doesn't remove it. It moves it around. It's now only added to
> those
> clones that were not converted to loads/stores. Clone when it's not
> converted to loads/stores uses bulk copies. So it's not obvious to me
> that we can do better than using the
> SharedRuntime::shenandoah_clone_barrier() call.

Now that you say it, I wonder what's done for other GCs. They must be
doing something here, to update the card tables. Other arraycopy
routines call a special barrier in
BarrierSet::static_write_ref_array_post(), this is not suitable for
clones, but do they call any barrier for clone too? Or can other GCs
ignore it because it's basically initializing stores?

Roman


More information about the shenandoah-dev mailing list