public abstract class CallBase extends Instr implements Specializeable
Modifier and Type | Field and Description |
---|---|
protected Operand[] |
arguments |
protected CallSite |
callSite |
long |
callSiteId |
protected Operand |
closure |
protected MethAddr |
methAddr |
HashMap<DynamicMethod,Integer> |
profile |
protected Operand |
receiver |
EMPTY_OPERANDS
Modifier | Constructor and Description |
---|---|
protected |
CallBase(Operation op,
CallType callType,
MethAddr methAddr,
Operand receiver,
Operand[] args,
Operand closure) |
Modifier and Type | Method and Description |
---|---|
void |
blockInlining() |
boolean |
canBeEval() |
boolean |
canModifyCode() |
boolean |
canSetDollarVars() |
Operand[] |
cloneCallArgs(InlinerInfo ii) |
protected static boolean |
containsSplat(Operand[] arguments) |
Operand[] |
getCallArgs() |
CallSite |
getCallSite() |
CallType |
getCallType() |
Operand |
getClosureArg(Operand ifUnspecified) |
MethAddr |
getMethodAddr() |
Operand[] |
getOperands() |
Operand |
getReceiver() |
boolean |
hasClosure() |
boolean |
inliningBlocked() |
Object |
interpret(ThreadContext context,
DynamicScope dynamicScope,
IRubyObject self,
Object[] temp,
Block block) |
boolean |
isAllConstants() |
boolean |
isAllFixnums() |
boolean |
isRubyInternalsCall() |
boolean |
isStaticCallTarget() |
protected IRubyObject[] |
prepareArguments(ThreadContext context,
IRubyObject self,
Operand[] arguments,
DynamicScope dynamicScope,
Object[] temp) |
protected IRubyObject[] |
prepareArgumentsComplex(ThreadContext context,
IRubyObject self,
Operand[] args,
DynamicScope currDynScope,
Object[] temp) |
protected IRubyObject[] |
prepareArgumentsSimple(ThreadContext context,
IRubyObject self,
Operand[] args,
DynamicScope currDynScope,
Object[] temp) |
protected Block |
prepareBlock(ThreadContext context,
IRubyObject self,
DynamicScope currDynScope,
Object[] temp) |
void |
simplifyOperands(Map<Operand,Operand> valueMap,
boolean force)
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.
|
CallBase |
specializeForInterpretation()
Interpreter can ask the instruction if it knows how to make a more
efficient instruction for direct interpretation.
|
boolean |
targetRequiresCallersBinding() |
String |
toString() |
canBeDeleted, canRaiseException, cloneForBlockCloning, cloneForInlinedClosure, cloneForInlinedScope, cloneForInlining, getOperation, getUsedVariables, hasSideEffects, hasUnusedResult, interpretAndGetNewIPC, isDead, markDead, markUnusedResult, renameVars, simplifyAndGetResult, transfersControl, visit
public final long callSiteId
protected Operand receiver
protected Operand[] arguments
protected Operand closure
protected MethAddr methAddr
protected CallSite callSite
public HashMap<DynamicMethod,Integer> profile
public Operand[] getOperands()
getOperands
in class Instr
public MethAddr getMethodAddr()
public Operand getReceiver()
public Operand[] getCallArgs()
public CallSite getCallSite()
public CallType getCallType()
public void blockInlining()
public boolean inliningBlocked()
public boolean hasClosure()
public boolean isAllConstants()
public boolean isAllFixnums()
public CallBase specializeForInterpretation()
specializeForInterpretation
in interface Specializeable
public void simplifyOperands(Map<Operand,Operand> valueMap, boolean force)
Instr
simplifyOperands
in class Instr
public Operand[] cloneCallArgs(InlinerInfo ii)
public boolean isRubyInternalsCall()
public boolean isStaticCallTarget()
public boolean canModifyCode()
public boolean canBeEval()
public boolean targetRequiresCallersBinding()
public boolean canSetDollarVars()
protected static boolean containsSplat(Operand[] arguments)
public Object interpret(ThreadContext context, DynamicScope dynamicScope, IRubyObject self, Object[] temp, Block block)
protected IRubyObject[] prepareArguments(ThreadContext context, IRubyObject self, Operand[] arguments, DynamicScope dynamicScope, Object[] temp)
protected IRubyObject[] prepareArgumentsSimple(ThreadContext context, IRubyObject self, Operand[] args, DynamicScope currDynScope, Object[] temp)
protected IRubyObject[] prepareArgumentsComplex(ThreadContext context, IRubyObject self, Operand[] args, DynamicScope currDynScope, Object[] temp)
protected Block prepareBlock(ThreadContext context, IRubyObject self, DynamicScope currDynScope, Object[] temp)
Copyright © 2001-2016 JRuby. All Rights Reserved.