Mercurial > hg > truffle
diff src/share/vm/prims/jvmtiRedefineClasses.cpp @ 2226:c5a923563727
6912621: iCMS: Error: assert(_markBitMap.isMarked(addr + 1),"Missing Printezis bit?")
Summary: Fix block_size_if_printezis_bits() so it does not expect the bits, only uses them when available. Fix block_size_no_stall() so it does not stall when the bits are missing such cases, letting the caller deal with zero size returns. Constant pool cache oops do not need to be unparsable or conc_unsafe after their klass pointer is installed. Some cosmetic clean-ups and some assertion checking for conc-usafety which, in the presence of class file redefinition, has no a-priori time boundedness, so all GCs must be able to safely deal with putatively conc-unsafe objects in a stop-world pause.
Reviewed-by: jmasa, johnc
author | ysr |
---|---|
date | Mon, 07 Feb 2011 22:19:57 -0800 |
parents | 3582bf76420e |
children | fbbeec6dad2d |
line wrap: on
line diff
--- a/src/share/vm/prims/jvmtiRedefineClasses.cpp Thu Feb 03 20:49:09 2011 -0800 +++ b/src/share/vm/prims/jvmtiRedefineClasses.cpp Mon Feb 07 22:19:57 2011 -0800 @@ -1247,12 +1247,12 @@ // Constant pools are not easily reused so we allocate a new one // each time. // merge_cp is created unsafe for concurrent GC processing. It - // should be marked safe before discarding it because, even if - // garbage. If it crosses a card boundary, it may be scanned + // should be marked safe before discarding it. Even though + // garbage, if it crosses a card boundary, it may be scanned // in order to find the start of the first complete object on the card. constantPoolHandle merge_cp(THREAD, oopFactory::new_constantPool(merge_cp_length, - methodOopDesc::IsUnsafeConc, + oopDesc::IsUnsafeConc, THREAD)); int orig_length = old_cp->orig_length(); if (orig_length == 0) { @@ -2343,7 +2343,7 @@ // sized constant pool with the klass to save space. constantPoolHandle smaller_cp(THREAD, oopFactory::new_constantPool(scratch_cp_length, - methodOopDesc::IsUnsafeConc, + oopDesc::IsUnsafeConc, THREAD)); // preserve orig_length() value in the smaller copy int orig_length = scratch_cp->orig_length();