Tue, 18 Oct 2016 10:12:00 +0800
Sync in oopDesc* PSPromotionManager::copy_to_survivor_space(...) for 3A2000.
src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp Wed Oct 12 02:29:05 2016 -0400 1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp Tue Oct 18 10:12:00 2016 +0800 1.3 @@ -74,6 +74,10 @@ 1.4 1.5 oop new_obj = NULL; 1.6 1.7 +#ifdef MIPS64 1.8 + if (Use3A2000) OrderAccess::fence(); 1.9 +#endif 1.10 + 1.11 // NOTE! We must be very careful with any methods that access the mark 1.12 // in o. There may be multiple threads racing on it, and it may be forwarded 1.13 // at any time. Do not use oop methods for accessing the mark! 1.14 @@ -111,6 +115,10 @@ 1.15 } 1.16 } 1.17 } 1.18 + 1.19 +#ifdef MIPS64 1.20 + if (Use3A2000) OrderAccess::fence(); 1.21 +#endif 1.22 } 1.23 } 1.24 1.25 @@ -149,6 +157,9 @@ 1.26 new_obj = (oop) _old_lab.allocate(new_obj_size); 1.27 } 1.28 } 1.29 +#ifdef MIPS64 1.30 + if (Use3A2000) OrderAccess::fence(); 1.31 +#endif 1.32 } 1.33 1.34 // This is the promotion failed test, and code handling. 1.35 @@ -168,6 +179,9 @@ 1.36 1.37 // Copy obj 1.38 Copy::aligned_disjoint_words((HeapWord*)o, (HeapWord*)new_obj, new_obj_size); 1.39 +#ifdef MIPS64 1.40 + if (Use3A2000) OrderAccess::fence(); 1.41 +#endif 1.42 1.43 // Now we have to CAS in the header. 1.44 if (o->cas_forward_to(new_obj, test_mark)) { 1.45 @@ -215,6 +229,10 @@ 1.46 // don't update this before the unallocation! 1.47 new_obj = o->forwardee(); 1.48 } 1.49 + 1.50 +#ifdef MIPS64 1.51 + if (Use3A2000) OrderAccess::fence(); 1.52 +#endif 1.53 } else { 1.54 assert(o->is_forwarded(), "Sanity"); 1.55 new_obj = o->forwardee();