Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 430ef455 authored by Calin Juravle's avatar Calin Juravle
Browse files

Disable StrictMode policy when setting up profile support

Bug: 28304158
Change-Id: Iedf8714bd4f3526823b3060b30e0f11c6c0abcea
parent d67a1ca4
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -412,6 +412,8 @@ public final class LoadedApk {

    private void createOrUpdateClassLoaderLocked(List<String> addedPaths) {
        if (mPackageName.equals("android")) {
            // Note: This branch is taken for system server and we don't need to setup
            // jit profiling support.
            if (mClassLoader != null) {
                // nothing to update
                return;
@@ -479,6 +481,7 @@ public final class LoadedApk {
            Slog.v(ActivityThread.TAG, "Class path: " + zip +
                    ", JNI path: " + librarySearchPath);

        boolean needToSetupJitProfiles = false;
        if (mClassLoader == null) {
            // Temporarily disable logging of disk reads on the Looper thread
            // as this is early and necessary.
@@ -489,11 +492,15 @@ public final class LoadedApk {
                    libraryPermittedPath, mBaseClassLoader);

            StrictMode.setThreadPolicy(oldPolicy);
            // Setup the class loader paths for profiling.
            needToSetupJitProfiles = true;
        }

        if (addedPaths != null && addedPaths.size() > 0) {
            final String add = TextUtils.join(File.pathSeparator, addedPaths);
            ApplicationLoaders.getDefault().addPath(mClassLoader, add);
            // Setup the new code paths for profiling.
            needToSetupJitProfiles = true;
        }

        // Setup jit profile support.
@@ -501,7 +508,14 @@ public final class LoadedApk {
        // The runtime only keeps track of unique code paths and can handle re-registration of
        // the same code path. There's no need to pass `addedPaths` since any new code paths
        // are already in `mApplicationInfo`.
        if (needToSetupJitProfiles) {
            // Temporarily disable logging of disk reads/writes on the Looper thread
            // as this is early and necessary. Write is only needed to create the
            // profile file if it's not already there.
            StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
            setupJitProfileSupport();
            StrictMode.setThreadPolicy(oldPolicy);
        }
    }

    public ClassLoader getClassLoader() {