I just stumbled across this code in disassembler.cpp:
if (_nm != NULL
&& (obj = _nm->embeddedOop_at(cur_insn())) != NULL
&& (address) obj == adr
&& Universe::heap()->is_in(obj)
&& Universe::heap()->is_in(obj->klass())) {
julong c = st->count();
obj->print_value_on(st);
Since the klass of an object is never located in the heap since perm gen is gone this if statement is always false.
The code should probably be enhanced to add support for printing Klass* found in the code as well, since they are non-moving it should be fairly safe to extract them from the relocation data.
if (_nm != NULL
&& (obj = _nm->embeddedOop_at(cur_insn())) != NULL
&& (address) obj == adr
&& Universe::heap()->is_in(obj)
&& Universe::heap()->is_in(obj->klass())) {
julong c = st->count();
obj->print_value_on(st);
Since the klass of an object is never located in the heap since perm gen is gone this if statement is always false.
The code should probably be enhanced to add support for printing Klass* found in the code as well, since they are non-moving it should be fairly safe to extract them from the relocation data.
- relates to
-
JDK-8071654 disassembler handles embedded OOPs not uniformly
-
- Resolved
-