Class SharedVariableAtomicityDetector

    • Field Detail

      • currentMethod

        private org.apache.bcel.classfile.Method currentMethod
      • currentCFG

        private CFG currentCFG
      • currentLockDataFlow

        private LockDataflow currentLockDataFlow
      • isFirstVisit

        private boolean isFirstVisit
      • readFieldsByMethods

        private final java.util.Map<XMethod,​java.util.Set<XField>> readFieldsByMethods
      • relevantFields

        private final java.util.Set<XField> relevantFields
      • nonSyncedMethodCallsByCallingMethods

        private final java.util.Map<XMethod,​java.util.Set<XMethod>> nonSyncedMethodCallsByCallingMethods
      • readOpCodes

        private static final java.util.Set<java.lang.Short> readOpCodes
      • pushOpCodes

        private static final java.util.Set<java.lang.Short> pushOpCodes
      • operationOpCodes

        private static final java.util.Set<java.lang.Short> operationOpCodes
      • methodCallOpCodes

        private static final java.util.Set<java.lang.Short> methodCallOpCodes
    • Constructor Detail

      • SharedVariableAtomicityDetector

        public SharedVariableAtomicityDetector​(BugReporter reporter)
    • Method Detail

      • visit

        public void visit​(org.apache.bcel.classfile.JavaClass javaClass)
        Overrides:
        visit in class BetterVisitor
      • visit

        public void visit​(org.apache.bcel.classfile.Method method)
        Overrides:
        visit in class BetterVisitor
      • visitAfter

        public void visitAfter​(org.apache.bcel.classfile.JavaClass obj)
        Overrides:
        visitAfter in class PreorderVisitor
      • collectFieldReadsAndInnerMethodCalls

        private void collectFieldReadsAndInnerMethodCalls​(int seen,
                                                          XMethod method)
      • addNonFinalFields

        private void addNonFinalFields​(XField field,
                                       XMethod method,
                                       java.util.Map<XMethod,​java.util.Set<XField>> map)
      • hasNonSyncedNonPrivateCallToMethod

        private boolean hasNonSyncedNonPrivateCallToMethod​(XMethod method,
                                                           java.util.Set<XMethod> visitedMethods)
      • mapContainsFieldWithOtherMethod

        private boolean mapContainsFieldWithOtherMethod​(XField field,
                                                        XMethod method,
                                                        java.util.Map<XMethod,​java.util.Set<XField>> map)
      • checkAndReportBug

        private void checkAndReportBug​(int seen,
                                       XMethod method)
      • isPrimitiveOrItsBoxingType

        private boolean isPrimitiveOrItsBoxingType​(java.lang.String className)
      • is64bitPrimitive

        private boolean is64bitPrimitive​(java.lang.String className)