Address end = start.add(REGION_LIMIT_OFFSET).loadAddress();
  private void scanRegion(LinearScan scanner, Address start)     throws InlinePragma {    /* Get the end of this region */    Address end = start.add(REGION_LIMIT_OFFSET).loadAddress();    Address dataEnd = start.add(DATA_END_OFFSET).loadAddress();    /* dataEnd = zero represents the current region. */    Address currentLimit = (dataEnd.isZero() ? cursor : dataEnd);    ObjectReference current =      ObjectModel.getObjectFromStartAddress(start.add(DATA_START_OFFSET));    while (ObjectModel.refToAddress(current).LT(currentLimit)) {      ObjectReference next = ObjectModel.getNextObject(current);      scanner.scan(current);  // Scan this object.      current = next;    }  }