/** * @param base Address of cell. * @param pageId Page ID to set in current cell. */ private void setPageId(long base, long pageId) { putLong(base + PAGE_ID_OFFSET, pageId); }
/** {@inheritDoc} */ @Override protected void writeLongFast(long val) { long addr = ptr + pos; if (BIG_ENDIAN) GridUnsafe.putLongLE(addr, val); else GridUnsafe.putLong(addr, val); }
/** * Writes page ID to the page at the given absolute position. * * @param absPtr Absolute memory pointer to the page header. * @param pageId Page ID to write. */ private void writePageId(long absPtr, long pageId) { GridUnsafe.putLong(absPtr + PAGE_ID_OFFSET, pageId); }
/** {@inheritDoc} */ @Override protected void writeLongFast(long val) { long off = GridUnsafe.BYTE_ARR_OFF + pos; if (BIG_ENDIAN) GridUnsafe.putLongLE(data, off, val); else GridUnsafe.putLong(data, off, val); }
/** * Writes page ID to the page at the given absolute position. * * @param absPtr Absolute memory pointer to the page header. * @param pageId Page ID to write. */ private static void pageId(long absPtr, long pageId) { GridUnsafe.putLong(absPtr + PAGE_ID_OFFSET, pageId); }
/** {@inheritDoc} */ @Override public void unsafeWriteLong(long val) { long off = GridUnsafe.BYTE_ARR_OFF + pos; if (BIG_ENDIAN) GridUnsafe.putLongLE(data, off, val); else GridUnsafe.putLong(data, off, val); shift(8); }
/** * @param base Bucket base address. * @param val Value to store in bucket. */ private void setValue(long base, long val) { putLong(base + VALUE_OFFSET, val); }
/** * Writes relative pointer to the page at the given absolute position. * * @param absPtr Absolute memory pointer to the page header. * @param relPtr Relative pointer to write. */ private static void relative(long absPtr, long relPtr) { GridUnsafe.putLong(absPtr + RELATIVE_PTR_OFFSET, relPtr & RELATIVE_PTR_MASK); }
/** * @param addr address. * @param nextSnapshotTag Next snapshot tag. */ private void setLastSnasphotTag0(long addr, long nextSnapshotTag) { GridUnsafe.putLong(addr + LAST_SNAPSHOT_TAG_OFFSET, nextSnapshotTag); }
/** * @param lock Lock pointer to initialize. */ public void init(long lock, int tag) { tag &= 0xFFFF; assert tag != 0; GridUnsafe.putLong(lock, (long)tag << 16); }
/** * @param ptr Pointer. * @param v Long value. */ public void writeLong(long ptr, long v) { GridUnsafe.putLong(ptr, v); }
/** * Sets pointer to checkpoint buffer. * * @param absPtr Page absolute pointer. * @param tmpRelPtr Temp buffer relative pointer or {@link #INVALID_REL_PTR} if page is not copied to checkpoint * buffer. */ private static void tempBufferPointer(long absPtr, long tmpRelPtr) { GridUnsafe.putLong(absPtr + PAGE_TMP_BUF_OFFSET, tmpRelPtr); }
/** * @param addr Address. * @param off Offset. * @param v Value. */ public static void putLong(long addr, int off, long v) { assert addr > 0 : addr; assert off >= 0; GridUnsafe.putLong(addr + off, v); } }
/** * @param idx Item number. * @param value Initial partition counter. */ public void initialCounter(int idx, long value){ if (idx >= size) throw new ArrayIndexOutOfBoundsException(); long off = GridUnsafe.BYTE_ARR_OFF + idx * ITEM_SIZE + 4; GridUnsafe.putLong(data, off, value); }
/** {@inheritDoc} */ @Override public void writeLong(long val) { lastFinished = buf.remaining() >= 8; if (lastFinished) { int pos = buf.position(); GridUnsafe.putLong(heapArr, baseOff + pos, val); buf.position(pos + 8); } }
/** {@inheritDoc} */ @Override public void unsafeWriteLong(long val) { GridUnsafe.putLong(data + pos, val); shift(8); }
/** {@inheritDoc} */ @Override public void writeLong(long val) throws IOException { int writePos = ensure(8); GridUnsafe.putLong(buf, BYTE_ARR_OFF + writePos, val); }
/** {@inheritDoc} */ @Override public void writeLong(long val) { ensureCapacity(pos + 8); GridUnsafe.putLong(data + pos, val); shift(8); }
/** * @param idx Entry index. * @param grpId Cache group ID to write. * @param pageId Page ID to write. */ private void setKeyAt(int idx, int grpId, long pageId) { long base = entryBase(idx); GridUnsafe.putInt(base, grpId); GridUnsafe.putLong(base + PAGE_ID_OFFSET, pageId); }
/** * @param absPtr Absolute pointer to initialize. * @param relative Relative pointer to write. */ private static void initNew(long absPtr, long relative) { relative(absPtr, relative); tempBufferPointer(absPtr, INVALID_REL_PTR); GridUnsafe.putLong(absPtr, PAGE_MARKER); GridUnsafe.putInt(absPtr + PAGE_PIN_CNT_OFFSET, 0); }