)]}'
{
  "log": [
    {
      "commit": "33df0e3e47adc053c34a0ad3f4bb78ee3dd40e7f",
      "tree": "401957f10b116a082e7c4ed58bb86bff3c4e2615",
      "parents": [
        "ce8198e1e826142a5dc032f22a60e2c41eaeff96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Sep 30 14:36:32 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 07 12:10:32 2021 +0000"
      },
      "message": "Revert^4 \"Lazily allocate DexCache arrays.\"\n\nWe rarely need the DexCache for compiled code.\nDelay the allocation in hope we never need it.\nThis reduces DexCache memory usage by ~25% at startup.\n\nBug: b/181097963\nTest: test.py -b --host\nChange-Id: I1f654aeb538dfed013705a61b1955af1f6b94fe7\n"
    },
    {
      "commit": "8473a5bf11d82f88f3e9a47965ed43411d29a377",
      "tree": "e9c0f6453d2c217016ab2f1785a960c1eea77261",
      "parents": [
        "3dcd844cccf35dc8d66117bd77de16fc68c86e4b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 30 07:47:29 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 30 09:54:05 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"Lazily allocate DexCache arrays.\"\"\n\nThis reverts commit e153a62e8e8a2c42f86d2db87c8188cd0d7bef6b.\n\nBug: b/181097963\n\nReason for revert: Crashes seen on bots.\n\nChange-Id: I1b452d4a15adf42dd7170d77d1b79260d78400a3\n"
    },
    {
      "commit": "e153a62e8e8a2c42f86d2db87c8188cd0d7bef6b",
      "tree": "254fbf33dea442d711ffa4a62bbcf2a4fd392424",
      "parents": [
        "282795ca98d955697823aea6fd9c6b3f51780045"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 02 15:07:26 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Sep 28 12:36:00 2021 +0000"
      },
      "message": "Revert^2 \"Lazily allocate DexCache arrays.\"\n\nWe rarely need the DexCache for compiled code.\nDelay the allocation in hope we never need it.\nThis reduces DexCache memory usage by ~25% at startup.\n\nThis reverts commit b9b7d91f5ceb0b738e1774992fd6fe205c6091e9.\n\nBug: b/181097963\nTest: test.py -b --host\nTest: run previously failing go/ab build in forrest\nChange-Id: I818ad8f75d2d5387891a96edec49bc7933cd171f\n"
    },
    {
      "commit": "b9b7d91f5ceb0b738e1774992fd6fe205c6091e9",
      "tree": "06210044d3f66a0eb72e491ba9effc13bb827ced",
      "parents": [
        "4c3ade67c470543562a0029e39b576954a807321"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 24 09:24:47 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 12:12:16 2021 +0000"
      },
      "message": "Revert \"Lazily allocate DexCache arrays.\"\n\nThis reverts commit 1214319d27e7fb4c4ff00b39799df6f15288098a.\n\nReason for revert: Post-submit fails\nBug: b/181097963\nTest: TH\n\nChange-Id: I9fd21140f1703d0020458b786f48bd39889a9948\n"
    },
    {
      "commit": "1214319d27e7fb4c4ff00b39799df6f15288098a",
      "tree": "8708943822a634322bd9790c4d008210e44b3ddb",
      "parents": [
        "b7cb691fb8da124e8a6276a5a7fee47dd0aaa338"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 16 14:06:31 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 23 15:24:27 2021 +0000"
      },
      "message": "Lazily allocate DexCache arrays.\n\nWe rarely need the DexCache for compiled code.\nDelay the allocation in hope we never need it.\n\nThis reduces DexCache memory usage by ~25% at startup.\n\nTest: m test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I680a59c905c2b821ee954e4b32abd5d24876bd11\n"
    },
    {
      "commit": "79d6c800cd8aa1da335ea0523c391852780ac02a",
      "tree": "a77faf41d7b658709113c72d7eaaaa1ce2ded6b5",
      "parents": [
        "01fbfbebceb00b94cc54738ebf425b6c4a79211a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 15:50:11 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Revert^2 \"Support using opaque JNI ids\"\n\nWe weren\u0027t handing the fact that encoding jmethodIDs could cause OOM\nexceptions in some places in reflection.cc. This could lead to\nattempting to use a null jmethodID as if it were a real id. This issue\nis fixed by the parent CL.\n\nThis reverts commit b476a29a2c.\nThis reverts commit 3b2905366c.\nThis Unreverts commit d5d645ffec.\nThis Unreverts commit 21d5994583.\n\nReason for revert: Fixed issue causing 004 debuggable flakes\nTest: ./test.py --host --jit --debuggable\nBug: 134162467\n\nChange-Id: Iece08ab299cd8a20f8382be7be6c3796858e70eb\n"
    },
    {
      "commit": "b476a29a2cda22b86fc1d96e4cc65ce36fb878af",
      "tree": "039eaee2edf5495275088d1c467e522977c6bcd6",
      "parents": [
        "3b2905366c6ee1eaba2d6477078e505e377343ec"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 07:54:48 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:16:04 2019 +0000"
      },
      "message": "Revert \"Support using opaque JNI ids\"\n\nThis reverts commit 21d5994583c679cd5d8573b5d35dbd659bdca2c7.\n\nBug: 134162467\n\nReason for revert: Breaks debuggable\n\nChange-Id: I9510a6ac208d392ff25ee196a1a519fecd151445\n"
    },
    {
      "commit": "21d5994583c679cd5d8573b5d35dbd659bdca2c7",
      "tree": "521906398a2f04048cc51b4f409b6a3ebc0c6ffa",
      "parents": [
        "5dfbe7ae9ed9a1a82446d32118190105a211a2d2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 19 12:58:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 20:22:39 2019 +0000"
      },
      "message": "Support using opaque JNI ids\n\nCurrently JNI ids (jmethodID \u0026  jfieldID) are created by simply\ncasting the corresponding ART structure pointer. This is great for\nsimplicity but means we are prevented from performing operations that\ncould change these pointer values. To support these use-cases add\nsupport for loading the runtime with a layer of indirection between\nthese ids and the internal art data types.\n\nCurrently the JNI id type can be toggled only by passing the new\n\u0027-Xopaque-jni-ids:{true,false}\u0027 flag during startup.\n\nThis changes the --debuggable test configuration to pass\n\u0027-Xopaque-jni-ids:true\u0027 in order to get test coverage of this feature\nusing the \u0027art-jit\u0027 configuration.\n\nTest: ./test.py --host --debuggable\nTest: ./test.py --host --debuggable --jit-on-first-use\nTest: ./test/testrunnner/run_build_test_target.py art-jit\nBug: 134162467\nChange-Id: Id8c8cb9a5b8ff18dc2f40892fae2d344a7214f44\n"
    },
    {
      "commit": "2a905b2b50fb77723f6627e2d6a5df218d21081f",
      "tree": "4fa5d59381ed16073bc5f57cf9c9522e6f81acdd",
      "parents": [
        "29bb803f2d41ea48e9f255dadd22b4c291e0a036"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 06 09:04:07 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 06 12:53:49 2019 +0000"
      },
      "message": "Move memory related regions of the JIT cache in its own class.\n\n- Moves the JIT lock into the global locks list\n- Jit cache has two regions: one inherited from zygote, and its own.\n\nBug: 119800099\nTest: boot, test.py\nChange-Id: I833ba2b5a3d3c10fa01286cdf52603fa174a2cc7\n"
    },
    {
      "commit": "66834468e9106e264a74766c17a0c047a3448921",
      "tree": "be827201de65b3dc888182c949ac580e084a0fb4",
      "parents": [
        "11d5a2507adf5a6d06adca5f18c399b826883182"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:28:29 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 10 22:42:02 2019 +0000"
      },
      "message": "Revert^2 \"Perform SetEvent under the user_code_suspend_count_lock_\"\n\nIf we needed to condition-wait for a gc to finish we would trigger an\noverly restrictive deadlock check. This passed testing because\nnormally the Wait will not be executed. To prevent this type of issue\nfrom occuring in the future we added a way for code to assert that\ncondition-waiting is allowed without actually going to sleep.\n\nThis reverts commit eaa4831142fa58f176ddad52c0d5e9c288e26b81.\n\nReason for revert: Relaxed too-strict check in CheckSafeToWait.\n\nTest: ./test.py --host\nBug: 130150240\n\nChange-Id: I8359e595cdd73f49cb68c8c70d755cab0e563ac7\n"
    },
    {
      "commit": "eaa4831142fa58f176ddad52c0d5e9c288e26b81",
      "tree": "5aae9d939a3aeccd33dfb1f8e4b6df362fc15fdd",
      "parents": [
        "c723b81ea2c34b096c1a7ab88bce23c98f6419f5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:14:33 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 08 16:17:19 2019 +0000"
      },
      "message": "Revert \"Perform SetEvent under the user_code_suspend_count_lock_\"\n\nThis reverts commit 3fa8b6db7b556035f192d037b35210677250798e.\n\nBug: 130150240\nReason for revert: Causes lock-level violations on gcstress\n\nChange-Id: Ie580be5658da63f951652ba74cfbf25fa845765c\n"
    },
    {
      "commit": "3fa8b6db7b556035f192d037b35210677250798e",
      "tree": "f8b19265c1b17506848c97d91ed6100971fe0f4b",
      "parents": [
        "4f215d1b1ceba9dfc8d8f3d8644da81302b2cd86"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 03 17:00:02 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 04 20:01:24 2019 +0000"
      },
      "message": "Perform SetEvent under the user_code_suspend_count_lock_\n\nWe would perform major parts of SetEvent without any synchronization\nand perform multiple internal suspensions. This could lead to\ninconsistent state or deadlocks.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: Ice2fc94b4f82fcd5938928e8dbf1bdddd29000ab\n"
    },
    {
      "commit": "ada33d754fdc987e2658a7bab38f5ca7c70f266c",
      "tree": "e588bba5ec19664e0b035a0d1cd43c96da6c05bd",
      "parents": [
        "e29b950562bae79fe8eb22e13a9cb533c9d8c5d0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 17 13:17:30 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 19 16:54:23 2018 -0800"
      },
      "message": "Move startup thread pool back into runtime\n\nAdded logic in heap trim to delete the thread pool, if there are no\nactive users.\n\nAdded a scoped accessor to prevent ref counting errors.\n\nMotivation, have workers already created when the app images are\nloaded.\n\nBug: 116052292\nTest: test-art-host\nChange-Id: I8ea776d74e88601222a9989e0c6dac34cf77c683\n"
    },
    {
      "commit": "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b",
      "tree": "76e582afd0580be21497787c584cab61f7599997",
      "parents": [
        "03eb36c6940060f82f887b3e8860a91c1f97224c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 21 16:03:08 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Factor out lock order and holder from mutexes\n\nIsolate the order and holder class from the mutex definitions.\nThe locks header requires significantly fewer includes, and\nwill be used in a follow-up change to remove mutex.h dependencies\nin headers just for the sake of annotation lock requirements.\n\nThis is itself an NFC commit, only pulling the code apart.\n\nBug: 119869270\nTest: m test-art-host\nChange-Id: I11ca161ac3118725c79313a82f58595699b590bf\n"
    }
  ]
}
