[aarch64-port-dev ] RFR: Add support for G1GC

Andrew Haley aph at redhat.com
Mon Mar 24 18:33:30 UTC 2014


On 03/24/2014 04:48 PM, Edward Nevill wrote:
> I have made the following changes.
> 
> - Use adrp(... cardtable, offset) instead of mov.
> 
> In order for this to work I had to add a new relocation to pd_patch_instruction to patch the sequence
> 
> 	adrp	Rx, cardtable, offset
> 	add	Ry, Ry, Rx
> 	ldrb	Rz, Address(Ry, offset)
> 
> - Save R18 and rework the register usage
> 
> I have reworked the register usage in C1 so we do not need to save R0/R1 in the common case and only need to save registers at all around a call to g1_wb_post or g1_wb_pre.
> 
> - Utilise the fact that dirty_card_val() == 0
> 
> Optimise by using cmpzw and cbz where appropriate in both c1 and template interpreter
> 
> assert added to check that dirty_card_val() is in fact 0.
> 
> - Merged several instruction pairs to use 1 instruction instead of 2.
> 
> Revised patch below.

OK, thanks.

Andrew.



More information about the aarch64-port-dev mailing list