Prepared by: | twisti on Fri Oct 5 11:54:21 PDT 2012 |
---|---|
Workspace: | /home/twisti/8000263 |
Compare against: | /home/twisti/hotspot |
Summary of changes: | 210 lines changed: 39 ins; 74 del; 97 mod; 16048 unchg |
Patch of changes: | 8000263.patch |
Author comments: |
8000263: JSR 292: signature types may appear to be unloaded Reviewed-by: The problem is in the intrinsification code for Unsafe.getObject. Usually field accesses with get/putfield resolve the field when parsing the bytecode. ciBytecodeStream::get_field calls ciField::will_link which puts class loader constraints for the signature types in place. In LibraryCallKit::inline_unsafe_access we create a ciField object for the field we are accessing but with the ciField's type left uninitialized. When calling ciField::type we try to look up the field type lazily which fails because we never resolved the field and put class loader constraints in place. There are two ways to fix it. The first one is two return java/lang/Object as field type if the computed type is unloaded. The second fix is to turn on LinkWellKnowClasses by default. LinkWellKnownClasses only works if the field type is java/lang/Object, for user types we need to other fix. The change also renames the WK_KLASSES_DO macro argument template with do_klass because template is a reserved keyword in C++. |
Bug id: | Bug Database |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/methodHandles_sparc.cpp
24 lines changed: 0 ins; 23 del; 1 mod; 587 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/methodHandles_sparc.hpp
2 lines changed: 0 ins; 2 del; 0 mod; 60 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/methodHandles_x86.cpp
27 lines changed: 0 ins; 26 del; 1 mod; 620 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/methodHandles_x86.hpp
2 lines changed: 0 ins; 2 del; 0 mod; 61 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/systemDictionary.cpp
17 lines changed: 15 ins; 0 del; 2 mod; 2922 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/systemDictionary.hpp
90 lines changed: 2 ins; 0 del; 88 mod; 610 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/vmSymbols.cpp
18 lines changed: 0 ins; 18 del; 0 mod; 545 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/vmSymbols.hpp
3 lines changed: 0 ins; 3 del; 0 mod; 1149 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/library_call.cpp
5 lines changed: 2 ins; 0 del; 3 mod; 5610 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandles.hpp
21 lines changed: 20 ins; 0 del; 1 mod; 212 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/globals.hpp
1 line changed: 0 ins; 0 del; 1 mod; 3672 unchg
This code review page was prepared using /home/twisti/bin/webrev (vers 23.18-hg-twisti).