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

Commit 6b78340f authored by Todd Kennedy's avatar Todd Kennedy
Browse files

resolved conflicts for b4d41021 to master

Change-Id: Ib413c588ffb7a2b4385d2088e6de782417625037
parents dfc9ce54 b4d41021
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -43,6 +43,8 @@ public final class Installer extends SystemService {
    public static final int DEXOPT_DEBUGGABLE   = 1 << 3;
    public static final int DEXOPT_DEBUGGABLE   = 1 << 3;
    /** The system boot has finished */
    /** The system boot has finished */
    public static final int DEXOPT_BOOTCOMPLETE = 1 << 4;
    public static final int DEXOPT_BOOTCOMPLETE = 1 << 4;
    /** Run the application with the JIT compiler */
    public static final int DEXOPT_USEJIT       = 1 << 5;


    private final InstallerConnection mInstaller;
    private final InstallerConnection mInstaller;


+16 −9
Original line number Original line Diff line number Diff line
@@ -39,6 +39,7 @@ import static com.android.server.pm.Installer.DEXOPT_BOOTCOMPLETE;
import static com.android.server.pm.Installer.DEXOPT_DEBUGGABLE;
import static com.android.server.pm.Installer.DEXOPT_DEBUGGABLE;
import static com.android.server.pm.Installer.DEXOPT_PUBLIC;
import static com.android.server.pm.Installer.DEXOPT_PUBLIC;
import static com.android.server.pm.Installer.DEXOPT_SAFEMODE;
import static com.android.server.pm.Installer.DEXOPT_SAFEMODE;
import static com.android.server.pm.Installer.DEXOPT_USEJIT;
import static com.android.server.pm.InstructionSets.getAppDexInstructionSets;
import static com.android.server.pm.InstructionSets.getAppDexInstructionSets;
import static com.android.server.pm.InstructionSets.getDexCodeInstructionSets;
import static com.android.server.pm.InstructionSets.getDexCodeInstructionSets;


@@ -75,7 +76,8 @@ final class PackageDexOptimizer {
     * {@link PackageManagerService#mInstallLock}.
     * {@link PackageManagerService#mInstallLock}.
     */
     */
    int performDexOpt(PackageParser.Package pkg, String[] instructionSets,
    int performDexOpt(PackageParser.Package pkg, String[] instructionSets,
            boolean forceDex, boolean defer, boolean inclDependencies, boolean bootComplete) {
            boolean forceDex, boolean defer, boolean inclDependencies,
            boolean bootComplete, boolean useJit) {
        ArraySet<String> done;
        ArraySet<String> done;
        if (inclDependencies && (pkg.usesLibraries != null || pkg.usesOptionalLibraries != null)) {
        if (inclDependencies && (pkg.usesLibraries != null || pkg.usesOptionalLibraries != null)) {
            done = new ArraySet<String>();
            done = new ArraySet<String>();
@@ -90,7 +92,8 @@ final class PackageDexOptimizer {
                mDexoptWakeLock.acquire();
                mDexoptWakeLock.acquire();
            }
            }
            try {
            try {
                return performDexOptLI(pkg, instructionSets, forceDex, defer, bootComplete, done);
                return performDexOptLI(pkg, instructionSets, forceDex, defer, bootComplete,
                        useJit, done);
            } finally {
            } finally {
                if (useLock) {
                if (useLock) {
                    mDexoptWakeLock.release();
                    mDexoptWakeLock.release();
@@ -100,7 +103,8 @@ final class PackageDexOptimizer {
    }
    }


    private int performDexOptLI(PackageParser.Package pkg, String[] targetInstructionSets,
    private int performDexOptLI(PackageParser.Package pkg, String[] targetInstructionSets,
            boolean forceDex, boolean defer, boolean bootComplete, ArraySet<String> done) {
            boolean forceDex, boolean defer, boolean bootComplete, boolean useJit,
            ArraySet<String> done) {
        final String[] instructionSets = targetInstructionSets != null ?
        final String[] instructionSets = targetInstructionSets != null ?
                targetInstructionSets : getAppDexInstructionSets(pkg.applicationInfo);
                targetInstructionSets : getAppDexInstructionSets(pkg.applicationInfo);


@@ -108,11 +112,11 @@ final class PackageDexOptimizer {
            done.add(pkg.packageName);
            done.add(pkg.packageName);
            if (pkg.usesLibraries != null) {
            if (pkg.usesLibraries != null) {
                performDexOptLibsLI(pkg.usesLibraries, instructionSets, forceDex, defer,
                performDexOptLibsLI(pkg.usesLibraries, instructionSets, forceDex, defer,
                        bootComplete, done);
                        bootComplete, useJit, done);
            }
            }
            if (pkg.usesOptionalLibraries != null) {
            if (pkg.usesOptionalLibraries != null) {
                performDexOptLibsLI(pkg.usesOptionalLibraries, instructionSets, forceDex, defer,
                performDexOptLibsLI(pkg.usesOptionalLibraries, instructionSets, forceDex, defer,
                        bootComplete, done);
                        bootComplete, useJit, done);
            }
            }
        }
        }


@@ -179,13 +183,15 @@ final class PackageDexOptimizer {
                    Log.i(TAG, "Running dexopt (" + dexoptType + ") on: " + path + " pkg="
                    Log.i(TAG, "Running dexopt (" + dexoptType + ") on: " + path + " pkg="
                            + pkg.applicationInfo.packageName + " isa=" + dexCodeInstructionSet
                            + pkg.applicationInfo.packageName + " isa=" + dexCodeInstructionSet
                            + " vmSafeMode=" + vmSafeMode + " debuggable=" + debuggable
                            + " vmSafeMode=" + vmSafeMode + " debuggable=" + debuggable
                            + " oatDir = " + oatDir + " bootComplete=" + bootComplete);
                            + " oatDir = " + oatDir + " bootComplete=" + bootComplete
                            + " useJit=" + useJit);
                    final int sharedGid = UserHandle.getSharedAppGid(pkg.applicationInfo.uid);
                    final int sharedGid = UserHandle.getSharedAppGid(pkg.applicationInfo.uid);
                    final int dexFlags =
                    final int dexFlags =
                            (!pkg.isForwardLocked() ? DEXOPT_PUBLIC : 0)
                            (!pkg.isForwardLocked() ? DEXOPT_PUBLIC : 0)
                            | (vmSafeMode ? DEXOPT_SAFEMODE : 0)
                            | (vmSafeMode ? DEXOPT_SAFEMODE : 0)
                            | (debuggable ? DEXOPT_DEBUGGABLE : 0)
                            | (debuggable ? DEXOPT_DEBUGGABLE : 0)
                            | (bootComplete ? DEXOPT_BOOTCOMPLETE : 0);
                            | (bootComplete ? DEXOPT_BOOTCOMPLETE : 0)
                            | (useJit ? DEXOPT_USEJIT : 0);
                    final int ret = mPackageManagerService.mInstaller.dexopt(path, sharedGid,
                    final int ret = mPackageManagerService.mInstaller.dexopt(path, sharedGid,
                            pkg.packageName, dexCodeInstructionSet, dexoptNeeded, oatDir, dexFlags);
                            pkg.packageName, dexCodeInstructionSet, dexoptNeeded, oatDir, dexFlags);


@@ -244,12 +250,13 @@ final class PackageDexOptimizer {
    }
    }


    private void performDexOptLibsLI(ArrayList<String> libs, String[] instructionSets,
    private void performDexOptLibsLI(ArrayList<String> libs, String[] instructionSets,
            boolean forceDex, boolean defer, boolean bootComplete, ArraySet<String> done) {
            boolean forceDex, boolean defer, boolean bootComplete, boolean useJit,
            ArraySet<String> done) {
        for (String libName : libs) {
        for (String libName : libs) {
            PackageParser.Package libPkg = mPackageManagerService.findSharedNonSystemLibrary(
            PackageParser.Package libPkg = mPackageManagerService.findSharedNonSystemLibrary(
                    libName);
                    libName);
            if (libPkg != null && !done.contains(libName)) {
            if (libPkg != null && !done.contains(libName)) {
                performDexOptLI(libPkg, instructionSets, forceDex, defer, bootComplete, done);
                performDexOptLI(libPkg, instructionSets, forceDex, defer, bootComplete, useJit, done);
            }
            }
        }
        }
    }
    }
+7 −7
Original line number Original line Diff line number Diff line
@@ -6251,7 +6251,7 @@ public class PackageManagerService extends IPackageManager.Stub {
        synchronized (mInstallLock) {
        synchronized (mInstallLock) {
            mPackageDexOptimizer.performDexOpt(p, null /* instruction sets */,
            mPackageDexOptimizer.performDexOpt(p, null /* instruction sets */,
                    false /* force dex */, false /* defer */, true /* include dependencies */,
                    false /* force dex */, false /* defer */, true /* include dependencies */,
                    false /* boot complete */);
                    false /* boot complete */, false /*useJit*/);
        }
        }
    }
    }
@@ -6311,7 +6311,7 @@ public class PackageManagerService extends IPackageManager.Stub {
                final String[] instructionSets = new String[] { targetInstructionSet };
                final String[] instructionSets = new String[] { targetInstructionSet };
                int result = mPackageDexOptimizer.performDexOpt(p, instructionSets,
                int result = mPackageDexOptimizer.performDexOpt(p, instructionSets,
                        false /* forceDex */, false /* defer */, true /* inclDependencies */,
                        false /* forceDex */, false /* defer */, true /* inclDependencies */,
                        true /* boot complete */);
                        true /* boot complete */, false /*useJit*/);
                return result == PackageDexOptimizer.DEX_OPT_PERFORMED;
                return result == PackageDexOptimizer.DEX_OPT_PERFORMED;
            }
            }
        } finally {
        } finally {
@@ -6362,7 +6362,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            final int res = mPackageDexOptimizer.performDexOpt(pkg, instructionSets,
            final int res = mPackageDexOptimizer.performDexOpt(pkg, instructionSets,
                    true /*forceDex*/, false /* defer */, true /* inclDependencies */,
                    true /*forceDex*/, false /* defer */, true /* inclDependencies */,
                    true /* boot complete */);
                    true /* boot complete */, false /*useJit*/);
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
            if (res != PackageDexOptimizer.DEX_OPT_PERFORMED) {
            if (res != PackageDexOptimizer.DEX_OPT_PERFORMED) {
@@ -7179,7 +7179,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            int result = mPackageDexOptimizer.performDexOpt(pkg, null /* instruction sets */,
            int result = mPackageDexOptimizer.performDexOpt(pkg, null /* instruction sets */,
                    forceDex, (scanFlags & SCAN_DEFER_DEX) != 0, false /* inclDependencies */,
                    forceDex, (scanFlags & SCAN_DEFER_DEX) != 0, false /* inclDependencies */,
                    (scanFlags & SCAN_BOOTING) == 0);
                    (scanFlags & SCAN_BOOTING) == 0, false /*useJit*/);
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
            if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
            if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
@@ -7260,7 +7260,7 @@ public class PackageManagerService extends IPackageManager.Stub {
                        int result = mPackageDexOptimizer.performDexOpt(clientPkg,
                        int result = mPackageDexOptimizer.performDexOpt(clientPkg,
                                null /* instruction sets */, forceDex,
                                null /* instruction sets */, forceDex,
                                (scanFlags & SCAN_DEFER_DEX) != 0, false,
                                (scanFlags & SCAN_DEFER_DEX) != 0, false,
                                (scanFlags & SCAN_BOOTING) == 0);
                                (scanFlags & SCAN_BOOTING) == 0, false /*useJit*/);
                        if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
                        if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
                            throw new PackageManagerException(INSTALL_FAILED_DEXOPT,
                            throw new PackageManagerException(INSTALL_FAILED_DEXOPT,
                                    "scanPackageLI failed to dexopt clientLibPkgs");
                                    "scanPackageLI failed to dexopt clientLibPkgs");
@@ -7884,7 +7884,7 @@ public class PackageManagerService extends IPackageManager.Stub {
                        int result = mPackageDexOptimizer.performDexOpt(ps.pkg,
                        int result = mPackageDexOptimizer.performDexOpt(ps.pkg,
                                null /* instruction sets */, forceDexOpt, deferDexOpt, true,
                                null /* instruction sets */, forceDexOpt, deferDexOpt, true,
                                bootComplete);
                                bootComplete, false /*useJit*/);
                        Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                        Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                        if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
                        if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
@@ -12575,7 +12575,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            int result = mPackageDexOptimizer
            int result = mPackageDexOptimizer
                    .performDexOpt(pkg, null /* instruction sets */, false /* forceDex */,
                    .performDexOpt(pkg, null /* instruction sets */, false /* forceDex */,
                            false /* defer */, false /* inclDependencies */,
                            false /* defer */, false /* inclDependencies */,
                            true /*bootComplete*/);
                            true /*bootComplete*/, false /*useJit*/);
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
            if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
            if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
                res.setError(INSTALL_FAILED_DEXOPT, "Dexopt failed for " + pkg.codePath);
                res.setError(INSTALL_FAILED_DEXOPT, "Dexopt failed for " + pkg.codePath);