public abstract class JavaParsingAtomicQueueGenerator extends com.github.javaparser.ast.visitor.VoidVisitorAdapter<Void> implements JCToolsGenerator
JavaParser, and replacing idioms that use Unsafe to instead use atomic field updates,
e.g.AtomicLongFieldUpdater. They are coupled directly to the structure of the
expected input Java source file and are used as a utility to maintain unsafe non-portable optimized code along side
safe portable code for uses such as on Android, etc
These generators are coupled with the structure and naming of fields, variables and methods and are not suitable for general purpose use.
| Modifier and Type | Field and Description |
|---|---|
protected static String |
GEN_DIRECTIVE_CLASS_CONTAINS_ORDERED_FIELD_ACCESSORS
When set on a class using a single line comment, the class has fields that have unsafe 'ordered' reads and
writes.
|
protected static String |
GEN_DIRECTIVE_METHOD_IGNORE
When set on a method using a single line comment, the method is not patched by the generator.
|
protected String |
sourceFileName |
| Modifier and Type | Method and Description |
|---|---|
protected String |
capitalise(String s) |
protected com.github.javaparser.ast.type.ClassOrInterfaceType |
classType(String className) |
void |
cleanupComments(com.github.javaparser.ast.CompilationUnit cu) |
protected com.github.javaparser.ast.body.FieldDeclaration |
declareLongFieldUpdater(String className,
String variableName)
Generates something like
private static final AtomicLongFieldUpdater |
protected com.github.javaparser.ast.stmt.BlockStmt |
fieldAssignment(String fieldName,
String valueName)
Generates something like
field = newValue |
protected com.github.javaparser.ast.body.FieldDeclaration |
fieldDeclarationWithInitialiser(com.github.javaparser.ast.type.Type type,
String name,
com.github.javaparser.ast.expr.Expression initializer,
com.github.javaparser.ast.Modifier.Keyword... modifiers)
Generates something like
private static final AtomicLongFieldUpdater |
protected com.github.javaparser.ast.stmt.BlockStmt |
fieldUpdaterCompareAndSet(String fieldUpdaterFieldName,
String expectedValueName,
String newValueName)
Generates something like
return P_INDEX_UPDATER.compareAndSet(this, expectedValue, newValue) |
protected com.github.javaparser.ast.stmt.BlockStmt |
fieldUpdaterLazySet(String fieldUpdaterFieldName,
String newValueName)
Generates something like
P_INDEX_UPDATER.lazySet(this, newValue) |
protected boolean |
isCommentPresent(com.github.javaparser.ast.Node node,
String wanted) |
protected boolean |
isRefArray(com.github.javaparser.ast.type.Type in,
String refClassName) |
protected boolean |
isRefType(com.github.javaparser.ast.type.Type in,
String className) |
protected com.github.javaparser.ast.expr.MethodCallExpr |
methodCallExpr(String owner,
String method,
com.github.javaparser.ast.expr.Expression... args) |
protected com.github.javaparser.ast.expr.MethodCallExpr |
newAtomicLongFieldUpdater(String className,
String variableName) |
void |
organiseImports(com.github.javaparser.ast.CompilationUnit cu) |
protected String |
outputPackage() |
protected String |
queueClassNamePrefix() |
protected void |
removeStaticFieldsAndInitialisers(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration node) |
protected void |
replaceParentClassesForAtomics(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration n)
Searches all extended or implemented super classes or interfaces for
special classes that differ with the atomics version and replaces them
with the appropriate class.
|
protected com.github.javaparser.ast.stmt.BlockStmt |
returnField(String fieldName)
Generates something like
return field |
protected com.github.javaparser.ast.type.ClassOrInterfaceType |
simpleParametricType(String className,
String... typeArgs) |
String |
translateQueueName(String qName) |
void |
visit(com.github.javaparser.ast.PackageDeclaration n,
Void arg) |
void |
visit(com.github.javaparser.ast.body.Parameter n,
Void arg) |
void |
visit(com.github.javaparser.ast.body.VariableDeclarator n,
Void arg) |
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitvisitprotected static final String GEN_DIRECTIVE_CLASS_CONTAINS_ORDERED_FIELD_ACCESSORS
protected static final String GEN_DIRECTIVE_METHOD_IGNORE
protected final String sourceFileName
protected String outputPackage()
protected String queueClassNamePrefix()
public void visit(com.github.javaparser.ast.PackageDeclaration n,
Void arg)
public void visit(com.github.javaparser.ast.body.Parameter n,
Void arg)
public void visit(com.github.javaparser.ast.body.VariableDeclarator n,
Void arg)
protected boolean isCommentPresent(com.github.javaparser.ast.Node node,
String wanted)
protected void removeStaticFieldsAndInitialisers(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration node)
public String translateQueueName(String qName)
translateQueueName in interface JCToolsGeneratorprotected void replaceParentClassesForAtomics(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration n)
public void cleanupComments(com.github.javaparser.ast.CompilationUnit cu)
cleanupComments in interface JCToolsGeneratorpublic void organiseImports(com.github.javaparser.ast.CompilationUnit cu)
organiseImports in interface JCToolsGeneratorprotected com.github.javaparser.ast.stmt.BlockStmt fieldUpdaterLazySet(String fieldUpdaterFieldName, String newValueName)
P_INDEX_UPDATER.lazySet(this, newValue)protected com.github.javaparser.ast.stmt.BlockStmt fieldUpdaterCompareAndSet(String fieldUpdaterFieldName, String expectedValueName, String newValueName)
return P_INDEX_UPDATER.compareAndSet(this, expectedValue, newValue)protected com.github.javaparser.ast.expr.MethodCallExpr methodCallExpr(String owner, String method, com.github.javaparser.ast.expr.Expression... args)
protected com.github.javaparser.ast.stmt.BlockStmt fieldAssignment(String fieldName, String valueName)
field = newValueprotected com.github.javaparser.ast.body.FieldDeclaration fieldDeclarationWithInitialiser(com.github.javaparser.ast.type.Type type,
String name,
com.github.javaparser.ast.expr.Expression initializer,
com.github.javaparser.ast.Modifier.Keyword... modifiers)
private static final AtomicLongFieldUpdater P_INDEX_UPDATER = AtomicLongFieldUpdater.newUpdater(MpmcAtomicArrayQueueProducerIndexField.class, "producerIndex"); protected com.github.javaparser.ast.body.FieldDeclaration declareLongFieldUpdater(String className, String variableName)
private static final AtomicLongFieldUpdater P_INDEX_UPDATER = AtomicLongFieldUpdater.newUpdater(MpmcAtomicArrayQueueProducerIndexField.class, "producerIndex"); protected com.github.javaparser.ast.expr.MethodCallExpr newAtomicLongFieldUpdater(String className, String variableName)
protected com.github.javaparser.ast.type.ClassOrInterfaceType simpleParametricType(String className, String... typeArgs)
protected com.github.javaparser.ast.type.ClassOrInterfaceType classType(String className)
protected com.github.javaparser.ast.stmt.BlockStmt returnField(String fieldName)
return fieldprotected boolean isRefArray(com.github.javaparser.ast.type.Type in,
String refClassName)
protected boolean isRefType(com.github.javaparser.ast.type.Type in,
String className)
Copyright © 2013–2025. All rights reserved.