/** * Removes the given page ID from the pages list. * * @param pageAddr Page address. * @param dataPageId Page ID to remove. * @return {@code true} if page was in the list and was removed, {@code false} otherwise. */ public boolean removePage(long pageAddr, long dataPageId) { assert dataPageId != 0; int cnt = getCount(pageAddr); for (int i = 0; i < cnt; i++) { if (PageIdUtils.maskPartitionId(getAt(pageAddr, i)) == PageIdUtils.maskPartitionId(dataPageId)) { if (i != cnt - 1) copyMemory(pageAddr, offset(i + 1), pageAddr, offset(i), 8 * (cnt - i - 1)); setCount(pageAddr, cnt - 1); return true; } } return false; }
/** * Removes the given page ID from the pages list. * * @param pageAddr Page address. * @param dataPageId Page ID to remove. * @return {@code true} if page was in the list and was removed, {@code false} otherwise. */ public boolean removePage(long pageAddr, long dataPageId) { assert dataPageId != 0; int cnt = getCount(pageAddr); for (int i = 0; i < cnt; i++) { if (PageIdUtils.maskPartitionId(getAt(pageAddr, i)) == PageIdUtils.maskPartitionId(dataPageId)) { if (i != cnt - 1) copyMemory(pageAddr, offset(i + 1), pageAddr, offset(i), 8 * (cnt - i - 1)); setCount(pageAddr, cnt - 1); return true; } } return false; }