Code Review for 6939930

Prepared by:never on Thu Apr 8 09:46:38 PDT 2010
Workspace:/net/smite.sfbay/export/ws/sync
Compare against: /net/smite.sfbay/export/ws/baseline
Summary of changes: 259 lines changed: 159 ins; 58 del; 42 mod; 27570 unchg
Patch of changes: 6939930.patch
Author comments:
6939930: exception unwind changes in 6919934 hurts compilation speed
Reviewed-by:

The fix 6919934 created a synthetic handler that was used to unwind
the frame during exception dispatch but the addition of this handler
slowed down compilation significantly. Additionally it increased the
size of the nmethod by about 15% because of the extra exception
handler entries. This change moves all the unwind logic down into the
assembler and adds a field in the nmethod which points at the unwind
handler. This removes both the speed and space penalty. The new
assembly unwind code is slightly tighter than what we used to emit. I
also simplified the unwind LIR op slightly and separated it out. It
also dispatches directly to the new unwind handler instead of
performing the unwind itself.

Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/asm/codeBuffer.hpp

2 lines changed: 2 ins; 0 del; 0 mod; 545 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_Compilation.cpp

4 lines changed: 4 ins; 0 del; 0 mod; 536 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_GraphBuilder.cpp

32 lines changed: 0 ins; 30 del; 2 mod; 3789 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_Instruction.hpp

5 lines changed: 0 ins; 1 del; 4 mod; 2292 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_LIR.cpp

13 lines changed: 11 ins; 1 del; 1 mod; 1896 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_LIR.hpp

8 lines changed: 5 ins; 1 del; 2 mod; 2149 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_LIRAssembler.cpp

4 lines changed: 3 ins; 0 del; 1 mod; 807 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_LIRAssembler.hpp

5 lines changed: 4 ins; 0 del; 1 mod; 238 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_LIRGenerator.cpp

20 lines changed: 0 ins; 18 del; 2 mod; 2728 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/code/nmethod.cpp

2 lines changed: 2 ins; 0 del; 0 mod; 2684 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/code/nmethod.hpp

4 lines changed: 4 ins; 0 del; 0 mod; 675 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/runtime/sharedRuntime.cpp

7 lines changed: 7 ins; 0 del; 0 mod; 2653 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp

72 lines changed: 56 ins; 0 del; 16 mod; 3136 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/c1_LIRAssembler_x86.cpp

81 lines changed: 61 ins; 7 del; 13 mod; 3442 unchg

This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).