Esempio n. 1
0
void ClassInfo::iterate(OopVisitor* visitor) {
#if USE_OOP_VISITOR
  Oop::iterate(visitor);

  {
    NamedField id("object_size", true);
    visitor->do_ushort(&id, object_size_offset(), true);
  }

  {
    NamedField id("vtable_length", true);
    visitor->do_ushort(&id, vtable_length_offset(), true);
  }

  {
    NamedField id("itable_length", true);
    visitor->do_ushort(&id, itable_length_offset(), true);
  }

  {
    NamedField id("class_id", true);
    visitor->do_ushort(&id, class_id_offset(), true);
  }

  {
    NamedField id("name", true);
    visitor->do_oop(&id, name_offset(), true);
  }

  {
    char buff[1024];
    access_flags().print_to_buffer(buff, AccessFlags::CLASS_FLAGS);
    visitor->do_comment(buff);
    NamedField id("access_flags", true);
    id.set_hex_output(true);
    visitor->do_uint(&id, access_flags_offset(), true);
  }

  if (is_array()) {
    {
      NamedField id("type", true);
      visitor->do_int(&id, type_offset(), true);
    }
    { 
      NamedField id("scale", true);
      visitor->do_int(&id, scale_offset(), true);
    }
  } else {
    {
      NamedField id("methods", true);
      visitor->do_oop(&id, methods_offset(), true);
    }
    {
      NamedField id("fields", true);
      visitor->do_oop(&id, fields_offset(), true);
    }
    {
      NamedField id("local_interfaces", true);
      visitor->do_oop(&id, local_interfaces_offset(), true);
    }
#if ENABLE_REFLECTION
    {
      NamedField id("inner_classes", true);
      visitor->do_oop(&id, inner_classes_offset(), true);
    }
#endif
    {
      NamedField id("constants", true);
      visitor->do_oop(&id, constants_offset(), true);
    }
  }

  iterate_tables(visitor);
#endif
}
Esempio n. 2
0
 void set_object_size(jint value) {
   int_field_put(object_size_offset(), value);
 }
Esempio n. 3
0
 // used by romizer
 int itable_end_offset() const {
   return ushort_field(object_size_offset());
 }
Esempio n. 4
0
 int object_size() {
   return int_field(object_size_offset());
 }