package code.instr;

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

/**
 * Push on the stack an uninstantiated free variable stored in some
 * register of variables.
 *
 * @author Sergio Antoy
 * @since June 17, 2003
 */

public class MakeVar implements Instruction {
    private final int register;
    public MakeVar(int register) { this.register = register; }

    public void execute(Computation computation) {
        Term term = Space.instance.varRegister[register];
        Space.instance.preTerm.push(term);
        if (Tracer.instruction) {
            Logger.logln(computation.getIdString() + ": MakeVar: " + 
			 term + " from register " + register);
        }
    }

    public String printAsTxtLoadable() { return "MakeVar " + register; }
}
