예제 #1
0
 public InlinerInfo(CallBase call, CFG c) {
   this.varRenameMap = new HashMap<Variable, Variable>();
   this.lblRenameMap = new HashMap<Label, Label>();
   this.bbRenameMap = new HashMap<BasicBlock, BasicBlock>();
   this.yieldSites = new ArrayList();
   this.call = call;
   this.callArgs = call.getCallArgs();
   this.callerCFG = c;
   this.callReceiver = call.getReceiver();
   this.inClosureCloneMode = false;
   this.inClosureInlineMode = false;
   this.canMapArgsStatically = !containsSplat(callArgs);
   this.argsArray =
       this.canMapArgsStatically ? null : getInlineHostScope().getNewTemporaryVariable();
   synchronized (globalInlineCount) {
     this.inlineVarPrefix = "%in" + globalInlineCount + "_";
     globalInlineCount++;
   }
 }
예제 #2
0
 public Operand getCallClosure() {
   return call.getClosureArg(callerCFG.getScope().getManager().getNil());
 }