The live objects are examined for pointers, which can be looked up in the sorted break table of size "n" in O(log "n") time if the break table is sorted, for a total running time of "O"("n" log "n"). Pointers are then adjusted by the amount specified in the relocation table. In order to avoid "O"("n" log "n") complexity, the LISP2 algorithm uses 3 different passes over the heap. In addition, heap objects must have a separate forwarding pointer slot that is not used outside of garbage collection. After standard marking, the algorithm proceeds in the following 3 passes:   This algorithm is "O"("n") on the size of the heap; it has a better complexity than the table-based approach, but the table-based approach's "n" is the size of the used space only, not the entire heap space as in the LISP2 algorithm. However, the LISP2 algorithm is simpler to implement.