review (S) for 6777083: assert(target != __null,"must not be null")

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Apr 4 17:17:32 PDT 2011


The fix looks good. Do you know why we use ExternalAddress for byte_map_base on 
x86? On sparc it is just constant value (address).

Vladimir

Tom Rodriguez wrote:
> http://cr.openjdk.java.net/~never/6777083
> 
> 6777083: assert(target != __null,"must not be null")
> Reviewed-by:
> 
> ExternalAddress is often used to generate code for references to the
> byte_map_base of the card table.  Depending on the address layout we
> get byte_map_base may be a real address looking value or sometimes it
> maybe a small number or even zero.  This causes
> external_word_relocation to assert because the encoding it uses
> assumes that the adress isn't within the first page.  This has been
> patched up at each use site in the past but keeps recurring as new
> code gets written.  To fix this I've modified ExternalAddress to drop
> the reloc in the case where it's not encodable.  It's almost
> impossible to force a layout where byte_map_base is a small number but
> injecting a small number into it indicates that the assembly code
> generation works correcty after the change.
> 


More information about the hotspot-compiler-dev mailing list