< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahScanRemembered.inline.hpp

Print this page
*** 177,11 ***
        oop obj = cast_to_oop(p);
  
        // PREFIX: The object that straddles into this range of dirty cards
        // from the left may be subject to special treatment unless
        // it is an object array.
!       if (p < left && !obj->is_objArray()) {
          // The mutator (both compiler and interpreter, but not JNI?)
          // typically dirty imprecisely (i.e. only the head of an object),
          // but GC closures typically dirty the object precisely. (It would
          // be nice to have everything be precise for maximum efficiency.)
          //
--- 177,11 ---
        oop obj = cast_to_oop(p);
  
        // PREFIX: The object that straddles into this range of dirty cards
        // from the left may be subject to special treatment unless
        // it is an object array.
!       if (p < left && !obj->is_refArray()) {
          // The mutator (both compiler and interpreter, but not JNI?)
          // typically dirty imprecisely (i.e. only the head of an object),
          // but GC closures typically dirty the object precisely. (It would
          // be nice to have everything be precise for maximum efficiency.)
          //

*** 251,11 ***
        // by scanning the portion of a non-objArray that wasn't done.
        if (p > right && last_p != nullptr) {
          assert(last_p < right, "Error");
          // check if last_p suffix needs scanning
          const oop last_obj = cast_to_oop(last_p);
!         if (!last_obj->is_objArray()) {
            // scan the remaining suffix of the object
            const MemRegion last_mr(right, p);
            assert(p == last_p + last_obj->size(), "Would miss portion of last_obj");
            last_obj->oop_iterate(cl, last_mr);
            log_develop_debug(gc, remset)("Fixed up non-objArray suffix scan in [" INTPTR_FORMAT ", " INTPTR_FORMAT ")",
--- 251,11 ---
        // by scanning the portion of a non-objArray that wasn't done.
        if (p > right && last_p != nullptr) {
          assert(last_p < right, "Error");
          // check if last_p suffix needs scanning
          const oop last_obj = cast_to_oop(last_p);
!         if (!last_obj->is_refArray()) {
            // scan the remaining suffix of the object
            const MemRegion last_mr(right, p);
            assert(p == last_p + last_obj->size(), "Would miss portion of last_obj");
            last_obj->oop_iterate(cl, last_mr);
            log_develop_debug(gc, remset)("Fixed up non-objArray suffix scan in [" INTPTR_FORMAT ", " INTPTR_FORMAT ")",
< prev index next >