Mercurial > hg > truffle
comparison src/share/vm/oops/constMethodKlass.cpp @ 518:0af8b0718fc9
6692899: CMS: many vm.parallel_class_loading tests fail with assert "missing Printezis mark"
Summary: The CMS concurrent precleaning and concurrent marking phases should work around classes that are undergoing redefinition.
Reviewed-by: ysr, dcubed
author | jmasa |
---|---|
date | Sun, 11 Jan 2009 16:58:24 -0800 |
parents | a61af66fc99e |
children | 0fbdb4381b99 |
comparison
equal
deleted
inserted
replaced
517:e9be0e04635a | 518:0af8b0718fc9 |
---|---|
47 bool constMethodKlass::oop_is_parsable(oop obj) const { | 47 bool constMethodKlass::oop_is_parsable(oop obj) const { |
48 assert(obj->is_constMethod(), "must be constMethod oop"); | 48 assert(obj->is_constMethod(), "must be constMethod oop"); |
49 return constMethodOop(obj)->object_is_parsable(); | 49 return constMethodOop(obj)->object_is_parsable(); |
50 } | 50 } |
51 | 51 |
52 bool constMethodKlass::oop_is_conc_safe(oop obj) const { | |
53 assert(obj->is_constMethod(), "must be constMethod oop"); | |
54 return constMethodOop(obj)->is_conc_safe(); | |
55 } | |
56 | |
52 constMethodOop constMethodKlass::allocate(int byte_code_size, | 57 constMethodOop constMethodKlass::allocate(int byte_code_size, |
53 int compressed_line_number_size, | 58 int compressed_line_number_size, |
54 int localvariable_table_length, | 59 int localvariable_table_length, |
55 int checked_exceptions_length, | 60 int checked_exceptions_length, |
61 bool is_conc_safe, | |
56 TRAPS) { | 62 TRAPS) { |
57 | 63 |
58 int size = constMethodOopDesc::object_size(byte_code_size, | 64 int size = constMethodOopDesc::object_size(byte_code_size, |
59 compressed_line_number_size, | 65 compressed_line_number_size, |
60 localvariable_table_length, | 66 localvariable_table_length, |
73 cm->set_constMethod_size(size); | 79 cm->set_constMethod_size(size); |
74 cm->set_inlined_tables_length(checked_exceptions_length, | 80 cm->set_inlined_tables_length(checked_exceptions_length, |
75 compressed_line_number_size, | 81 compressed_line_number_size, |
76 localvariable_table_length); | 82 localvariable_table_length); |
77 assert(cm->size() == size, "wrong size for object"); | 83 assert(cm->size() == size, "wrong size for object"); |
84 cm->set_is_conc_safe(is_conc_safe); | |
78 cm->set_partially_loaded(); | 85 cm->set_partially_loaded(); |
79 assert(cm->is_parsable(), "Is safely parsable by gc"); | 86 assert(cm->is_parsable(), "Is safely parsable by gc"); |
80 return cm; | 87 return cm; |
81 } | 88 } |
82 | 89 |