@Override @ForceInline public byte readByte(long offset) { if (Jvm.isDebug()) checkReleased(); return memory.readByte(address + translate(offset)); }
public long readIncompleteLong(long offset) { int remaining = (int) Math.min(8, readRemaining() - offset); long l = 0; for (int i = 0; i < remaining; i++) { byte b = memory.readByte(address + offset + i); l |= (long) (b & 0xFF) << (i * 8); } return l; }
public int byteCheckSum() throws IORuntimeException { if (readLimit() >= Integer.MAX_VALUE || start() != 0) throw new AssertionError(); byte b = 0; NativeBytesStore bytesStore = (NativeBytesStore) bytesStore(); Memory memory = bytesStore.memory; assert memory != null; for (int i = (int) readPosition(), lim = (int) readLimit(); i < lim; i++) { b += memory.readByte(bytesStore.address + i); } return b & 0xFF; }
@Override public boolean isEqual(String s) { if (s == null || s.length() != readRemaining()) return false; char[] chars = StringUtils.extractChars(s); if (bytesStore instanceof NativeBytesStore) { NativeBytesStore bs = (NativeBytesStore) this.bytesStore; long address = bs.address + bs.translate(readPosition); Memory memory = bs.memory; for (int i = 0; i < chars.length; i++) { int b = memory.readByte(address + i) & 0xFF; if (b != chars[i]) return false; } } else { try { for (int i = 0; i < chars.length; i++) { int b = bytesStore.readByte(readPosition + i) & 0xFF; if (b != chars[i]) return false; } } catch (IORuntimeException e) { throw new AssertionError(e); } } return true; }
void read8bit(long position, char[] chars, int length) { long addr = address + translate(position); Memory memory = OS.memory(); for (int i = 0; i < length; i++) chars[i] = (char) (memory.readByte(addr + i) & 0xFF); }