Sync in oopDesc* PSPromotionManager::copy_to_survivor_space(...) for 3A2000.

Tue, 18 Oct 2016 10:12:00 +0800

author
fujie
date
Tue, 18 Oct 2016 10:12:00 +0800
changeset 134
58a58e4782dd
parent 133
a087cf8abe24
child 135
5b3263131a49

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();

mercurial