Code Review for 6795465

Prepared by:never on Thu Aug 13 14:17:22 PDT 2009
Compare against: ssh://
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/

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