Sun, 08 May 2016 22:17:54 -0400
[C2] disjoint_byte_copy: fix unaligned LW/SW
/mnt/j2sdk-image/bin/java \
-XX:+PrintCompilation \
-XX:CompileCommand="compileonly,java/util/jar/Manifest\$FastInputStream.*" \
-jar SPECjvm2008.jar -ikv -coe -ict -bt 1 \
compress
It triggers 35000 unaligned instructions.
280 CALL_LEAF_NOFP,runtime jbyte_arraycopy
a0: (-122610748, .) fc127a6b pc: ffe9809004 <-- src是个奇地址
a1: (-122610748, .) fc128100 pc: ffe980910c <-- dest是个偶地址
a2: (-122610748, .) 2b pc: ffe9809210
t3: (-122610748, .) fc127a6c pc: ffe98093a4 <-- 试图把src对齐4字节,
t0: (-122610748, .) fc128101 pc: ffe98094a8 <-- 则dest就不对齐了,使用sw就出了unalign
t3: (-122610747, *) fc127a70 pc: ffe98093a4
t0: (-122610747, .) fc128105 pc: ffe98094a8 <-- 后面所有对dest的访问都会unalign
t3: (-122610746, *) fc127a74 pc: ffe98093a4
t0: (-122610746, .) fc128109 pc: ffe98094a8
Effect:
* 0 unaligned instructions.
aoqi@0 | 1 | README: |
aoqi@0 | 2 | This file should be located at the top of the hotspot Mercurial repository. |
aoqi@0 | 3 | |
aoqi@0 | 4 | See http://openjdk.java.net/ for more information about the OpenJDK. |
aoqi@0 | 5 | |
aoqi@0 | 6 | See ../README-builds.html for complete details on build machine requirements. |
aoqi@0 | 7 | |
aoqi@0 | 8 | Simple Build Instructions: |
aoqi@0 | 9 | |
aoqi@0 | 10 | cd make && gnumake |
aoqi@0 | 11 | |
aoqi@0 | 12 | The files that will be imported into the jdk build will be in the "build" |
aoqi@0 | 13 | directory. |
aoqi@0 | 14 |