Prepared by: | never on Thu Aug 13 14:17:22 PDT 2009 |
---|---|
Workspace: | /net/smite.sfbay/export/ws/dom |
Compare against: | ssh://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot |
Summary of changes: | 81 lines changed: 61 ins; 15 del; 5 mod; 2040 unchg |
Patch of changes: | 6795465.patch |
Author comments: |
The LIRGenerator::state_for call should always be made before any uses of bound registers since state_for may cause code emission. In this case the rtcall to lmul was emitted between the setup of the G register containing the type being allocated and it use in the alloc call. In the SS11 compilers the G register didn't happent to be killed so nothing went wrong but with the switch to SS12 it started to be killed. The fix is to move any state_for call above fixed register uses. Additionally the register allocator should have complained about this but wasn't because the G registers weren't marked as killed. Fixing that causes the bug to be detected by CTW runs. Tested with test case and runthese and ctw on sparc. |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/c1_Defs_sparc.hpp
2 lines changed: 0 ins; 0 del; 2 mod; 65 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/c1_FrameMap_sparc.cpp
4 lines changed: 4 ins; 0 del; 0 mod; 355 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
24 lines changed: 10 ins; 11 del; 3 mod; 1176 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/includeDB_compiler1
4 lines changed: 0 ins; 4 del; 0 mod; 444 unchg
------ ------ ------
------
---
New
Patch
Raw
test/compiler/6795465/Test6795465.java
47 lines changed: 47 ins; 0 del; 0 mod; 0 unchg
This code review page was prepared using /net/smite.sfbay/never/bin/webrev (vers 23.18-hg-never).