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