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

Commit 0318162a authored by Calin Juravle's avatar Calin Juravle
Browse files

Add logic for recording dex files use on disk

Add PackageDexUsage to handle the I/O operations of dex usage data. It
is responsible to encode, save and load dex

Test: runtest -x .../PackageDexUsageTests.java

Bug: 32871170
Change-Id: I2acc5430080a7e937c798513d8959ab631decfd9
parent 8d2a51f1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -60,12 +60,12 @@ public abstract class AbstractStatsBase<T> {
        return new AtomicFile(fname);
    }

    void writeNow(final T data) {
    protected void writeNow(final T data) {
        writeImpl(data);
        mLastTimeWritten.set(SystemClock.elapsedRealtime());
    }

    boolean maybeWriteAsync(final T data) {
    protected boolean maybeWriteAsync(final T data) {
        if (SystemClock.elapsedRealtime() - mLastTimeWritten.get() < WRITE_INTERVAL_MS
            && !PackageManagerService.DEBUG_DEXOPT) {
            return false;
@@ -105,7 +105,7 @@ public abstract class AbstractStatsBase<T> {

    protected abstract void writeInternal(T data);

    void read(T data) {
    protected void read(T data) {
        if (mLock) {
            synchronized (data) {
                synchronized (mFileLock) {
+15 −0
Original line number Diff line number Diff line
@@ -24,11 +24,13 @@ import android.app.AppGlobals;
import android.content.Intent;
import android.content.pm.PackageParser;
import android.content.pm.ResolveInfo;
import android.os.Build;
import android.os.RemoteException;
import android.os.UserHandle;
import android.system.ErrnoException;
import android.util.ArraySet;
import android.util.Log;
import dalvik.system.VMRuntime;
import libcore.io.Libcore;

import java.io.File;
@@ -197,4 +199,17 @@ public class PackageManagerServiceUtils {
        }
        return sb.toString();
    }

    /**
     * Verifies that the given string {@code isa} is a valid supported isa on
     * the running device.
     */
    public static boolean checkISA(String isa) {
        for (String abi : Build.SUPPORTED_ABIS) {
            if (VMRuntime.getInstructionSet(abi).equals(isa)) {
                return true;
            }
        }
        return false;
    }
}
+512 −0

File added.

Preview size limit exceeded, changes collapsed.

+318 −0

File added.

Preview size limit exceeded, changes collapsed.