Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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;
}
Beispiel #4
0
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("} ");
}