package org.rascalmpl.library.experiments.Compiler.RVM.Interpreter.Instructions;
import org.rascalmpl.library.experiments.Compiler.RVM.Interpreter.BytecodeGenerator;
import org.rascalmpl.library.experiments.Compiler.RVM.Interpreter.CodeBlock;
public class PushRootFun extends Instruction {
final String fuid;
public PushRootFun(CodeBlock ins, String fuid){
super(ins, Opcode.PUSH_ROOT_FUN);
this.fuid = fuid;
}
public String toString() { return "PUSH_ROOT_FUN " + fuid + "[" + codeblock.getFunctionIndex(fuid) + "]"; }
public void generate(){
codeblock.addCode1(opcode.getOpcode(), codeblock.getFunctionIndex(fuid));
}
public void generateByteCode(BytecodeGenerator codeEmittor, boolean debug){
if ( debug )
codeEmittor.emitDebugCall2(opcode.name(), fuid, codeblock.getFunctionIndex(fuid));
codeEmittor.emitCallWithArgsSSI_S("insnPUSH_ROOT_FUN", codeblock.getFunctionIndex(fuid),debug);
}
}