void proxyMap::print(oop obj) { if (obj->is_map()) { lprintf("proxy "); } else { if (proxyOop(obj)->is_live()) { lprintf("proxy(live) "); } else { lprintf("proxy(dead) "); } if (WizardMode) lprintf("ptr = %#lx, type_seal = %#lx ", proxyOop(obj)->get_pointer(), proxyOop(obj)->get_type_seal()); } slotsMap::print(obj); }
void vframeMap::print(oop obj) { ResourceMark rm; lprintf("vframe "); if (WizardMode && !obj->is_map()) { vframeOop vfo = vframeOop(obj); if (vfo->is_live()) { abstract_vframe* vf = vfo->as_vframe(); const char* sel = vf->selector() ? stringOop(vf->selector())->copy_null_terminated() : "..."; lprintf("(%s / %#lx %#lx) ", sel, vfo->fr(), vfo->locals()); } else { lprintf("(DEAD)"); } } slotsMapDeps::print(obj); }
oop graph_creator::oop_from_map(oop m) { assert( m->is_map(), "Expecting a map"); mapOop mo = (mapOop) m; Map* map = mo->map_addr(); if (map->is_smi() || map->is_float()) return map->dummy_obj(_unknown_oop); assert(map->is_slots() || map->is_block(), "expected to be slots"); // A hash table would help speedup this search. oop obj = graph_maps->find(mo); if (obj) return obj; // Create an object based on the map. obj = map->dummy_obj(_unknown_oop); if (!graph_maps->insertIfAbsent(mo, obj)) { graph_maps->update(mo, obj); } return obj; }
void objVectorMap::print_objVector(oop obj) { lprintf("object array: {"); if (obj->is_map()) { lprintf("..."); } else { bool first = true; oop* p = obj_array(obj); oop* end = p + length_obj_array(obj); oop* end2 = p + VectorPrintLimit < end ? p + VectorPrintLimit : end; for (; p < end2; p ++) { if (first) first = false; else lprintf(", "); (*p)->print_oop(); } if (end != end2) { lprintf(", ... (%d more elements) ", end - end2); } } lprintf("} "); }