Move synchronization of class initializer from DexClass to MethodColl

Bug: 159194018
Change-Id: Ibd800bc484baaab0344b87d610d686df0d19e264
diff --git a/src/main/java/com/android/tools/r8/graph/DexClass.java b/src/main/java/com/android/tools/r8/graph/DexClass.java
index 1825fb3..ae39752 100644
--- a/src/main/java/com/android/tools/r8/graph/DexClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexClass.java
@@ -542,8 +542,10 @@
     return false;
   }
 
-  public synchronized DexEncodedMethod getClassInitializer() {
-    return methodCollection.getClassInitializer();
+  public DexEncodedMethod getClassInitializer() {
+    DexEncodedMethod classInitializer = methodCollection.getClassInitializer();
+    assert classInitializer != DexEncodedMethod.SENTINEL;
+    return classInitializer;
   }
 
   public Origin getOrigin() {
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 2269517..4c0c7c5 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -120,7 +120,11 @@
   public static final DexEncodedMethod[] EMPTY_ARRAY = {};
   public static final DexEncodedMethod SENTINEL =
       new DexEncodedMethod(
-          null, null, DexAnnotationSet.empty(), ParameterAnnotationsList.empty(), null);
+          null,
+          MethodAccessFlags.fromDexAccessFlags(0),
+          DexAnnotationSet.empty(),
+          ParameterAnnotationsList.empty(),
+          null);
   public static final Int2ReferenceMap<DebugLocalInfo> NO_PARAMETER_INFO =
       new Int2ReferenceArrayMap<>(0);
 
@@ -247,6 +251,7 @@
     this.code = code;
     this.classFileVersion = classFileVersion;
     this.d8R8Synthesized = d8R8Synthesized;
+    assert accessFlags != null;
     assert code == null || !shouldNotHaveCode();
     assert parameterAnnotationsList != null;
   }
diff --git a/src/main/java/com/android/tools/r8/graph/MethodCollection.java b/src/main/java/com/android/tools/r8/graph/MethodCollection.java
index c93d366..b1a8f8e 100644
--- a/src/main/java/com/android/tools/r8/graph/MethodCollection.java
+++ b/src/main/java/com/android/tools/r8/graph/MethodCollection.java
@@ -178,7 +178,7 @@
     cachedClassInitializer = DexEncodedMethod.SENTINEL;
   }
 
-  public DexEncodedMethod getClassInitializer() {
+  public synchronized DexEncodedMethod getClassInitializer() {
     if (cachedClassInitializer == DexEncodedMethod.SENTINEL) {
       cachedClassInitializer = null;
       for (DexEncodedMethod directMethod : directMethods()) {
diff --git a/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java b/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
index 2d56233..0465bc5 100644
--- a/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
+++ b/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
@@ -12,6 +12,7 @@
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexTypeList;
+import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.graph.ParameterAnnotationsList;
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.conversion.CallGraph.Node;
@@ -50,7 +51,11 @@
         new ProgramMethod(
             clazz,
             new DexEncodedMethod(
-                signature, null, DexAnnotationSet.empty(), ParameterAnnotationsList.empty(), null));
+                signature,
+                MethodAccessFlags.fromDexAccessFlags(0),
+                DexAnnotationSet.empty(),
+                ParameterAnnotationsList.empty(),
+                null));
     return new Node(method);
   }