Short/Character.reverseBytes intrinsics

Hiroshi Yamauchi yamauchi at google.com
Thu Apr 22 15:22:26 PDT 2010


Thanks, Tom. It looks good to me.

> This is Hiroshi's patch for reverseShort and reverseChar intrinsics.
> I've redone the sparc implementation and fixed bugs in the original
> implementation as well.  The existing versions were broken with
> implicit null checking since implicit null checks assume that the
> faulting load is the first instruction in the node but because of the
> way the memory was being handled it wasn't.  The first instruction was
> actually an add so if an implicit null happened the JVM would die.
> The new code restricts these forms to use reg+reg addressing only so
> any address math is handled automatically.  Tested with new test case

I must have overlooked the '+2' offset in the stackSlotI (in
bytes_reverse_unsigned_short/bytes_reverse_short.)

I'm just curious but I'm not sure who emits the add instruction. One
instruction that can be emitted before the load instruction (and that
I can see) is:

949     emit3_simm13( cbuf, Assembler::arith_op, index,
Assembler::or_op3, 0, disp);

emitted by the now-removed emit_form3_mem_reg_asi(). But it's an or,
not an add. There may be some code emission that I don't see.

Hiroshi


More information about the hotspot-compiler-dev mailing list