src/hotspot/share/ci/ciInstanceKlass.cpp
changeset 52784 621efe32eb0b
parent 52424 e3d79743f57d
child 52907 7cc17c043ce0
equal deleted inserted replaced
52783:5827f12ecbf0 52784:621efe32eb0b
    55   InstanceKlass* ik = get_instanceKlass();
    55   InstanceKlass* ik = get_instanceKlass();
    56 
    56 
    57   AccessFlags access_flags = ik->access_flags();
    57   AccessFlags access_flags = ik->access_flags();
    58   _flags = ciFlags(access_flags);
    58   _flags = ciFlags(access_flags);
    59   _has_finalizer = access_flags.has_finalizer();
    59   _has_finalizer = access_flags.has_finalizer();
    60   _has_subklass = ik->subklass() != NULL;
    60   _has_subklass = flags().is_final() ? subklass_false : subklass_unknown;
    61   _init_state = ik->init_state();
    61   _init_state = ik->init_state();
    62   _nonstatic_field_size = ik->nonstatic_field_size();
    62   _nonstatic_field_size = ik->nonstatic_field_size();
    63   _has_nonstatic_fields = ik->has_nonstatic_fields();
    63   _has_nonstatic_fields = ik->has_nonstatic_fields();
    64   _has_nonstatic_concrete_methods = ik->has_nonstatic_concrete_methods();
    64   _has_nonstatic_concrete_methods = ik->has_nonstatic_concrete_methods();
    65   _is_unsafe_anonymous = ik->is_unsafe_anonymous();
    65   _is_unsafe_anonymous = ik->is_unsafe_anonymous();
   145 // ------------------------------------------------------------------
   145 // ------------------------------------------------------------------
   146 // ciInstanceKlass::compute_shared_has_subklass
   146 // ciInstanceKlass::compute_shared_has_subklass
   147 bool ciInstanceKlass::compute_shared_has_subklass() {
   147 bool ciInstanceKlass::compute_shared_has_subklass() {
   148   GUARDED_VM_ENTRY(
   148   GUARDED_VM_ENTRY(
   149     InstanceKlass* ik = get_instanceKlass();
   149     InstanceKlass* ik = get_instanceKlass();
   150     _has_subklass = ik->subklass() != NULL;
   150     _has_subklass = ik->subklass() != NULL ? subklass_true : subklass_false;
   151     return _has_subklass;
   151     return _has_subklass == subklass_true;
   152   )
   152   )
   153 }
   153 }
   154 
   154 
   155 // ------------------------------------------------------------------
   155 // ------------------------------------------------------------------
   156 // ciInstanceKlass::loader
   156 // ciInstanceKlass::loader
   581 bool ciInstanceKlass::is_leaf_type() {
   581 bool ciInstanceKlass::is_leaf_type() {
   582   assert(is_loaded(), "must be loaded");
   582   assert(is_loaded(), "must be loaded");
   583   if (is_shared()) {
   583   if (is_shared()) {
   584     return is_final();  // approximately correct
   584     return is_final();  // approximately correct
   585   } else {
   585   } else {
   586     return !_has_subklass && (nof_implementors() == 0);
   586     return !has_subklass() && (nof_implementors() == 0);
   587   }
   587   }
   588 }
   588 }
   589 
   589 
   590 // ------------------------------------------------------------------
   590 // ------------------------------------------------------------------
   591 // ciInstanceKlass::implementor
   591 // ciInstanceKlass::implementor