| 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).