Hi, Please review the following (critical) bug fix that ensures (4 bytes) aligned memory accesses (Unsafe) in MarlinCache:
bug: https://bugs.openjdk.java.net/browse/JDK-8144828 webrev: http://cr.openjdk.java.net/~lbourges/marlin/marlin-8144828.0/ Changes: - added MarlinConst.doCheckUnsafe (false by default) to manually check addresses - MarlinCache: align needed bytes in copyAARowNoRLE() as the same off-heap block is also used by copyAARowRLE_WithBlockFlags() which store RLE entries as integer: + // determine need array size:+ // for RLE encoding, position must be aligned to 4 bytes (int):+ // align - 1 = 3 so add +3 and round-off by mask ~3 = -4+ final long needSize = pos + ((px_bbox1 - px0 + 3) & -4); I did not tested on the sparc platform as I do not have one ! But it tested the patch on my linux 64 (intel). Best regards, Laurent