[9] RFR (S): 8059340: ConstantPool::_resolved_references is missing in heap dump (original) (raw)
Vladimir Ivanov vladimir.x.ivanov at oracle.com
Thu Apr 16 18:12:58 UTC 2015
- Previous message: RFR: 8073093: AARCH64: C2 generates poor code for ByteBuffer accesses
- Next message: [9] RFR (S): 8059340: ConstantPool::_resolved_references is missing in heap dump
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
(sorry for really late response; just got enough time to return to the bug)
Coleen, Staffan,
Thanks a lot for the feedback!
After thinking about the fix more, I don't think that using reserved oop slot in CLASS DUMP for recording _resolved_references is the best thing to do. IMO the change causes too much work for the users (heap dump analysis tools).
It needs specification update and then heap dump analyzers should be updated as well.
I have 2 alternative approaches (hacky and not-so-hacky :-)):
- artificial class static field in the dump (""
optional id to guarantee unique name);
- add j.l.Class::_resolved_references field; Not sure how much overhead (mostly reads from bytecode) the move
from ConstantPool to j.l.Class adds, so I propose just to duplicate it for now.
What do you think about that?
Best regards, Vladimir Ivanov
On 10/6/14 11:35 AM, Staffan Larsen wrote:
This looks like a good approach. However, there are a couple of more places that need to be updated.
The hprof binary format is described in jdk/src/jdk.hprof.agent/share/native/libhprof/manual.html and needs to be updated. It’s also more formally specified in hprofbspec.h in the same directory. The hprof JVMTI agent in jdk/src/jdk.hprof.agent code would also need to be updated to show this field. Since this is a JVMTI agent it needs to be possible to find the resolvedrefrences array via the JVMTI heap walking API. Perhaps that already works? - I haven’t looked. Finally, the Serviceability Agent implements yet another hprof binary dumper in hotspot/agent//src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java which also needs to write this reference. Thanks, /Staffan On 29 sep 2014, at 16:51, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
http://cr.openjdk.java.net/~vlivanov/8059340/webrev.00/ https://bugs.openjdk.java.net/browse/JDK-8059340
VM heap dump doesn't contain ConstantPool::resolvedreferences for classes which have resolved references. ConstantPool::resolvedreferences points to an Object[] holding resolved constant pool entries (patches for VM anonymous classes, linked CallSite & MethodType for invokedynamic instructions). I've decided to use reserved slot in HPROF class header format. It requires an update in jhat to correctly display new info. The other approach I tried was to dump the reference as a fake static field [1], but storing VM internal ConstantPool::resolvedreferences among user defined fields looks confusing. Testing: manual (verified that corresponding arrays are properly linked in Nashorn heap dump). Thanks! Best regards, Vladimir Ivanov [1] http://cr.openjdk.java.net/~vlivanov/8059340/static
- Previous message: RFR: 8073093: AARCH64: C2 generates poor code for ByteBuffer accesses
- Next message: [9] RFR (S): 8059340: ConstantPool::_resolved_references is missing in heap dump
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]