public void accumulateFreeSlot( TransactionalIdSystemImpl idSystem, FreespaceCommitter freespaceCommitter, boolean forFreespace) { if (forFreespace() != forFreespace) { return; } if (_firstOperation == SlotChangeOperation.create) { return; } if (_currentOperation == SlotChangeOperation.update || _currentOperation == SlotChangeOperation.delete) { Slot slot = modifiedSlotInParentIdSystem(idSystem); if (Slot.isNull(slot)) { slot = idSystem.committedSlot(_key); } // No old slot at all can be the case if the object // has been deleted by another transaction and we add it again. if (!Slot.isNull(slot)) { freespaceCommitter.delayedFree(slot, freeToSystemFreespaceSystem()); } } }
protected Slot modifiedSlotInParentIdSystem(TransactionalIdSystemImpl idSystem) { return idSystem.modifiedSlotInParentIdSystem(_key); }