提交 51e615b0 编写于 作者: A acorn

6879572: SA fails _is_marked_dependent not found

Reviewed-by: kamg, dcubed
上级 905c9733
......@@ -3211,9 +3211,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name,
// Fill in information already parsed
this_klass->set_access_flags(access_flags);
if (verify) {
this_klass->set_should_verify_class();
}
this_klass->set_should_verify_class(verify);
jint lh = Klass::instance_layout_helper(instance_size, false);
this_klass->set_layout_helper(lh);
assert(this_klass->oop_is_instance(), "layout is correct");
......@@ -3222,9 +3220,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name,
//this_klass->set_super(super_klass());
this_klass->set_class_loader(class_loader());
this_klass->set_nonstatic_field_size(nonstatic_field_size);
if (has_nonstatic_fields) {
this_klass->set_has_nonstatic_fields();
}
this_klass->set_has_nonstatic_fields(has_nonstatic_fields);
this_klass->set_static_oop_field_size(fac.static_oop_count);
cp->set_pool_holder(this_klass());
this_klass->set_constants(cp());
......
......@@ -1464,7 +1464,7 @@ void DepChange::initialize() {
for (ContextStream str(*this); str.next(); ) {
klassOop d = str.klass();
assert(!instanceKlass::cast(d)->is_marked_dependent(), "checking");
instanceKlass::cast(d)->set_is_marked_dependent();
instanceKlass::cast(d)->set_is_marked_dependent(true);
}
}
......@@ -1473,7 +1473,7 @@ DepChange::~DepChange() {
// Unmark transitive interfaces
for (ContextStream str(*this); str.next(); ) {
klassOop d = str.klass();
instanceKlass::cast(d)->clear_is_marked_dependent();
instanceKlass::cast(d)->set_is_marked_dependent(false);
}
}
......
......@@ -136,15 +136,6 @@ class instanceKlass: public Klass {
initialization_error // error happened during initialization
};
// smaller footprint for boolean flags
enum ClassFlags {
_noflags = 0, // initial value
_rewritten = 0x00000001U, // rewritten
_should_verify = 0x00000002U, // defineClass specified conditional verification
_has_nonstatic_fields = 0x00000004U, // for sizing with UseCompressedOops
_is_marked_dependent = 0x00000008U // used for marking during flushing and deoptimization
};
public:
oop* oop_block_beg() const { return adr_array_klasses(); }
oop* oop_block_end() const { return adr_methods_default_annotations() + 1; }
......@@ -223,7 +214,10 @@ class instanceKlass: public Klass {
int _static_field_size; // number words used by static fields (oop and non-oop) in this klass
int _static_oop_field_size;// number of static oop fields in this klass
int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks
int _class_flags; // internal class state flags
bool _is_marked_dependent; // used for marking during flushing and deoptimization
bool _rewritten; // methods rewritten.
bool _has_nonstatic_fields; // for sizing with UseCompressedOops
bool _should_verify_class; // allow caching of preverification
u2 _minor_version; // minor version number of class file
u2 _major_version; // major version number of class file
ClassState _init_state; // state of class
......@@ -259,8 +253,8 @@ class instanceKlass: public Klass {
friend class SystemDictionary;
public:
bool has_nonstatic_fields() const { return (_class_flags & _has_nonstatic_fields) != 0; }
void set_has_nonstatic_fields() { _class_flags |= _has_nonstatic_fields; }
bool has_nonstatic_fields() const { return _has_nonstatic_fields; }
void set_has_nonstatic_fields(bool b) { _has_nonstatic_fields = b; }
// field sizes
int nonstatic_field_size() const { return _nonstatic_field_size; }
......@@ -367,16 +361,15 @@ class instanceKlass: public Klass {
bool is_in_error_state() const { return _init_state == initialization_error; }
bool is_reentrant_initialization(Thread *thread) { return thread == _init_thread; }
int get_init_state() { return _init_state; } // Useful for debugging
bool is_rewritten() const { return (_class_flags & _rewritten) != 0; }
bool is_rewritten() const { return _rewritten; }
// defineClass specified verification
bool should_verify_class() const { return (_class_flags & _should_verify) != 0; }
void set_should_verify_class() { _class_flags |= _should_verify; }
bool should_verify_class() const { return _should_verify_class; }
void set_should_verify_class(bool value) { _should_verify_class = value; }
// marking
bool is_marked_dependent() const { return (_class_flags & _is_marked_dependent) != 0; }
void set_is_marked_dependent() { _class_flags |= _is_marked_dependent; }
void clear_is_marked_dependent() { _class_flags &= ~_is_marked_dependent; }
bool is_marked_dependent() const { return _is_marked_dependent; }
void set_is_marked_dependent(bool value) { _is_marked_dependent = value; }
// initialization (virtuals from Klass)
bool should_be_initialized() const; // means that initialize should be called
......@@ -757,8 +750,7 @@ private:
#else
void set_init_state(ClassState state) { _init_state = state; }
#endif
void clear_class_flags() { _class_flags = _noflags; }
void set_rewritten() { _class_flags |= _rewritten; }
void set_rewritten() { _rewritten = true; }
void set_init_thread(Thread *thread) { _init_thread = thread; }
u2 idnum_allocated_count() const { return _idnum_allocated_count; }
......
......@@ -455,9 +455,9 @@ instanceKlassKlass::allocate_instance_klass(int vtable_len, int itable_len,
ik->set_inner_classes(NULL);
ik->set_static_oop_field_size(0);
ik->set_nonstatic_field_size(0);
ik->set_is_marked_dependent(false);
ik->set_init_state(instanceKlass::allocated);
ik->set_init_thread(NULL);
ik->clear_class_flags();
ik->set_reference_type(rt);
ik->set_oop_map_cache(NULL);
ik->set_jni_ids(NULL);
......
......@@ -108,7 +108,7 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(instanceKlass, _static_field_size, int) \
nonstatic_field(instanceKlass, _static_oop_field_size, int) \
nonstatic_field(instanceKlass, _nonstatic_oop_map_size, int) \
nonstatic_field(instanceKlass, _class_flags, int) \
nonstatic_field(instanceKlass, _is_marked_dependent, bool) \
nonstatic_field(instanceKlass, _minor_version, u2) \
nonstatic_field(instanceKlass, _major_version, u2) \
nonstatic_field(instanceKlass, _init_state, instanceKlass::ClassState) \
......@@ -1245,7 +1245,6 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_integer_type(Bytecodes::Code) \
declare_integer_type(Generation::Name) \
declare_integer_type(instanceKlass::ClassState) \
declare_integer_type(instanceKlass::ClassFlags) \
declare_integer_type(JavaThreadState) \
declare_integer_type(Location::Type) \
declare_integer_type(Location::Where) \
......@@ -1527,16 +1526,6 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_constant(instanceKlass::initialization_error) \
\
/*********************************/ \
/* instanceKlass ClassFlags enum */ \
/*********************************/ \
\
declare_constant(instanceKlass::_noflags) \
declare_constant(instanceKlass::_rewritten) \
declare_constant(instanceKlass::_should_verify) \
declare_constant(instanceKlass::_has_nonstatic_fields) \
declare_constant(instanceKlass::_is_marked_dependent) \
\
/*********************************/ \
/* symbolOop - symbol max length */ \
/*********************************/ \
\
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册