Code Review for 6663621

Prepared by: Thomas Rodriguez (never) on Thu Mar 20 09:58:33 PDT 2008
Workspace:/export/ws/hs12
Compare against: /net/jano2.sfbay/export2/hotspot/hg/hotspot-comp.clean
Summary of changes: 211 lines changed: 169 ins; 1 del; 41 mod; 1984 unchg
Patch of changes: 6663621.patch
Author comments:
6663621: JVM crashes while trying to execute api/java_security/Signature/SignatureTests.html#initSign tests.
Summary: alignment expression with secondary induction variables is sometimes wrong
Reviewed-by:

Superword uses the pre loop to align the index variable so that it can
use memory operations of larger alignment than the original. The
expression doesn't work correctly when the primary induction variable
strides in a different direction than the secondary induction used in
the memory access. This is actually broken on all platforms but sparc
64-bit was the only one which faulted on the access. The other
platforms were silently fixing up the memory operation resulting in
reduced performance. For some examples it was 30x slower after
vectorization because of this.

The fix is to derive and emit the correct limit expression for these
cases. They are simply slight variations on the existing expressions,
differing only in the sign of an operation. I also took the
opportunity the expand the comments describing the expressions and to
make the comments and source use similar naming based on a lot of
feedback from Chuck.

Bug id: 6663621: JVM crashes while trying to execute api/java_security/Signature/SignatureTests.html#initSign tests.
Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/superword.cpp

95 lines changed: 53 ins; 1 del; 41 mod; 1984 unchg

------ ------ ------ ------ --- New Patch Raw test/compiler/6663621/IVTest.java

116 lines changed: 116 ins; 0 del; 0 mod; 0 unchg

This code review page was prepared using /net/smite.sfbay/never/bin/hgwebrev (vers 23.12-hg-never).