private static MethodCallExpr methodCallExpr(String owner, String method, Expression... args) { MethodCallExpr methodCallExpr = new MethodCallExpr(new NameExpr(owner), method); for (Expression expr : args) { methodCallExpr.addArgument(expr); } return methodCallExpr; }
/** * Generates something like <code>field = newValue</code> * * @param fieldName * @param valueName * @return */ private static BlockStmt fieldAssignment(String fieldName, String valueName) { BlockStmt body = new BlockStmt(); body.addStatement( new ExpressionStmt(new AssignExpr(new NameExpr(fieldName), new NameExpr(valueName), Operator.ASSIGN))); return body; }
@Override public void visit(FieldAccessExpr n, Void arg) { super.visit(n, arg); if (n.getScope() instanceof NameExpr) { NameExpr name = (NameExpr) n.getScope(); name.setName(translateQueueName(name.getNameAsString())); } }
@Override public void visit(BinaryExpr n, Void arg) { out.println("BinaryExpr: " + (extended ? n : n.getLeft() + " " + n.getOperator() + " " + n.getRight())); super.visit(n, arg); }
/** * Generates something like * <code>P_INDEX_UPDATER.lazySet(this, newValue)</code> * * @param fieldUpdaterFieldName * @param newValueName * @return */ private static BlockStmt fieldUpdaterLazySet(String fieldUpdaterFieldName, String newValueName) { BlockStmt body = new BlockStmt(); body.addStatement(new ExpressionStmt( methodCallExpr(fieldUpdaterFieldName, "lazySet", new ThisExpr(), new NameExpr(newValueName)))); return body; }
private static MethodCallExpr newAtomicLongFieldUpdater(String className, String variableName) { return methodCallExpr("AtomicLongFieldUpdater", "newUpdater", new ClassExpr(classType(className)), new StringLiteralExpr(variableName)); }
@Override public void visit(Name n, Void arg) { out.println("Name: " + (extended ? n : n.getIdentifier())); super.visit(n, arg); }
@Override public void visit(ClassExpr n, Void arg) { out.println("ClassExpr: " + (extended ? n : n.getType())); super.visit(n, arg); }
@Override public void visit(BooleanLiteralExpr n, Void arg) { out.println("BooleanLiteralExpr: " + (extended ? n : n.getValue())); super.visit(n, arg); }
private static ImportDeclaration importDeclaration(String name) { return new ImportDeclaration(new Name(name), false, false); }
@Override public void visit(FieldAccessExpr n, Void arg) { super.visit(n, arg); if (n.getScope() instanceof NameExpr) { NameExpr name = (NameExpr) n.getScope(); name.setName(translateQueueName(name.getNameAsString())); } }
private static MethodCallExpr methodCallExpr(String owner, String method, Expression... args) { MethodCallExpr methodCallExpr = new MethodCallExpr(new NameExpr(owner), method); for (Expression expr : args) { methodCallExpr.addArgument(expr); } return methodCallExpr; }
/** * Generates something like * <code>return P_INDEX_UPDATER.getAndSet(this, newValue)</code> * * @param fieldUpdaterFieldName * @param newValueName * @return */ private static BlockStmt fieldUpdaterGetAndSet(String fieldUpdaterFieldName, String newValueName) { BlockStmt body = new BlockStmt(); body.addStatement(new ReturnStmt( methodCallExpr(fieldUpdaterFieldName, "getAndSet", new ThisExpr(), new NameExpr(newValueName)))); return body; }
private static MethodCallExpr newAtomicRefFieldUpdater(String className, String variableName) { return methodCallExpr("AtomicReferenceFieldUpdater", "newUpdater", new ClassExpr(classType(className)), new ClassExpr(classType("LinkedQueueAtomicNode")), new StringLiteralExpr(variableName)); }
/** * Generates something like <code>field = newValue</code> * * @param fieldName * @param valueName * @return */ private static BlockStmt fieldAssignment(String fieldName, String valueName) { BlockStmt body = new BlockStmt(); body.addStatement( new ExpressionStmt(new AssignExpr(new NameExpr(fieldName), new NameExpr(valueName), Operator.ASSIGN))); return body; }
private static ImportDeclaration staticImportDeclaration(String name) { return new ImportDeclaration(new Name(name), true, false); }
/** * Generates something like * <code>P_INDEX_UPDATER.lazySet(this, newValue)</code> * * @param fieldUpdaterFieldName * @param newValueName * @return */ private static BlockStmt fieldUpdaterLazySet(String fieldUpdaterFieldName, String newValueName) { BlockStmt body = new BlockStmt(); body.addStatement(new ExpressionStmt( methodCallExpr(fieldUpdaterFieldName, "lazySet", new ThisExpr(), new NameExpr(newValueName)))); return body; }
private static MethodCallExpr newAtomicLongFieldUpdater(String className, String variableName) { return methodCallExpr("AtomicLongFieldUpdater", "newUpdater", new ClassExpr(classType(className)), new StringLiteralExpr(variableName)); }
private static ImportDeclaration importDeclaration(String name) { return new ImportDeclaration(new Name(name), false, false); }