Code Review for 8026328

Prepared by:twisti on Tue Oct 22 15:05:08 PDT 2013
Workspace:/Users/twisti/ws/8026328
Compare against: ssh://hg.openjdk.java.net/hsx/hotspot-comp-gate/hotspot
Summary of changes: 195 lines changed: 66 ins; 56 del; 73 mod; 27361 unchg
Patch of changes: 8026328.patch
Author comments:
8026328: Setting a breakpoint on invokedynamic crashes the JVM
Reviewed-by:

Well-known invoke instructions have a 2-byte index but invokedynamic has a 4-byte index. In return entries we check the bytecode instruction to decide which size the index has.

The problem is that if there is a breakpoint there is no way to know what index size the instruction has because the original instruction byte was replaced with the breakpoint byte.

There are a couple of ways to fix this but the proper way (in my opinion) is to have separate return entries for the different classes of invoke instructions. This on one hand generates more return entries but on the other hand makes them smaller and simpler.

Bug id: 8026328
Legend: Modified file
Deleted file
New file

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

1 line changed: 0 ins; 0 del; 1 mod; 2303 unchg

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

31 lines changed: 2 ins; 19 del; 10 mod; 2074 unchg

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

5 lines changed: 0 ins; 2 del; 3 mod; 3773 unchg

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

1 line changed: 0 ins; 0 del; 1 mod; 2453 unchg

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

26 lines changed: 0 ins; 12 del; 14 mod; 2079 unchg

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

21 lines changed: 0 ins; 12 del; 9 mod; 2117 unchg

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

3 lines changed: 0 ins; 2 del; 1 mod; 3684 unchg

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

3 lines changed: 0 ins; 2 del; 1 mod; 3760 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/cpu/zero/vm/cppInterpreter_zero.cpp

1 line changed: 0 ins; 0 del; 1 mod; 1055 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/interpreter/abstractInterpreter.hpp

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

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/interpreter/cppInterpreter.hpp

1 line changed: 0 ins; 0 del; 1 mod; 104 unchg

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

12 lines changed: 6 ins; 0 del; 6 mod; 484 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/interpreter/templateInterpreter.cpp

71 lines changed: 51 ins; 7 del; 13 mod; 607 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/interpreter/templateInterpreter.hpp

11 lines changed: 4 ins; 0 del; 7 mod; 200 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/interpreter/templateInterpreterGenerator.hpp

1 line changed: 0 ins; 0 del; 1 mod; 109 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/oops/method.cpp

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

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

1 line changed: 0 ins; 0 del; 1 mod; 225 unchg

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