// $Id: ParamScalarVarDescriptor.java,v 1.2 1999/12/07 06:35:00 golem Exp $

package IR2;

public class ParamScalarVarDescriptor extends ScalarVarDescriptor {

  private int param_num = -1;


  public ParamScalarVarDescriptor(String name, int type, int line) {
      super(name, type, line);
  }

  /* Procedure to set the parameter number. */
  public void set_parameter_num(int n) {
    param_num = n;
  }


  // The proxy is a hackish thing for MIPSCodegen, but not as bad as
  // the kludge it replaced.
  public void set_proxy(DelocalizedLValue p) { proxy = p; }

  /* DelocalizedLValue implementation. */
  public void load_into_reg(Codegen c, DelocalizedRegister r) {
    if (proxy != null) {
      proxy.load_into_reg(c, r);
    } else {
      c.generate_load_param(r, param_num);
    }
  }

  public void store_from_reg(Codegen c, DelocalizedRegister r) {
    if (proxy != null) {
      proxy.store_from_reg(c, r);
    } else {
      c.generate_save_param(param_num, r);
    }
  }


  /* Walkable implementation. */
  public String node_name() {
	return "param_scalar_var_descriptor";
  }
}
