Exemple #1
0
void InstanceClass::initialize(JVM_SINGLE_ARG_TRAPS) {
  JavaClassObj::Raw mirror = java_mirror();
  if (mirror().is_initialized()) {
    return;
  }
  initialize_internal(Thread::current(), &mirror JVM_CHECK);
}
Exemple #2
0
void InstanceClass::set_verified() {
  ClassInfo::Raw info = class_info();
  info().set_is_verified();
#if !ENABLE_ISOLATES
  JavaClassObj::Raw mirror = java_mirror();
  mirror().set_verified();
#endif
}
Exemple #3
0
bool InstanceClass::is_verified() {
  ClassInfo::Raw info = class_info();
  bool result = info().is_verified();

#if !ENABLE_ISOLATES && defined(AZZERT)
  // Verify that the flag in ClassInfo is in-sync with the mirror object 
  JavaClassObj::Raw mirror = java_mirror();
  GUARANTEE(mirror().is_verified() == result, "sanity");
#endif

  return result;
}
// ------------------------------------------------------------------
// ciInstanceKlass::ciInstanceKlass
//
// Loaded instance klass.
ciInstanceKlass::ciInstanceKlass(KlassHandle h_k) : ciKlass(h_k) {
  assert(get_Klass()->oop_is_instance(), "wrong type");
  instanceKlass* ik = get_instanceKlass();

  AccessFlags access_flags = ik->access_flags();
  _flags = ciFlags(access_flags);
  _has_finalizer = access_flags.has_finalizer();
  _has_subklass = ik->subklass() != NULL;
  _is_initialized = ik->is_initialized();
  _is_being_initialized = ik->is_being_initialized();
  _size_helper = ik->size_helper();
  _nonstatic_field_size = ik->nonstatic_field_size();

  _checked_implementor = false;
  _implementor = NULL;

  Thread *thread = Thread::current();
  if (ciObjectFactory::shared_is_initialized()) {
    _loader = JNIHandles::make_local(thread, ik->class_loader());
    _protection_domain = JNIHandles::make_local(thread,
                                                ik->protection_domain());
    _is_shared = false;
  } else {
    Handle h_loader(thread, ik->class_loader());
    Handle h_protection_domain(thread, ik->protection_domain());
    _loader = JNIHandles::make_global(h_loader, false);
    _protection_domain = JNIHandles::make_global(h_protection_domain, false);
    _is_shared = true;
  }
  
  // Lazy fields get filled in only upon request.
  _super  = NULL;
  _java_mirror = NULL;

  if (_is_shared) {
    if (h_k() != SystemDictionary::object_klass()) {
      super();
    }
    java_mirror();
  }

  _field_cache = NULL;
}
Exemple #5
0
bool InstanceClass::is_initialized() {
  JavaClassObj::Raw mirror = java_mirror();
  return mirror().is_initialized();
}
Exemple #6
0
void InstanceClass::set_initialized() {
  JavaClassObj::Raw mirror = java_mirror();
  mirror().set_initialized();
}