equal
deleted
inserted
replaced
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 |