OopMapSet::all_do does oms.next() twice during iteration

XMLWordPrintable

    • b21
    • Not verified

        It seems to be introduced by JDK-8232083. New code does oms.next() twice:

            for (OopMapStream oms(map); !oms.is_done(); oms.next()) { // <--- here
              OopMapValue omv = oms.current();
              if (omv.type() != OopMapValue::derived_oop_value) {
                continue;
              }
              ...
              if (base_loc != NULL && *base_loc != NULL && !CompressedOops::is_base(*base_loc)) {
                derived_oop_fn(base_loc, derived_loc);
              }
              oms.next(); // <--- then here
            }

        We are seeing some weird, random, intermittent test failures with Shenandoah in jdk/jdk recently, this might explain it.

              Assignee:
              Tom Rodriguez
              Reporter:
              Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated:
                Resolved: