public class CallInstr extends MultiOperandInstr
Modifier and Type | Field and Description |
---|---|
java.util.HashMap<DynamicMethod,java.lang.Integer> |
_profile |
Constructor and Description |
---|
CallInstr(Operation op,
Variable result,
MethAddr methAddr,
Operand receiver,
Operand[] args,
Operand closure) |
CallInstr(Variable result,
MethAddr methAddr,
Operand receiver,
Operand[] args,
Operand closure) |
Modifier and Type | Method and Description |
---|---|
boolean |
canBeEval() |
boolean |
canCaptureCallersBinding() |
boolean |
canModifyCode() |
Operand[] |
cloneCallArgs(InlinerInfo ii) |
Instr |
cloneForInlining(InlinerInfo ii)
Clone the instruction for inlining -- this will rename all variables (including local variables and self!)
and replace RECV_ARG and RETURN instructions to regular copy instructions,
|
Operand[] |
getCallArgs() |
Operand |
getClosureArg() |
MethAddr |
getMethodAddr() |
Operand[] |
getOperands() |
Operand |
getReceiver() |
IRMethod |
getTargetMethod() |
IRMethod |
getTargetMethodWithReceiver(Operand receiver) |
Label |
interpret_with_inline(InterpreterContext interp,
IRubyObject self) |
Label |
interpret(InterpreterContext interp,
IRubyObject self) |
boolean |
isLVADataflowBarrier() |
boolean |
isRubyInternalsCall() |
boolean |
isStaticCallTarget() |
boolean |
requiresBinding() |
void |
setMethodAddr(MethAddr mh) |
void |
simplifyOperands(java.util.Map<Operand,Operand> valueMap)
This method takes as input a map of operands to their values, and outputs
If the value map provides a value for any of the instruction's operands
this method is expected to replace the original operands with the simplified values.
|
java.lang.String |
toString() |
cloneOperandsForInlining, prepareArguments
canRaiseException, getOperation, getResult, getUsedVariables, hasSideEffects, isDead, markDead, simplifyAndGetResult
public java.util.HashMap<DynamicMethod,java.lang.Integer> _profile
public CallInstr(Variable result, MethAddr methAddr, Operand receiver, Operand[] args, Operand closure)
public Operand[] getOperands()
getOperands
in class Instr
public void setMethodAddr(MethAddr mh)
public MethAddr getMethodAddr()
public Operand getClosureArg()
public Operand getReceiver()
public Operand[] getCallArgs()
public void simplifyOperands(java.util.Map<Operand,Operand> valueMap)
Instr
simplifyOperands
in class Instr
public Operand[] cloneCallArgs(InlinerInfo ii)
public boolean isRubyInternalsCall()
public boolean isStaticCallTarget()
public IRMethod getTargetMethod()
public boolean canModifyCode()
public boolean canBeEval()
public boolean requiresBinding()
public boolean canCaptureCallersBinding()
public boolean isLVADataflowBarrier()
public java.lang.String toString()
toString
in class MultiOperandInstr
public Instr cloneForInlining(InlinerInfo ii)
Instr
cloneForInlining
in class Instr
public Label interpret(InterpreterContext interp, IRubyObject self)
public Label interpret_with_inline(InterpreterContext interp, IRubyObject self)
Copyright © 2002-2009 JRuby Team. All Rights Reserved.