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

Commit e66a2bf2 authored by Nicolas Geoffray's avatar Nicolas Geoffray
Browse files

Workaround for USAP support in jitzygote.

USAP improve app startup by ~5ms, so enable it for the
jitzygote experiment.

Bug: 119800099
Test: boots and usap processes live
Change-Id: I918d81f56cc7e9fcc8a053feadd7878108e6d590
parent 13e4ff16
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -640,15 +640,10 @@ public class ZygoteProcess {
                ZygoteConfig.USAP_POOL_ENABLED, USAP_POOL_ENABLED_DEFAULT);

        if (!propertyString.isEmpty()) {
            if (SystemProperties.get("dalvik.vm.boot-image", "").endsWith("apex.art")) {
                // TODO(b/119800099): Tweak usap configuration in jitzygote mode.
                mUsapPoolEnabled = false;
            } else {
            mUsapPoolEnabled = Zygote.getConfigurationPropertyBoolean(
                  ZygoteConfig.USAP_POOL_ENABLED,
                  Boolean.parseBoolean(USAP_POOL_ENABLED_DEFAULT));
        }
        }

        boolean valueChanged = origVal != mUsapPoolEnabled;

@@ -665,6 +660,16 @@ public class ZygoteProcess {
    private boolean fetchUsapPoolEnabledPropWithMinInterval() {
        final long currentTimestamp = SystemClock.elapsedRealtime();

        if (SystemProperties.get("dalvik.vm.boot-image", "").endsWith("apex.art")) {
            // TODO(b/119800099): In jitzygote mode, we want to start using USAP processes
            // only once the boot classpath has been compiled. There is currently no callback
            // from the runtime to notify the zygote about end of compilation, so for now just
            // arbitrarily start USAP processes 15 seconds after boot.
            if (currentTimestamp <= 15000) {
                return false;
            }
        }

        if (mIsFirstPropCheck
                || (currentTimestamp - mLastPropCheckTimestamp >= Zygote.PROPERTY_CHECK_INTERVAL)) {
            mIsFirstPropCheck = false;