constantrefassignquad.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 82 行

JAVA
82
字号
/*
 * $Id: ConstantRefAssignQuad.java,v 1.2 2004/01/29 18:30:59 epr Exp $
 *
 * mailto:madhu@madhu.com
 */
package org.jnode.vm.compiler.ir.quad;

import org.jnode.util.BootableHashMap;
import org.jnode.vm.compiler.ir.CodeGenerator;
import org.jnode.vm.compiler.ir.Constant;
import org.jnode.vm.compiler.ir.IRBasicBlock;
import org.jnode.vm.compiler.ir.Operand;
import org.jnode.vm.compiler.ir.Variable;

/**
 * @author Madhu Siddalingaiah
 *
 */
public class ConstantRefAssignQuad extends AssignQuad {
	private Constant rhs;

	/**
	 * @param address
	 * @param block
	 * @param lhsIndex
	 */
	public ConstantRefAssignQuad(int address, IRBasicBlock block, int lhsIndex,
		Constant rhs) {
		super(address, block, lhsIndex);
		this.rhs = rhs;
		doSSA();
		setDeadCode(true); // this will change if this is a phi operand
	}

	/**
	 * @see org.jnode.vm.compiler.ir.quad.Quad#getReferencedOps()
	 */
	public Operand[] getReferencedOps() {
		return null;
	}

	public String toString() {
		return getAddress() + ": " + getLHS().toString() + " = " + rhs.toString();
	}

	/**
	 * @return
	 */
	public Constant getRHS() {
		return rhs;
	}

	/**
	 * @param operand
	 * @return
	 */
	public Operand propagate(Variable operand) {
		return rhs;
	}

	/* (non-Javadoc)
	 * @see org.jnode.vm.compiler.ir.Quad#doPass2(org.jnode.util.BootableHashMap)
	 */
	public void doPass2(BootableHashMap liveVariables) {
		setDeadCode(true);
	}

	/* (non-Javadoc)
	 * @see org.jnode.vm.compiler.ir.Quad#generateCode(org.jnode.vm.compiler.ir.CodeGenerator)
	 */
	public void generateCode(CodeGenerator cg) {
		cg.generateCodeFor(this);
	}

	/* (non-Javadoc)
	 * @see org.jnode.vm.compiler.ir.AssignQuad#getLHSLiveAddress()
	 */
	public int getLHSLiveAddress() {
		return this.getAddress() + 1;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?