Refactor FabricSoLoader to ensure sDidInit is accessed correctly

Summary:
sDidInit can be accessed from different threads, this diff refactors the definition of this variable to be volatile and also to be assigned at the end of the staticInit() method.

Changelog:
Ensure proper initialization of FabricSoLoder

Reviewed By: ejanzer

Differential Revision: D18010919

fbshipit-source-id: 3ec7b19fdc15056b90fc01281b8c3888e93a7dd3
This commit is contained in:
David Vacca
2019-10-21 14:42:45 -07:00
committed by Facebook Github Bot
parent ff6b2ff325
commit e21ed675ec
@@ -15,19 +15,18 @@ import com.facebook.soloader.SoLoader;
import com.facebook.systrace.Systrace;
public class FabricSoLoader {
private static boolean sDidInit = false;
private static volatile boolean sDidInit = false;
public static void staticInit() {
if (sDidInit) {
return;
}
sDidInit = true;
Systrace.beginSection(
Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricSoLoader.staticInit::load:fabricjni");
ReactMarker.logMarker(ReactMarkerConstants.LOAD_REACT_NATIVE_SO_FILE_START);
SoLoader.loadLibrary("fabricjni");
ReactMarker.logMarker(ReactMarkerConstants.LOAD_REACT_NATIVE_SO_FILE_END);
Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE);
sDidInit = true;
}
}