package code.instr;

import code.space.Computation;
import code.space.Space;
import code.stuff.Logger;
import code.stuff.Tracer;
import code.term.Term;

/**
 * Move the top term of the pre-term stack (which is popped) in the register.
 *
 * @author Sergio Antoy
 * @since June 17, 2003
 */

public class Pop implements Instruction {

    private Pop() {}
    public final static Pop singleton = new Pop();

    public void execute(Computation computation) {
        Space.instance.current = (Term) Space.instance.preTerm.pop();
        if (Tracer.instruction) {
            Logger.logln(computation.getIdString() +
                    ": Pop: " + Space.instance.current);
        }
    }

    public String printAsTxtLoadable() { return "Pop"; }
}


