本文整理汇总了Java中jdk.nashorn.internal.ir.ThrowNode类的典型用法代码示例。如果您正苦于以下问题:Java ThrowNode类的具体用法?Java ThrowNode怎么用?Java ThrowNode使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ThrowNode类属于jdk.nashorn.internal.ir包,在下文中一共展示了ThrowNode类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: throwStatement
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
/**
* ThrowStatement :
* throw Expression ; // [no LineTerminator here]
*
* See 12.13
*
* Parse throw statement.
*/
private void throwStatement() {
// Capture THROW token.
final int throwLine = line;
final long throwToken = token;
// THROW tested in caller.
nextOrEOL();
Expression expression = null;
// SEMICOLON or expression.
switch (type) {
case RBRACE:
case SEMICOLON:
case EOL:
break;
default:
expression = expression();
break;
}
if (expression == null) {
throw error(AbstractParser.message("expected.operand", type.getNameOrType()));
}
endOfLine();
appendStatement(new ThrowNode(throwLine, throwToken, finish, expression, false));
}
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:38,代码来源:Parser.java
示例2: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode throwNode) {
enterDefault(throwNode);
type("ThrowStatement");
comma();
property("argument");
throwNode.getExpression().accept(this);
return leave();
}
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:13,代码来源:JSONWriter.java
示例3: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode throwNode) {
if(!reachable) {
return false;
}
throwNode.getExpression().accept(this);
jumpToCatchBlock(throwNode);
doesNotContinueSequentially();
return false;
}
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:12,代码来源:LocalVariableTypesCalculator.java
示例4: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode throwNode) {
if(!reachable) {
return false;
}
visitExpressionOnEmptyStack(throwNode.getExpression());
jumpToCatchBlock(throwNode);
doesNotContinueSequentially();
return false;
}
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:12,代码来源:LocalVariableTypesCalculator.java
示例5: throwStatement
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
/**
* ThrowStatement :
* throw Expression ; // [no LineTerminator here]
*
* See 12.13
*
* Parse throw statement.
*/
private void throwStatement() {
// Capture THROW token.
final int throwLine = line;
final long throwToken = token;
// THROW tested in caller.
nextOrEOL();
Expression expression = null;
// SEMICOLON or expression.
switch (type) {
case RBRACE:
case SEMICOLON:
case EOL:
break;
default:
expression = expression();
break;
}
if (expression == null) {
throw error(AbstractParser.message("expected.operand", type.getNameOrType()));
}
endOfLine();
appendStatement(new ThrowNode(throwLine, throwToken, finish, expression, 0));
}
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:38,代码来源:Parser.java
示例6: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode throwNode) {
lineNumber(throwNode);
if (throwNode.isSyntheticRethrow()) {
//do not wrap whatever this is in an ecma exception, just rethrow it
load(throwNode.getExpression());
method.athrow();
return false;
}
method._new(ECMAException.class).dup();
final Source source = lc.getCurrentFunction().getSource();
final Expression expression = throwNode.getExpression();
final int position = throwNode.position();
final int line = throwNode.getLineNumber();
final int column = source.getColumn(position);
load(expression, Type.OBJECT);
method.load(source.getName());
method.load(line);
method.load(column);
method.invoke(ECMAException.THROW_INIT);
method.athrow();
return false;
}
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:32,代码来源:CodeGenerator.java
示例7: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode throwNode) {
lineNumber(throwNode);
if (throwNode.isSyntheticRethrow()) {
//do not wrap whatever this is in an ecma exception, just rethrow it
load(throwNode.getExpression());
method.athrow();
return false;
}
method._new(ECMAException.class).dup();
final Source source = lc.getCurrentFunction().getSource();
final Expression expression = throwNode.getExpression();
final int position = throwNode.position();
final int line = throwNode.getLineNumber();
final int column = source.getColumn(position);
load(expression);
assert expression.getType().isObject();
method.load(source.getName());
method.load(line);
method.load(column);
method.invoke(ECMAException.THROW_INIT);
method.athrow();
return false;
}
开发者ID:wro4j,项目名称:nashorn-backport,代码行数:33,代码来源:CodeGenerator.java
示例8: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode node) {
node.toString(sb, printTypes);
printLocalVariableConversion(node);
return false;
}
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:7,代码来源:PrintVisitor.java
示例9: leaveThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public Node leaveThrowNode(final ThrowNode throwNode) {
return addStatement(throwNode); //ThrowNodes are always terminal, marked as such in constructor
}
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:5,代码来源:Lower.java
示例10: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode throwNode) {
if(!method.isReachable()) {
return false;
}
enterStatement(throwNode);
if (throwNode.isSyntheticRethrow()) {
method.beforeJoinPoint(throwNode);
//do not wrap whatever this is in an ecma exception, just rethrow it
final IdentNode exceptionExpr = (IdentNode)throwNode.getExpression();
final Symbol exceptionSymbol = exceptionExpr.getSymbol();
method.load(exceptionSymbol, EXCEPTION_TYPE);
method.checkcast(EXCEPTION_TYPE.getTypeClass());
method.athrow();
return false;
}
final Source source = getCurrentSource();
final Expression expression = throwNode.getExpression();
final int position = throwNode.position();
final int line = throwNode.getLineNumber();
final int column = source.getColumn(position);
// NOTE: we first evaluate the expression, and only after it was evaluated do we create the new ECMAException
// object and then somewhat cumbersomely move it beneath the evaluated expression on the stack. The reason for
// this is that if expression is optimistic (or contains an optimistic subexpression), we'd potentially access
// the not-yet-<init>ialized object on the stack from the UnwarrantedOptimismException handler, and bytecode
// verifier forbids that.
loadExpressionAsObject(expression);
method.load(source.getName());
method.load(line);
method.load(column);
method.invoke(ECMAException.CREATE);
method.beforeJoinPoint(throwNode);
method.athrow();
return false;
}
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:43,代码来源:CodeGenerator.java
示例11: leaveThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public Node leaveThrowNode(final ThrowNode throwNode) {
weight += THROW_WEIGHT;
return throwNode;
}
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:6,代码来源:WeighNodes.java
示例12: enterThrowNode
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
@Override
public boolean enterThrowNode(final ThrowNode throwNode) {
curStat = new ThrowTreeImpl(throwNode,
translateExpr(throwNode.getExpression()));
return false;
}
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:7,代码来源:IRTranslator.java
示例13: ThrowTreeImpl
import jdk.nashorn.internal.ir.ThrowNode; //导入依赖的package包/类
ThrowTreeImpl(final ThrowNode node, final ExpressionTree expr) {
super(node);
this.expr = expr;
}
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:5,代码来源:ThrowTreeImpl.java
注:本文中的jdk.nashorn.internal.ir.ThrowNode类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论