@Override public void visit(TryCatchStatement statement) { List<Statement> statements = processSequence(statement.getProtectedBody()); statement.getProtectedBody().clear(); statement.getProtectedBody().addAll(statements); statements = processSequence(statement.getHandler()); statement.getHandler().clear(); statement.getHandler().addAll(statements); resultStmt = statement; }
@Override public void visit(TryCatchStatement statement) { Map<BlockStatement, List<Statement>> oldBlockSuccessors = blockSuccessors; Set<IdentifiedStatement> oldOuterStatements = outerStatements; outerStatements = new LinkedHashSet<>(); blockSuccessors = new LinkedHashMap<>(); processSequence(statement.getProtectedBody()); outerStatements = oldOuterStatements; blockSuccessors = oldBlockSuccessors; processSequence(statement.getHandler()); }
private void wieldTryCatch(List<Statement> statements) { for (int i = 0; i < statements.size() - 1; ++i) { if (statements.get(i) instanceof TryCatchStatement && statements.get(i + 1) instanceof TryCatchStatement) { TryCatchStatement first = (TryCatchStatement) statements.get(i); TryCatchStatement second = (TryCatchStatement) statements.get(i + 1); if (Objects.equals(first.getExceptionType(), second.getExceptionType()) && Objects.equals(first.getExceptionVariable(), second.getExceptionVariable()) && briefStatementComparison(first.getHandler(), second.getHandler())) { first.getProtectedBody().addAll(second.getProtectedBody()); statements.remove(i + 1); wieldTryCatch(first.getProtectedBody()); --i; } } } }
@Override public void visit(TryCatchStatement statement) { handleList(statement.getProtectedBody()); handleList(statement.getHandler()); }
@Override public void visit(TryCatchStatement statement) { visit(statement.getProtectedBody()); visit(statement.getHandler()); }
@Override public void visit(TryCatchStatement statement) { visit(statement.getProtectedBody()); visit(statement.getHandler()); }
@Override public void visit(TryCatchStatement statement) { if (!check(statement.getProtectedBody())) { check(statement.getHandler()); } }
tryCatchStmt.setExceptionType(bookmark.exceptionType); tryCatchStmt.setExceptionVariable(bookmark.exceptionVariable); tryCatchStmt.getHandler().add(generator.generateJumpStatement( program.basicBlockAt(bookmark.exceptionHandler))); List<Statement> body = block.body.subList(0, block.body.size() - 1); Statement jumpToHandler = generator.generateJumpStatement(program.basicBlockAt(bookmark.exceptionHandler)); if (jumpToHandler != null) { tryCatchStmt.getHandler().add(jumpToHandler);
@Override public void visit(TryCatchStatement statement) { try { output.writeByte(16); writeSequence(statement.getProtectedBody()); output.writeInt(statement.getExceptionType() != null ? symbolTable.lookup(statement.getExceptionType()) : -1); output.writeShort(statement.getExceptionVariable() != null ? statement.getExceptionVariable() : -1); writeSequence(statement.getHandler()); } catch (IOException e) { throw new IOExceptionWrapper(e); } }
tryCatchStmt.setExceptionType(bookmark.exceptionType); tryCatchStmt.setExceptionVariable(bookmark.exceptionVariable); tryCatchStmt.getHandler().add(generator.generateJumpStatement( program.basicBlockAt(bookmark.exceptionHandler))); List<Statement> blockPart = oldBlock.body.subList(bookmark.offset, oldBlock.body.size());
stmt.setExceptionVariable(exceptionVarIndex); readSequence(input, stmt.getHandler()); return stmt;
.append("$$je;").softNewLine(); visitStatements(catchClause.getHandler());
@Override public void visit(TryCatchStatement statement) { List<Statement> statements = processSequence(statement.getProtectedBody()); statement.getProtectedBody().clear(); statement.getProtectedBody().addAll(statements); statements = processSequence(statement.getHandler()); statement.getHandler().clear(); statement.getHandler().addAll(statements); resultStmt = statement; }
@Override public void visit(TryCatchStatement statement) { Map<BlockStatement, List<Statement>> oldBlockSuccessors = blockSuccessors; Set<IdentifiedStatement> oldOuterStatements = outerStatements; outerStatements = new HashSet<>(); blockSuccessors = new HashMap<>(); processSequence(statement.getProtectedBody()); outerStatements = oldOuterStatements; blockSuccessors = oldBlockSuccessors; processSequence(statement.getHandler()); }
private void wieldTryCatch(List<Statement> statements) { for (int i = 0; i < statements.size() - 1; ++i) { if (statements.get(i) instanceof TryCatchStatement && statements.get(i + 1) instanceof TryCatchStatement) { TryCatchStatement first = (TryCatchStatement) statements.get(i); TryCatchStatement second = (TryCatchStatement) statements.get(i + 1); if (Objects.equals(first.getExceptionType(), second.getExceptionType()) && Objects.equals(first.getExceptionVariable(), second.getExceptionVariable()) && briefStatementComparison(first.getHandler(), second.getHandler())) { first.getProtectedBody().addAll(second.getProtectedBody()); statements.remove(i + 1); wieldTryCatch(first.getProtectedBody()); --i; } } } }
@Override public void visit(TryCatchStatement statement) { visit(statement.getProtectedBody()); visit(statement.getHandler()); }
@Override public void visit(TryCatchStatement statement) { visit(statement.getProtectedBody()); visit(statement.getHandler()); }
@Override public void visit(TryCatchStatement statement) { if (!check(statement.getProtectedBody())) { check(statement.getHandler()); } }
@Override public void visit(TryCatchStatement statement) { handleList(statement.getProtectedBody()); handleList(statement.getHandler()); }
@Override public void visit(TryCatchStatement statement) { try { output.writeByte(16); writeSequence(statement.getProtectedBody()); output.writeInt(statement.getExceptionType() != null ? symbolTable.lookup(statement.getExceptionType()) : -1); output.writeShort(statement.getExceptionVariable() != null ? statement.getExceptionVariable() : -1); writeSequence(statement.getHandler()); } catch (IOException e) { throw new IOExceptionWrapper(e); } }