本文整理汇总了Java中jdk.nashorn.internal.ir.Symbol.isBytecodeLocal方法的典型用法代码示例。如果您正苦于以下问题:Java Symbol.isBytecodeLocal方法的具体用法?Java Symbol.isBytecodeLocal怎么用?Java Symbol.isBytecodeLocal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类jdk.nashorn.internal.ir.Symbol
的用法示例。
在下文中一共展示了Symbol.isBytecodeLocal方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: initializeMethodParameters
import jdk.nashorn.internal.ir.Symbol; //导入方法依赖的package包/类
/**
* Incoming method parameters are always declared on method entry; declare them in the local variable table.
* @param function function for which code is being generated.
*/
private void initializeMethodParameters(final FunctionNode function) {
final Label functionStart = new Label("fn_start");
method.label(functionStart);
int nextSlot = 0;
if(function.needsCallee()) {
initializeInternalFunctionParameter(CALLEE, function, functionStart, nextSlot++);
}
initializeInternalFunctionParameter(THIS, function, functionStart, nextSlot++);
if(function.isVarArg()) {
initializeInternalFunctionParameter(VARARGS, function, functionStart, nextSlot++);
} else {
for(final IdentNode param: function.getParameters()) {
final Symbol symbol = param.getSymbol();
if(symbol.isBytecodeLocal()) {
method.initializeMethodParameter(symbol, param.getType(), functionStart);
}
}
}
}
示例2: enterBlock
import jdk.nashorn.internal.ir.Symbol; //导入方法依赖的package包/类
@Override
public boolean enterBlock(final Block block) {
boolean cloned = false;
for(final Symbol symbol: block.getSymbols()) {
if(symbol.isBytecodeLocal()) {
if (getLocalVariableTypeOrNull(symbol) == null) {
if (!cloned) {
cloneOrNewLocalVariableTypes();
cloned = true;
}
localVariableTypes.put(symbol, LvarType.UNDEFINED);
}
// In case we're repeating analysis of a lexical scope (e.g. it's in a loop),
// make sure all symbols lexically scoped by the block become valid again.
invalidatedSymbols.remove(symbol);
}
}
return true;
}
示例3: enterBlock
import jdk.nashorn.internal.ir.Symbol; //导入方法依赖的package包/类
@Override
public boolean enterBlock(final Block block) {
for(final Symbol symbol: block.getSymbols()) {
if(symbol.isBytecodeLocal() && getLocalVariableTypeOrNull(symbol) == null) {
setType(symbol, LvarType.UNDEFINED);
}
}
return true;
}
示例4: enterIdentNode
import jdk.nashorn.internal.ir.Symbol; //导入方法依赖的package包/类
@Override
public boolean enterIdentNode(final IdentNode identNode) {
final Symbol symbol = identNode.getSymbol();
if(symbol.isBytecodeLocal()) {
symbolIsUsed(symbol);
setIdentifierLvarType(identNode, getLocalVariableType(symbol));
}
return false;
}
示例5: closeBlockVariables
import jdk.nashorn.internal.ir.Symbol; //导入方法依赖的package包/类
/**
* Closes any still open entries for this block's local variables in the bytecode local variable table.
*
* @param block block containing symbols.
*/
private void closeBlockVariables(final Block block) {
for (final Symbol symbol : block.getSymbols()) {
if (symbol.isBytecodeLocal()) {
method.closeLocalVariable(symbol, block.getBreakLabel());
}
}
}
示例6: enterIdentNode
import jdk.nashorn.internal.ir.Symbol; //导入方法依赖的package包/类
@Override
public boolean enterIdentNode(final IdentNode identNode) {
final Symbol symbol = identNode.getSymbol();
if(symbol.isBytecodeLocal()) {
symbolIsUsed(symbol);
final LvarType type = getLocalVariableType(symbol);
setIdentifierLvarType(identNode, type);
typeStack.push(type);
} else {
pushExpressionType(identNode);
}
return false;
}
示例7: getLocalVariableTypeIfBytecode
import jdk.nashorn.internal.ir.Symbol; //导入方法依赖的package包/类
/**
* Gets the type for a local variable if it is a bytecode local, otherwise null. Can be used in circumstances where
* the type is irrelevant if the symbol is not a bytecode local. Note that for bytecode locals, it delegates to
* {@link #getLocalVariableType(Symbol)}, so it will still assert that the type for such variable is already
* defined (that is, not null).
* @param symbol the symbol representing the variable.
* @return the current variable type, if it is a bytecode local, otherwise null.
*/
private LvarType getLocalVariableTypeIfBytecode(final Symbol symbol) {
return symbol.isBytecodeLocal() ? getLocalVariableType(symbol) : null;
}