public class FunctionEnvironment extends Environment
| Modifier and Type | Class and Description |
|---|---|
class |
FunctionEnvironment.JumpTargetCloseable<T extends BreakTarget> |
Environment.AbstractFrameVarRef, Environment.FrameSlotVarRef, Environment.GlobalLexVarRef, Environment.GlobalVarRef, Environment.MappedArgumentVarRef, Environment.VarRef, Environment.WrappedVarRefARGUMENTS_NAME, context, factory, NEW_TARGET_NAME, SUPER_NAME, THIS_NAME| Constructor and Description |
|---|
FunctionEnvironment(Environment parent,
NodeFactory factory,
JSContext context,
boolean isStrictMode,
boolean isEval,
boolean isDirectEval,
boolean isArrowFunction,
boolean isGeneratorFunction,
boolean isDerivedConstructor,
boolean isAsyncFunction,
boolean isGlobal,
boolean hasSyntheticArguments) |
| Modifier and Type | Method and Description |
|---|---|
void |
addAwait() |
void |
addReturn() |
void |
addYield() |
com.oracle.truffle.api.frame.FrameSlot |
declareLocalVar(Object name) |
void |
declareParameter(String name) |
com.oracle.truffle.api.frame.FrameSlot |
declareVar(Object name) |
protected com.oracle.truffle.api.frame.FrameSlot |
findBlockFrameSlot(String name) |
BreakTarget |
findBreakTarget(Object label) |
ContinueTarget |
findContinueTarget(Object label) |
void |
freeze() |
FunctionEnvironment |
function() |
protected com.oracle.truffle.api.frame.FrameSlot |
getArgumentsSlot() |
com.oracle.truffle.api.frame.FrameSlot |
getAsyncContextSlot() |
com.oracle.truffle.api.frame.FrameSlot |
getAsyncResultSlot() |
com.oracle.truffle.api.frame.FrameDescriptor |
getFunctionFrameDescriptor() |
String |
getFunctionName() |
String |
getInternalFunctionName() |
int |
getLeadingArgumentCount() |
com.oracle.truffle.api.frame.FrameSlot |
getNewTargetSlot() |
FunctionEnvironment |
getNonArrowParentFunction() |
int |
getOutermostFunctionLevel()
Returns the number of frame levels to skip to reach the outermost function (module/script).
|
int |
getParameterCount() |
protected int |
getParameterIndex(com.oracle.truffle.api.frame.FrameSlot slot) |
List<com.oracle.truffle.api.frame.FrameSlot> |
getParameters() |
FunctionEnvironment |
getParentFunction() |
FunctionEnvironment |
getParentFunction(int level) |
com.oracle.truffle.api.frame.FrameSlot[] |
getParentSlots() |
com.oracle.truffle.api.frame.FrameSlot |
getReturnSlot() |
com.oracle.truffle.api.frame.FrameSlot |
getSuperSlot() |
int |
getThisFunctionLevel()
Returns the number of function levels to skip to reach the function with the [[ThisValue]].
|
com.oracle.truffle.api.frame.FrameSlot |
getThisSlot() |
int |
getTrailingArgumentCount() |
Environment |
getVariableEnvironment() |
com.oracle.truffle.api.frame.FrameSlot |
getYieldResultSlot() |
boolean |
hasArgumentsSlot() |
boolean |
hasAwait() |
boolean |
hasLocalVar(String name) |
boolean |
hasRestParameter() |
boolean |
hasReturn() |
boolean |
hasSimpleParameterList() |
boolean |
hasSyntheticArguments() |
boolean |
hasYield() |
boolean |
inDirectEval() |
boolean |
isArrowFunction() |
boolean |
isAsyncFunction() |
boolean |
isAsyncGeneratorFunction() |
boolean |
isCallerContextEval() |
boolean |
isDeepFrozen() |
boolean |
isDerivedConstructor() |
boolean |
isDirectArgumentsAccess() |
boolean |
isDirectEval() |
boolean |
isDynamicallyScoped()
Function is dynamically scope because it's non-strict and has a direct eval call.
|
boolean |
isDynamicScopeContext()
Environment chain contains a dynamic scope (eval or with) that may shadow variables.
|
boolean |
isEval() |
boolean |
isFrozen() |
boolean |
isGeneratorFunction() |
boolean |
isGlobal() |
boolean |
isIndirectEval() |
protected boolean |
isNamedFunctionExpression() |
protected boolean |
isParam(com.oracle.truffle.api.frame.FrameSlot slot) |
boolean |
isParameter(String name) |
boolean |
isStrictMode() |
boolean |
needsParentFrame() |
FunctionEnvironment.JumpTargetCloseable<BreakTarget> |
pushBreakTarget(Object label) |
FunctionEnvironment.JumpTargetCloseable<ContinueTarget> |
pushContinueTarget(Object label) |
com.oracle.truffle.api.frame.FrameSlot |
reserveArgumentsSlot() |
com.oracle.truffle.api.frame.FrameSlot |
reserveDynamicScopeSlot() |
void |
reserveNewTargetSlot() |
void |
reserveSuperSlot() |
void |
reserveThisSlot() |
boolean |
returnsLastStatementResult() |
void |
setDirectArgumentsAccess(boolean directArgumentsAccess) |
void |
setFunctionName(String functionName) |
void |
setInternalFunctionName(String internalFunctionName) |
void |
setIsDynamicallyScoped(boolean isDynamicallyScoped) |
void |
setNamedFunctionExpression(boolean isNamedExpression) |
void |
setNeedsParentFrame(boolean needsParentFrame) |
void |
setRestParameter(boolean restParameter) |
void |
setSimpleParameterList(boolean simpleParameterList) |
addFrameSlotFromSymbol, addFrameSlotsFromSymbols, addFrameSlotsFromSymbols, createLocal, createLocal, createTempVar, findArgumentsVar, findAsyncContextVar, findAsyncResultVar, findDynamicScopeVar, findInternalSlot, findInternalSlot, findLocalVar, findNewTargetVar, findSuperVar, findTempVar, findThisVar, findVar, findVar, findYieldValueVar, getBlockFrameDescriptor, getParent, getParentAt, getParentSlots, getScopeLevelpublic FunctionEnvironment(Environment parent, NodeFactory factory, JSContext context, boolean isStrictMode, boolean isEval, boolean isDirectEval, boolean isArrowFunction, boolean isGeneratorFunction, boolean isDerivedConstructor, boolean isAsyncFunction, boolean isGlobal, boolean hasSyntheticArguments)
public FunctionEnvironment function()
function in class Environmentpublic com.oracle.truffle.api.frame.FrameSlot declareLocalVar(Object name)
declareLocalVar in class Environmentpublic com.oracle.truffle.api.frame.FrameSlot declareVar(Object name)
declareVar in class Environmentpublic com.oracle.truffle.api.frame.FrameSlot reserveArgumentsSlot()
public com.oracle.truffle.api.frame.FrameSlot getReturnSlot()
public void reserveThisSlot()
public void reserveNewTargetSlot()
public com.oracle.truffle.api.frame.FrameSlot getAsyncResultSlot()
public com.oracle.truffle.api.frame.FrameSlot getAsyncContextSlot()
public com.oracle.truffle.api.frame.FrameSlot getYieldResultSlot()
public com.oracle.truffle.api.frame.FrameSlot getThisSlot()
public com.oracle.truffle.api.frame.FrameSlot reserveDynamicScopeSlot()
public boolean isEval()
public boolean isArrowFunction()
public boolean isGeneratorFunction()
protected com.oracle.truffle.api.frame.FrameSlot findBlockFrameSlot(String name)
findBlockFrameSlot in class Environmentpublic boolean hasLocalVar(String name)
hasLocalVar in class Environmentpublic FunctionEnvironment.JumpTargetCloseable<ContinueTarget> pushContinueTarget(Object label)
public FunctionEnvironment.JumpTargetCloseable<BreakTarget> pushBreakTarget(Object label)
public BreakTarget findBreakTarget(Object label)
public ContinueTarget findContinueTarget(Object label)
public boolean hasReturn()
public void addReturn()
public boolean hasAwait()
public void addAwait()
public boolean hasYield()
public void addYield()
public void setDirectArgumentsAccess(boolean directArgumentsAccess)
public boolean isDirectArgumentsAccess()
public final int getParameterCount()
public final List<com.oracle.truffle.api.frame.FrameSlot> getParameters()
public final void declareParameter(String name)
protected final boolean isParam(com.oracle.truffle.api.frame.FrameSlot slot)
protected final int getParameterIndex(com.oracle.truffle.api.frame.FrameSlot slot)
public final boolean isParameter(String name)
public final String getFunctionName()
public final void setFunctionName(String functionName)
public final String getInternalFunctionName()
public final void setInternalFunctionName(String internalFunctionName)
public final void setNamedFunctionExpression(boolean isNamedExpression)
protected final boolean isNamedFunctionExpression()
public final boolean needsParentFrame()
public final void setNeedsParentFrame(boolean needsParentFrame)
public void freeze()
public boolean isFrozen()
public boolean isDeepFrozen()
public final boolean hasArgumentsSlot()
protected final com.oracle.truffle.api.frame.FrameSlot getArgumentsSlot()
public final com.oracle.truffle.api.frame.FrameDescriptor getFunctionFrameDescriptor()
getFunctionFrameDescriptor in class Environmentpublic final boolean isStrictMode()
isStrictMode in class Environmentpublic final FunctionEnvironment getParentFunction()
public final FunctionEnvironment getParentFunction(int level)
public final FunctionEnvironment getNonArrowParentFunction()
public com.oracle.truffle.api.frame.FrameSlot[] getParentSlots()
getParentSlots in class Environmentpublic boolean isGlobal()
public boolean hasSyntheticArguments()
public boolean returnsLastStatementResult()
public void setIsDynamicallyScoped(boolean isDynamicallyScoped)
public boolean isDynamicallyScoped()
isDynamicallyScoped in class Environmentpublic boolean isDynamicScopeContext()
EnvironmentisDynamicScopeContext in class Environmentpublic Environment getVariableEnvironment()
getVariableEnvironment in class Environmentpublic boolean isDirectEval()
public boolean isIndirectEval()
public boolean isCallerContextEval()
public boolean inDirectEval()
public void reserveSuperSlot()
public com.oracle.truffle.api.frame.FrameSlot getSuperSlot()
public com.oracle.truffle.api.frame.FrameSlot getNewTargetSlot()
public void setRestParameter(boolean restParameter)
public boolean hasRestParameter()
public void setSimpleParameterList(boolean simpleParameterList)
public boolean hasSimpleParameterList()
public int getLeadingArgumentCount()
public int getTrailingArgumentCount()
public boolean isDerivedConstructor()
public int getThisFunctionLevel()
public int getOutermostFunctionLevel()
public boolean isAsyncFunction()
public boolean isAsyncGeneratorFunction()