!7 cmodule VirtualObjectsSpike > DynPrintLog { start-thread { new VirtualObject vo; print("VO made"); vo.setInt(5, 13); assertEqualsVerbose(13, vo.getIntAt(5)); assertEqualsVerbose(0, vo.getIntAt(3)); } } sclass VirtualObject { byte[] byteData; O[] pointerData; int getIntAt(int byteIdx) { ret intFromBytes(byteData, byteIdx); } void setInt(int byteIdx, int i) { setByte(byteIdx+3, 0); intToBytes_inArray(i, byteData, byteIdx); } byte getByteAt(int byteIdx) { ret byteData[byteIdx]; } void setByte(int byteIdx, int b) { byteData = byteArraySetWithExponentialGrowth(byteData, byteIdx, (byte) b); } O getPointerAt(int pointerIdx) { ret pointerData[pointerIdx]; } void setPointer(int pointerIdx, O o) { pointerData = arraySetWithExponentialGrowth(pointerData, pointerIdx, o); } }