final Word headerSizeW = Word.fromIntZeroExtend(headerSize); Word offset = Word.fromIntZeroExtend(headerSize);
final Word headerSize = Word.fromIntZeroExtend(this.headerSize); Word offset = headerSize;
    protected void initialize(Address start, Address end, int slotSize) {        //Unsafe.debug("bootheap.initialize");        //Unsafe.debug("start"); Unsafe.debug(Unsafe.addressToInt(start));        //Unsafe.debug("end"); Unsafe.debug(Unsafe.addressToInt(end));        this.start = start;        this.end = end;        initializeAbstract(slotSize);        this.sizeOffset = Offset.fromIntSignExtend(-((ObjectLayout.HEADER_SLOTS + 1) * slotSize));        this.headerSize = ObjectLayout.objectAlign(this.headerSize + slotSize);        // Create an allocation bitmap        final int heapSize = getSize();        final int bits = ObjectLayout.objectAlign(heapSize)                / ObjectLayout.OBJECT_ALIGN;        final int bitmapSize = ObjectLayout.objectAlign(bits / 8);        allocationBitmapPtr = helper.allocateBlock(Extent.fromIntZeroExtend(bitmapSize));        //allocationBitmapPtr = MemoryBlockManager.allocateBlock(bitmapSize);        // Initialize the allocation bitmap        helper.clear(allocationBitmapPtr, bitmapSize);        // Go through the heap and mark all objects in the allocation bitmap.        final Word heapSizeW = Word.fromIntZeroExtend(heapSize);        final Word headerSizeW = Word.fromIntZeroExtend(headerSize);        Word offset = Word.fromIntZeroExtend(headerSize);        while (offset.LT(heapSizeW)) {            final Address ptr = start.add(offset);            setAllocationBit(ptr, true);            final Word objSize = ptr.loadWord(sizeOffset);            offset = offset.add(objSize).add(headerSizeW);        }        //Unsafe.debug("end of bootheap.initialize");    }