# HG changeset patch # User fujie # Date 1476756720 -28800 # Node ID 58a58e4782dd8cc35e8b658b9fca4a9899388974 # Parent a087cf8abe24d252a799a71b9f5ad5b903b72e12 Sync in oopDesc* PSPromotionManager::copy_to_survivor_space(...) for 3A2000. diff -r a087cf8abe24 -r 58a58e4782dd src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp --- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp Wed Oct 12 02:29:05 2016 -0400 +++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp Tue Oct 18 10:12:00 2016 +0800 @@ -74,6 +74,10 @@ oop new_obj = NULL; +#ifdef MIPS64 + if (Use3A2000) OrderAccess::fence(); +#endif + // NOTE! We must be very careful with any methods that access the mark // in o. There may be multiple threads racing on it, and it may be forwarded // at any time. Do not use oop methods for accessing the mark! @@ -111,6 +115,10 @@ } } } + +#ifdef MIPS64 + if (Use3A2000) OrderAccess::fence(); +#endif } } @@ -149,6 +157,9 @@ new_obj = (oop) _old_lab.allocate(new_obj_size); } } +#ifdef MIPS64 + if (Use3A2000) OrderAccess::fence(); +#endif } // This is the promotion failed test, and code handling. @@ -168,6 +179,9 @@ // Copy obj Copy::aligned_disjoint_words((HeapWord*)o, (HeapWord*)new_obj, new_obj_size); +#ifdef MIPS64 + if (Use3A2000) OrderAccess::fence(); +#endif // Now we have to CAS in the header. if (o->cas_forward_to(new_obj, test_mark)) { @@ -215,6 +229,10 @@ // don't update this before the unallocation! new_obj = o->forwardee(); } + +#ifdef MIPS64 + if (Use3A2000) OrderAccess::fence(); +#endif } else { assert(o->is_forwarded(), "Sanity"); new_obj = o->forwardee();