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, visitpublic 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 Instrpublic 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 Specializeablepublic void simplifyOperands(Map<Operand,Operand> valueMap, boolean force)
InstrsimplifyOperands in class Instrpublic 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-2013 JRuby. All Rights Reserved.