RFR: Refactor asm acmp

Roman Kennke rkennke at redhat.com
Tue Jul 18 14:18:04 UTC 2017


This bugs me since a while. Wherever we do compare objects in assembly
code (i.e. interpreter and C1), we use to write something like:

__ cmpptr(o1, o2)

oopDesc::bs()->asm_acmp_barrier(o1, o2)


where the asm_acmp_barrier() would *expect* to be preceded by cmpptr,
and pick up its condition flags, etc, and produce the same condition flags.

It all seems brittle and not very obvious.

I propose to change that to:

__ cmp_objects(o1, o2);

and call the acmp barrier from there. This makes consuming code much
more obvious, and the call to the barrier set more contained.

http://cr.openjdk.java.net/~rkennke/refactor-acmp/webrev.00/
<http://cr.openjdk.java.net/%7Erkennke/refactor-acmp/webrev.00/>

Testing: hotspot_gc_shenandoah

Ok?



More information about the shenandoah-dev mailing list