|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface MethodCompiler
Method Summary | |
---|---|
void |
aliasGlobal(java.lang.String newName,
java.lang.String oldName)
|
void |
appendToArray()
|
void |
appendToObjectArray()
|
void |
aprintln()
For logging, println the object reference currently atop the stack |
void |
aryToAry()
|
void |
assignClassVariable(java.lang.String name)
|
void |
assignClassVariable(java.lang.String name,
CompilerCallback value)
|
void |
assignConstantInCurrent(java.lang.String name)
|
void |
assignConstantInModule(java.lang.String name)
|
void |
assignConstantInObject(java.lang.String name)
|
void |
assignGlobalVariable(java.lang.String name)
Assign the top of the stack to the global variable with the specified name. |
void |
assignGlobalVariable(java.lang.String name,
CompilerCallback value)
Assign the top of the stack to the global variable with the specified name. |
void |
assignInstanceVariable(java.lang.String name)
Assign the value on top of the stack to the instance variable with the specified name on the current "self". |
void |
assignInstanceVariable(java.lang.String name,
CompilerCallback value)
Assign the value on top of the stack to the instance variable with the specified name on the current "self". |
void |
asString()
|
void |
attached()
|
void |
backref()
Push the current back reference |
void |
backrefMethod(java.lang.String methodName)
Call a static helper method on RubyRegexp with the current backref |
void |
branchIfModule(CompilerCallback receiverCallback,
BranchCallback moduleCallback,
BranchCallback notModuleCallback)
|
void |
callZSuper(CompilerCallback closure)
|
MethodCompiler |
chainToMethod(java.lang.String name,
ASTInspector inspector)
|
void |
checkIsExceptionHandled()
|
void |
checkWhenWithSplat()
|
void |
concatArrays()
|
void |
consumeCurrentValue()
As code executes, values are assumed to be "generated", often by being pushed on to some execution stack. |
void |
convertToJavaArray()
|
void |
createEmptyArray()
Create an empty Ruby array |
void |
createEmptyHash()
Create an empty Ruby Hash object and put a reference on top of the stack. |
void |
createNewArray(boolean lightweight)
Given an aggregated set of objects (likely created through a call to createObjectArray) create a Ruby array object. |
void |
createNewArray(java.lang.Object[] sourceArray,
ArrayCallback callback,
boolean lightweight)
Given an aggregated set of objects (likely created through a call to createObjectArray) create a Ruby array object. |
void |
createNewBignum(java.math.BigInteger value)
Generate a new "Bignum" value. |
void |
createNewClosure(int line,
StaticScope scope,
int arity,
CompilerCallback body,
CompilerCallback args,
boolean hasMultipleArgsHead,
NodeType argsNodeId,
ASTInspector inspector)
Create a new closure (block) using the given lexical scope information, call arity, and body generated by the body callback. |
void |
createNewEndBlock(CompilerCallback body)
|
void |
createNewFixnum(long value)
Generate a new "Fixnum" value. |
void |
createNewFloat(double value)
Generate a new "Float" value. |
void |
createNewForLoop(int arity,
CompilerCallback body,
CompilerCallback args,
boolean hasMultipleArgsHead,
NodeType argsNodeId)
Create a new closure (block) for a for loop with the given call arity and body generated by the body callback. |
void |
createNewHash(java.lang.Object elements,
ArrayCallback callback,
int keyCount)
Create a new hash by calling back to the specified ArrayCallback. |
void |
createNewRange(boolean isExclusive)
Create a new range. |
void |
createNewRegexp(ByteList value,
int options)
|
void |
createNewString(ArrayCallback callback,
int count)
Generate a new dynamic "String" value. |
void |
createNewString(ByteList value)
Generate a new "String" value. |
void |
createNewSymbol(ArrayCallback callback,
int count)
|
void |
createNewSymbol(java.lang.String name)
Generate a new "Symbol" value (or fetch the existing one). |
void |
createObjectArray(int elementCount)
Combine the top |
void |
createObjectArray(java.lang.Object[] elementArray,
ArrayCallback callback)
|
void |
declareClassVariable(java.lang.String name)
|
void |
declareClassVariable(java.lang.String name,
CompilerCallback value)
|
void |
defineAlias(java.lang.String newName,
java.lang.String oldName)
Define an alias for a new name to an existing oldName'd method. |
void |
defineClass(java.lang.String name,
StaticScope staticScope,
CompilerCallback superCallback,
CompilerCallback pathCallback,
CompilerCallback bodyCallback,
CompilerCallback receiverCallback)
|
void |
defineModule(java.lang.String name,
StaticScope staticScope,
CompilerCallback pathCallback,
CompilerCallback bodyCallback)
|
void |
defineNewMethod(java.lang.String name,
int methodArity,
StaticScope scope,
CompilerCallback body,
CompilerCallback args,
CompilerCallback receiver,
ASTInspector inspector,
boolean root)
Define a new method with the given name, arity, local variable count, and body callback. |
void |
duplicateCurrentValue()
Push a copy the topmost value on the stack. |
void |
endMethod()
End compilation for the method associated with the specified token. |
void |
ensureMultipleAssignableRubyArray(boolean masgnHasHead)
Ensures that the present value is an IRubyObject[] by wrapping it with one or coercing it if it is not. |
void |
ensureRubyArray()
Ensures that the present value is an IRubyObject[] by wrapping it with one if it is not. |
void |
forEachInValueArray(int count,
int start,
java.lang.Object source,
ArrayCallback callback,
ArrayCallback nilCallback,
CompilerCallback argsCallback)
Given an IRubyObject[] on the stack (or otherwise available as the present object) call back to the provided ArrayCallback 'callback' for 'count' elements, starting with 'start'. |
void |
getFrameKlazz()
|
void |
getFrameName()
|
void |
getInstanceVariable(java.lang.String name)
|
InvocationCompiler |
getInvocationCompiler()
|
java.lang.Object |
getNewEnding()
|
VariableCompiler |
getVariableCompiler()
|
void |
getVisibilityFor(java.lang.String name)
|
void |
go(java.lang.Object gotoToken)
|
void |
hasBlock(BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
ifNotNull(java.lang.Object gotoToken)
|
void |
ifNotSuperMethodBound(java.lang.Object token)
|
void |
ifNull(java.lang.Object gotoToken)
|
void |
ifSingleton(java.lang.Object gotoToken)
|
void |
inDefined()
|
void |
isCaptured(int number,
BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isClassVarDefined(java.lang.String name,
BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isConstantBranch(BranchCallback setup,
BranchCallback isConstant,
BranchCallback isMethod,
BranchCallback none,
java.lang.String name)
|
void |
isConstantDefined(java.lang.String name,
BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isGlobalDefined(java.lang.String name,
BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isInstanceOf(java.lang.Class clazz,
BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isInstanceVariableDefined(java.lang.String name,
BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isMethodBound(java.lang.String name,
BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isNil(BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isNotProtected(java.lang.Object gotoToken,
int toConsume)
|
void |
isNull(BranchCallback trueBranch,
BranchCallback falseBranch)
|
void |
isPrivate(java.lang.Object gotoToken,
int toConsume)
|
void |
issueBreakEvent(CompilerCallback value)
|
void |
issueNextEvent(CompilerCallback value)
|
void |
issueRedoEvent()
|
void |
issueRetryEvent()
|
void |
lineNumber(ISourcePosition position)
This method provides a way to specify a line number for the current piece of code being compiled. |
void |
loadClass(java.lang.String name)
|
void |
loadCurrentModule()
|
void |
loadException()
|
void |
loadFalse()
Load a Ruby "false" value on top of the stack. |
void |
loadNil()
Load a Ruby "nil" value on top of the stack. |
void |
loadNull()
|
void |
loadObject()
Load the Object class |
void |
loadSelf()
|
void |
loadSymbol(java.lang.String symbol)
Load the given string as a symbol on to the top of the stack. |
void |
loadTrue()
Load a Ruby "true" value on top of the stack. |
void |
match()
|
void |
match2()
|
void |
match3()
|
void |
metaclass()
|
void |
negateCurrentValue()
Perform a logical Ruby "not" operation on the value on top of the stack, leaving the negated result. |
void |
notIsModuleAndClassVarDefined(java.lang.String name,
java.lang.Object gotoToken)
|
void |
nthRef(int match)
|
void |
nullToNil()
|
void |
outDefined()
|
void |
performBackref(char type)
|
void |
performBooleanBranch(BranchCallback trueBranch,
BranchCallback falseBranch)
Perform a boolean branch operation based on the Ruby "true" value of the top value on the stack. |
void |
performBooleanLoop(BranchCallback condition,
BranchCallback body,
boolean checkFirst)
Perform a boolean loop using the given condition-calculating branch and body branch. |
void |
performBooleanLoopLight(BranchCallback condition,
BranchCallback body,
boolean checkFirst)
Perform a boolean loop using the given condition-calculating branch and body branch. |
void |
performBooleanLoopSafe(BranchCallback condition,
BranchCallback body,
boolean checkFirst)
Perform a boolean loop using the given condition-calculating branch and body branch. |
void |
performLogicalAnd(BranchCallback longBranch)
Perform a logical short-circuited Ruby "and" operation, using Ruby notions of true and false. |
void |
performLogicalOr(BranchCallback longBranch)
Perform a logical short-circuited Ruby "or" operation, using Ruby notions of true and false. |
void |
performReturn()
Return the current value on the top of the stack, taking into consideration surrounding blocks. |
void |
pollThreadEvents()
|
void |
protect(BranchCallback regularCode,
BranchCallback protectedCode,
java.lang.Class ret)
Makes sure that the code in protectedCode will always run after regularCode. |
void |
pushNull()
|
void |
pushString(java.lang.String strVal)
|
void |
rescue(BranchCallback regularCode,
java.lang.Class exception,
BranchCallback protectedCode,
java.lang.Class ret)
|
void |
rethrowException()
|
void |
rethrowIfSystemExit()
|
void |
retrieveClassVariable(java.lang.String name)
|
void |
retrieveConstant(java.lang.String name)
Retrieve the constant with the specified name available at the current point in the program's execution. |
void |
retrieveConstantFromModule(java.lang.String name)
Retreive a named constant from the RubyModule/RubyClass that's just been pushed. |
void |
retrieveGlobalVariable(java.lang.String name)
Retrieve the global variable with the specified name to the top of the stack. |
void |
retrieveInstanceVariable(java.lang.String name)
Retrieve the instance variable with the given name, based on the current "self". |
void |
retrieveSelf()
Retrieve the current "self" and put a reference on top of the stack. |
void |
retrieveSelfClass()
Retrieve the current "self" object's metaclass and put a reference on top of the stack |
void |
runBeginBlock(StaticScope scope,
CompilerCallback body)
|
void |
selfIsKindOf(java.lang.Object gotoToken)
|
void |
setEnding(java.lang.Object endingToken)
|
void |
setFilePosition(ISourcePosition position)
|
void |
setLinePosition(ISourcePosition position)
|
void |
singlifySplattedValue()
Given a splatted value, extract a single value. |
void |
splatCurrentValue()
Convert the current value into a "splatted value" suitable for passing as method arguments or disassembling into multiple variables. |
void |
stringOrNil()
|
void |
superClass()
|
void |
swapValues()
Swap the top and second values on the stack. |
void |
toJavaString()
|
void |
undefMethod(java.lang.String name)
|
void |
unwrapPassedBlock()
|
void |
unwrapRaiseException()
|
Method Detail |
---|
void endMethod()
token
- A token identifying the method to be terminated.void consumeCurrentValue()
void duplicateCurrentValue()
void aprintln()
void swapValues()
void lineNumber(ISourcePosition position)
position
- The ISourcePosition information to use.VariableCompiler getVariableCompiler()
InvocationCompiler getInvocationCompiler()
void retrieveSelf()
void retrieveSelfClass()
void retrieveClassVariable(java.lang.String name)
void assignClassVariable(java.lang.String name)
void assignClassVariable(java.lang.String name, CompilerCallback value)
void declareClassVariable(java.lang.String name)
void declareClassVariable(java.lang.String name, CompilerCallback value)
void createNewFixnum(long value)
void createNewFloat(double value)
void createNewBignum(java.math.BigInteger value)
void createNewString(ByteList value)
void createNewString(ArrayCallback callback, int count)
void createNewSymbol(ArrayCallback callback, int count)
void createNewSymbol(java.lang.String name)
void createObjectArray(java.lang.Object[] elementArray, ArrayCallback callback)
void createObjectArray(int elementCount)
elementCountelements into a single element, generally an array or similar construct. The specified number of elements are consumed and an aggregate element remains.
elementCount
- The number of elements to consumevoid createNewArray(boolean lightweight)
void createNewArray(java.lang.Object[] sourceArray, ArrayCallback callback, boolean lightweight)
void createEmptyArray()
void createEmptyHash()
void createNewHash(java.lang.Object elements, ArrayCallback callback, int keyCount)
elements
- An object holding the elements from which to create the Hash.callback
- An ArrayCallback implementation to which the elements array and iteration counts
are passed in sequence.keyCount
- the total count of key-value pairs to be constructed from the elements collection.void createNewRange(boolean isExclusive)
isExclusive
- Whether the range is exclusive or not (inclusive)void performBooleanBranch(BranchCallback trueBranch, BranchCallback falseBranch)
trueBranch
- The callback for generating code for the "true" conditionfalseBranch
- The callback for generating code for the "false" conditionvoid performLogicalAnd(BranchCallback longBranch)
longBranch
- The branch to execute if the "and" operation does not short-circuit.void performLogicalOr(BranchCallback longBranch)
longBranch
- The branch to execute if the "or" operation does not short-circuit.void performBooleanLoopSafe(BranchCallback condition, BranchCallback body, boolean checkFirst)
condition
- The code to execute for calculating the loop condition. A Ruby true result will
cause the body to be executed again.body
- The body to executed for the loop.checkFirst
- whether to check the condition the first time through or not.void performBooleanLoop(BranchCallback condition, BranchCallback body, boolean checkFirst)
condition
- The code to execute for calculating the loop condition. A Ruby true result will
cause the body to be executed again.body
- The body to executed for the loop.checkFirst
- whether to check the condition the first time through or not.void performBooleanLoopLight(BranchCallback condition, BranchCallback body, boolean checkFirst)
condition
- The code to execute for calculating the loop condition. A Ruby true result will
cause the body to be executed again.body
- The body to executed for the loop.checkFirst
- whether to check the condition the first time through or not.void performReturn()
void createNewClosure(int line, StaticScope scope, int arity, CompilerCallback body, CompilerCallback args, boolean hasMultipleArgsHead, NodeType argsNodeId, ASTInspector inspector)
scope
- The static scoping informationarity
- The arity of the block's argument listbody
- The callback which will generate the closure's bodyvoid createNewForLoop(int arity, CompilerCallback body, CompilerCallback args, boolean hasMultipleArgsHead, NodeType argsNodeId)
scope
- The static scoping informationarity
- The arity of the block's argument listbody
- The callback which will generate the closure's bodyvoid defineNewMethod(java.lang.String name, int methodArity, StaticScope scope, CompilerCallback body, CompilerCallback args, CompilerCallback receiver, ASTInspector inspector, boolean root)
name
- The name to which to bind the resulting method.arity
- The arity of the method's argument listlocalVarCount
- The number of local variables within the methodbody
- The callback which will generate the method's body.void defineAlias(java.lang.String newName, java.lang.String oldName)
newName
- The new alias to createoldName
- The name of the existing method or aliasvoid assignConstantInCurrent(java.lang.String name)
void assignConstantInModule(java.lang.String name)
void assignConstantInObject(java.lang.String name)
void retrieveConstant(java.lang.String name)
name
- The name of the constantvoid retrieveConstantFromModule(java.lang.String name)
name
- The name of the constantvoid loadFalse()
void loadTrue()
void loadNil()
void loadNull()
void loadSymbol(java.lang.String symbol)
symbol
- The symbol to load.void loadObject()
void retrieveInstanceVariable(java.lang.String name)
name
- The name of the instance variable to retrieve.void assignInstanceVariable(java.lang.String name)
name
- The name of the value to assign.void assignInstanceVariable(java.lang.String name, CompilerCallback value)
name
- The name of the value to assign.value
- A callback for compiling the value to assignvoid assignGlobalVariable(java.lang.String name)
name
- The name of the global variable.void assignGlobalVariable(java.lang.String name, CompilerCallback value)
name
- The name of the global variable.value
- The callback to compile the value to assignvoid retrieveGlobalVariable(java.lang.String name)
name
- The name of the global variable.void negateCurrentValue()
void splatCurrentValue()
void singlifySplattedValue()
void forEachInValueArray(int count, int start, java.lang.Object source, ArrayCallback callback, ArrayCallback nilCallback, CompilerCallback argsCallback)
void ensureRubyArray()
void ensureMultipleAssignableRubyArray(boolean masgnHasHead)
void issueBreakEvent(CompilerCallback value)
void issueNextEvent(CompilerCallback value)
void issueRedoEvent()
void issueRetryEvent()
void asString()
void nthRef(int match)
void match()
void match2()
void match3()
void createNewRegexp(ByteList value, int options)
void pollThreadEvents()
void branchIfModule(CompilerCallback receiverCallback, BranchCallback moduleCallback, BranchCallback notModuleCallback)
void backref()
void backrefMethod(java.lang.String methodName)
void nullToNil()
void protect(BranchCallback regularCode, BranchCallback protectedCode, java.lang.Class ret)
void rescue(BranchCallback regularCode, java.lang.Class exception, BranchCallback protectedCode, java.lang.Class ret)
void inDefined()
void outDefined()
void stringOrNil()
void pushNull()
void pushString(java.lang.String strVal)
void isMethodBound(java.lang.String name, BranchCallback trueBranch, BranchCallback falseBranch)
void hasBlock(BranchCallback trueBranch, BranchCallback falseBranch)
void isGlobalDefined(java.lang.String name, BranchCallback trueBranch, BranchCallback falseBranch)
void isConstantDefined(java.lang.String name, BranchCallback trueBranch, BranchCallback falseBranch)
void isInstanceVariableDefined(java.lang.String name, BranchCallback trueBranch, BranchCallback falseBranch)
void isClassVarDefined(java.lang.String name, BranchCallback trueBranch, BranchCallback falseBranch)
java.lang.Object getNewEnding()
void ifNull(java.lang.Object gotoToken)
void isNil(BranchCallback trueBranch, BranchCallback falseBranch)
void isNull(BranchCallback trueBranch, BranchCallback falseBranch)
void ifNotNull(java.lang.Object gotoToken)
void setEnding(java.lang.Object endingToken)
void go(java.lang.Object gotoToken)
void isConstantBranch(BranchCallback setup, BranchCallback isConstant, BranchCallback isMethod, BranchCallback none, java.lang.String name)
void metaclass()
void getVisibilityFor(java.lang.String name)
void isPrivate(java.lang.Object gotoToken, int toConsume)
void isNotProtected(java.lang.Object gotoToken, int toConsume)
void selfIsKindOf(java.lang.Object gotoToken)
void loadCurrentModule()
void notIsModuleAndClassVarDefined(java.lang.String name, java.lang.Object gotoToken)
void loadSelf()
void ifSingleton(java.lang.Object gotoToken)
void getInstanceVariable(java.lang.String name)
void getFrameName()
void getFrameKlazz()
void superClass()
void attached()
void ifNotSuperMethodBound(java.lang.Object token)
void isInstanceOf(java.lang.Class clazz, BranchCallback trueBranch, BranchCallback falseBranch)
void isCaptured(int number, BranchCallback trueBranch, BranchCallback falseBranch)
void concatArrays()
void appendToArray()
void convertToJavaArray()
void aryToAry()
void toJavaString()
void aliasGlobal(java.lang.String newName, java.lang.String oldName)
void undefMethod(java.lang.String name)
void defineClass(java.lang.String name, StaticScope staticScope, CompilerCallback superCallback, CompilerCallback pathCallback, CompilerCallback bodyCallback, CompilerCallback receiverCallback)
void defineModule(java.lang.String name, StaticScope staticScope, CompilerCallback pathCallback, CompilerCallback bodyCallback)
void unwrapPassedBlock()
void performBackref(char type)
void callZSuper(CompilerCallback closure)
void appendToObjectArray()
void checkIsExceptionHandled()
void rethrowException()
void loadClass(java.lang.String name)
void unwrapRaiseException()
void loadException()
void setFilePosition(ISourcePosition position)
void setLinePosition(ISourcePosition position)
void checkWhenWithSplat()
void createNewEndBlock(CompilerCallback body)
void runBeginBlock(StaticScope scope, CompilerCallback body)
void rethrowIfSystemExit()
MethodCompiler chainToMethod(java.lang.String name, ASTInspector inspector)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |