)]}'
{
  "log": [
    {
      "commit": "fa915c920f07a794f06a9bee47513dc5f303d019",
      "tree": "7e951be09476008a51ca19463a253f5cd26b9de1",
      "parents": [
        "6df189d5a7b68420f17bb28988b29a699f025170"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 14:40:23 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 15:41:25 2020 +0000"
      },
      "message": "Only put resolved classes inside the dex cache.\n\nUsers of the dex cache (like the verifier) rely on entries to be\nresolved.\n\nBug: 155852343\nTest: No crash doing \"while adb shell stop \u0026\u0026 adb shell start \u0026\u0026 sleep 5; do :; done\"\nChange-Id: Ie2a97f75c6cd49a7cf1a2c6529cd8900d7acba3b\n"
    },
    {
      "commit": "0a6063a07edf210979de199aecead92647b8752c",
      "tree": "03e427837b0c248700ac0ea7f42e91fa9a9cf53b",
      "parents": [
        "ecb984ddbd830e6eb3f339b9bd4c7c90eac2438b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 14 16:39:14 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 15 14:10:47 2020 +0000"
      },
      "message": "Clean up Field::CreateFromArtField().\n\nRemove code dealing with the DexCache. This was obsolete\nsince switching to hash-based DexCache arrays. This makes\nthe last remaining template parameter unused, so remove it\nand move the implementation to the .cc file.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optmizing\nTest: aost_taimen-userdebug boots.\nChange-Id: Ib2077028f45792e4357d9c57280ece70a22e47a2\n"
    },
    {
      "commit": "5868adaefe72cc8bcdcd8325c40f712375a506d1",
      "tree": "a1d4328902c4e860fe69c4e4bb34052de2530df3",
      "parents": [
        "5a62af5dc9e9bafeffcac7820e1a5b7586e58477"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 11:50:34 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:00:22 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h .\n\nMake it possible to include the definition of enum ClassRoot\nwithout pulling in a lot of other headers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488\n"
    },
    {
      "commit": "d34b73b4ac478462acc03c4cd42ae7568c832eb8",
      "tree": "27f1c4599178ba57451c29d0156c232768711b6d",
      "parents": [
        "4a48775376a4c0b180a7d32ad2cdf00bd0dca140"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 10:07:59 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 13:34:31 2020 +0000"
      },
      "message": "Clean up internal stack trace construction.\n\nSimplify the code by ignoring active transactions. Writing\nto fields of a newly allocated object does not need to be\nrecorded as aborting the transaction removes all references\nto the new object and it\u0027s unnecessary to roll back writes\nto unreachable object\u0027s fields.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ia91d3274398b0ca0f5b0040dcf323921d915b657\n"
    },
    {
      "commit": "b6f4c79b06bb97651a7be1ac828d18ed18356603",
      "tree": "ef0bbb1281f6d4785e60f26cb420646c83eb6f6d",
      "parents": [
        "3971661c74a9b4635d9744f72f3b053c820067c9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 04 15:37:29 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 08:05:24 2020 +0000"
      },
      "message": "Clean up Constructor/Method/Field construction.\n\nSimplify the code by ignoring active transactions. Writing\nto fields of a newly allocated object does not need to be\nrecorded as aborting the transaction removes all references\nto the new object and it\u0027s unnecessary to roll back writes\nto unreachable object\u0027s fields.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ib5cd60c003d2ad3e6a246ff86d6b9288428c60ee\n"
    },
    {
      "commit": "edccd3cc6d0b60bcf87295774b0728fd8755c329",
      "tree": "b0f4ca89c39f12f495beca2deb0110df5f7a66d5",
      "parents": [
        "444dc1c77068e56b8fbb9789d74d34101f29bffc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 13 14:54:27 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 16 08:20:30 2020 +0000"
      },
      "message": "Retire VMRuntime.doNotInitializeInAot()\n\nThis was used to delay initialization of UnixChannelFactory.\n\nBug: 109735195\nBug: 144502743\nTest: art/test.py --host --prebuild --64 -r -t 071-dexfile-map-clean\nTest: atest PreloadCheck\nChange-Id: I51102f1241c1a9bf344c8cfeed9f88c625610763\n"
    },
    {
      "commit": "2e17cf4854138d3a3021fdddc7851215b0eba28b",
      "tree": "da227e647f9a54d90caf88610f3b4e24c8dad76b",
      "parents": [
        "eb070f085df78fc39ad2c06f0638edcf0537e6a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 21:19:46 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 12:03:13 2020 +0000"
      },
      "message": "Revert \"ART: Conditionally remove loaded-oat-count check\"\n\nBug: 128688902\nBug: 150032912\nTest: boots\n\nThis reverts commit e912955b98cdc224f2f13455f592b63e96bf5634.\n\n(cherry-picked from commit 3734c2822fe2dc8eaaedbc311f9828ce443b02e6)\n\nMerged-In: I209489f69e4f2b02e7fa93090539575098a28025\nChange-Id: I209489f69e4f2b02e7fa93090539575098a28025\n"
    },
    {
      "commit": "eb070f085df78fc39ad2c06f0638edcf0537e6a3",
      "tree": "8d464c44bf9509d8da2a77b02ab5a84e9a7301bf",
      "parents": [
        "539d1d422776c50fea3b1e725ab2b063c533f911"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 10 14:00:18 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 13 10:59:36 2020 +0000"
      },
      "message": "Reland \"art: Add FileDescriptor fields to native Core Platform API\"\n\nThis reverts commit Ie9fa5a25d5352f214a16e10d5bbbe45da9f3c486.\n\nOriginal commit message:\n\nAdds descriptor and ownerId to whitelisted native Core Platform API.\n\nChange in reland:\n\nAdds a method to VMRuntime to disable the initialization of a class\nduring AOT compilation.\n\nBug: 144502743\nBug: 150680645\n\nTest: art/test/run-test --host 001-HelloWorld\nTest: art/tools/run-libcore-tests.sh --mode\u003dhost --variant\u003dX64\nTest: atest PreloadCheck\nChange-Id: I9facfe3d3fa27cf50a345d24be1e7d7e0d26c848\n"
    },
    {
      "commit": "e5c48f75476bc7bac843c862dfeeaeed2b95d94f",
      "tree": "81457b683b6d55148eea0b023ddb264daad9f502",
      "parents": [
        "085f3805cdfde5fdb130e31a2cf83071598ef082"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 11:28:43 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 15:01:33 2020 +0000"
      },
      "message": "Revert \"ART: Forbid the zygote to load code outside of system\"\n\nThis reverts commit 9ef308da0ea8d1df2edf65d4957599fafcc56aeb.\n\nBug: 150032912\nBug: 129454856\nTest: boots\nChange-Id: I522b1e0e2b9116239ca206aa5c65347976eac7ab\n"
    },
    {
      "commit": "0a5cad39cd1dbbfd6f335c5ff6f307a903bc5bf7",
      "tree": "940aa8d886fed28e76d0af813d75fe4df49b8cdc",
      "parents": [
        "8aa6a82003ce7ece4511996341021e7084d40b3a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 14 20:29:26 2020 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 15 01:18:01 2020 +0000"
      },
      "message": "Revert \"Revert \"Make class loader context fail for unknown class loaders\"\"\n\nThis reverts commit e9818ddd70565d52cc1cc93d6991d7e7ec2bc275.\n\nMake class loader context fail for unknown class loaders\n\nUpdate OatFileAssistant to fail the class loader check when getting an\nunknown (null) class loader. The code is only use in GetDexoptNeeded paths\nand does not affect the runtime behaviour.\n\nThis will enable dexoptanalyzer to provide the right answer for dex files\nwhose class loader changes often.\n\nTest: test-art-host\nBug: 147208643\n\nChange-Id: I2f8229fc25c018436c17439bdc9ac0899af25758\n"
    },
    {
      "commit": "e9818ddd70565d52cc1cc93d6991d7e7ec2bc275",
      "tree": "c2deb578605ebfa0511532b8d7ca908fa4c71092",
      "parents": [
        "1d852c36ad84e6f32132b215af079546300bfc28"
      ],
      "author": {
        "name": "Stefania Halac",
        "email": "shalac@google.com",
        "time": "Fri Feb 14 17:58:26 2020 +0000"
      },
      "committer": {
        "name": "Stefania Halac",
        "email": "shalac@google.com",
        "time": "Fri Feb 14 19:36:44 2020 +0000"
      },
      "message": "Revert \"Make class loader context fail for unknown class loaders\"\n\nThis reverts commit 2d3de3a40015af07f7645a298f77b398af0c6c2c.\n\nReason for revert: 8s regression in boot time b/149517940\n\nChange-Id: I81365d1bd63c691d715b8f970dac9da64ab419ff\n"
    },
    {
      "commit": "2d3de3a40015af07f7645a298f77b398af0c6c2c",
      "tree": "360b130e574af9a5e837ebd9d2585de29db34f65",
      "parents": [
        "c55032774cfec4b5222b362a81a3b8b69e133710"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 11 16:49:47 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 12 19:22:17 2020 +0000"
      },
      "message": "Make class loader context fail for unknown class loaders\n\nUpdate OatFileAssistant to fail the class loader check when getting an\nunknown (null) class loader. The code is only use in GetDexoptNeeded paths\nand does not affect the runtime behaviour.\n\nThis will enable dexoptanalyzer to provide the right answer for dex files\nwhose class loader changes often.\n\nTest: test-art-host\nBug: 147208643\nChange-Id: I869109e669e68afe094e7703ed574575b98d7cc6\n"
    },
    {
      "commit": "c9fa770b6eedcf0cfe05b2449423f5494eecfce0",
      "tree": "684657b011f8980da10cbdc89ca6288d933a2734",
      "parents": [
        "a7d98b9560166eddaeb78d0f19402ee80ec9df06"
      ],
      "author": {
        "name": "Dan Zimmerman",
        "email": "danzimm@fb.com",
        "time": "Fri Jan 31 13:35:12 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 08 02:41:12 2020 +0000"
      },
      "message": "Introduce VMRuntime.isValidClassLoaderContext\n\nIn the PackageManager server we need to validate class loader contexts\nthat we receive from an untrusted process. In order to keep class loader\ncontext parsing logic centralized within the runtime let\u0027s create an API\nwhich returns whether or not the runtime can parse the encoded class\nloader context.\n\nTest: Build system image, open app using secondary dex\nTest: atest atest com.android.server.pm.dex.DexManagerTests\nTest: m test-art-host-gtest-class_loader_context_test\nChange-Id: Ied676e3239f70a8ab9d066df79f377b7036b28b7\n"
    },
    {
      "commit": "b682ea4d1f9f88ef41589007f385398033d61b65",
      "tree": "b843077f05e2fe37ce5f566dfc823552f289f562",
      "parents": [
        "77aa6807053a830fe5c951c7cb700813d7e2e27b"
      ],
      "author": {
        "name": "Dan Zimmerman",
        "email": "danzimm@fb.com",
        "time": "Mon Dec 23 06:59:06 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 08 00:01:36 2020 +0000"
      },
      "message": "Introduce BaseDexClassLoader.computeClassLoaderContextsNative\n\nThis will be used to compute the contexts that should be sent over to\nthe dex load reporter. See associated changes in libcore \u0026\nframeworks/base.\n\nMotivation: At the moment of committing there are two classloader\ncontext encoders- one in ART and one in the package manager. The\nduplicate logic is susceptible to divergences. For example at the moment\nif a package uses shared libraries and has secondary dex files then the\ncontext encoded for secondary dex files will be incorrect[1]. In order to\neliminate this bug and future possible bugs lets centralize where all\nclassloader context computation is done.\n\n[1]: The context will be incorrect because it doesn\u0027t take into account\nthe shared libraries that are loaded at runtime.\n\nTest: m test-art-host-gtest-class_loader_context_test\nTest: m test-art-host-gtest\nTest: ./test/testrunner/testrunner.py --host -b\nTest: Introduced a set of tests for the new API(s)\nTest: See tests in associated libcore \u0026 framework/base commits\n\nBug: 148494302\nChange-Id: Id39293a2e1d3d05194f2864f4febb3e652bce075\n"
    },
    {
      "commit": "f9dfd77182296cd9161784bc0b9babf4f22a90c7",
      "tree": "8abbce5a0fc5cf7b46979cb6d47a19a6106d0297",
      "parents": [
        "c70b84e7680663c3a41a119570ecd5f708ce4d76"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 30 13:56:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 03 16:40:25 2020 +0000"
      },
      "message": "Update VMRuntime.isBootClassPathOnDisk()...\n\n... for the new boot image location specification.\nIn particular, use only the first component and, if there is\nno path, use path from the first boot class path component.\n\nTest: aosp_taimen-userdebug boots\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:/system/framework/boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nBug: 119868597\nChange-Id: Ifae2a005b7c6b8625d744eca2df763e3f6f5d0fb\n"
    },
    {
      "commit": "fc58809f7b932d86234130be15487017dc37b0cf",
      "tree": "d003dedec73d77473aff6b2039860bc76a69d898",
      "parents": [
        "d00f129f1b7148f01efe6e9283a72d6ec8f0edd3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 23 15:39:08 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 29 23:31:10 2020 +0000"
      },
      "message": "Remove old JDWP implementation from ART\n\nThe old \u0027internal\u0027 JDWP implementation hasn\u0027t been used for a few\nreleases and it\u0027s a lot of code that\u0027s barely being tested and is at\nrisk of bit-rot. To simplify the runtime and remove potentially buggy\ncode this removes it.\n\nWe also needed to rewrite the DdmThreadNotification code since it\nrelied on the suspension functionality from the old debugger and was\ngenerally unsafe.\n\nTest: ./test.py --host\nTest: atest --test-mapping cts/tests/jdwp/TEST_MAPPING\nTest: atest --test-mapping cts/hostsidetests/jdwptunnel/TEST_MAPPING\nTest: Manual ddms\n\nBug: 119034743\n\nChange-Id: I775f310a009141296b730e4a6c2503506a329481\n"
    },
    {
      "commit": "f365affd27933d1d0771d0d5064101db18c19cc2",
      "tree": "b94a643c08f62a4355d3e7de143aa5e4f7b2d2e2",
      "parents": [
        "d71f1dc15e264f9d2122c427a4d99d49b525bfd3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 27 13:43:01 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 28 18:39:37 2020 +0000"
      },
      "message": "Remove isDebuggerActive native implementation.\n\nThis function is identical to VMDebug#isDebuggerConnected and always\nhas been in ART (on dalvik there was a distinction between the two).\nSimply implement this function in java to reduce the number of places\nthe debugger needs to overwrite native functions.\n\nTest: build\n\nBug: 148401311\nChange-Id: I56448e5c437900cb072aa39ee784a25efad260b0\n"
    },
    {
      "commit": "87f3630befee523a9b384b95fc23bfaadcc404d6",
      "tree": "8d7a9f980cc8bdca0a03b5d02f9b130cb59b1115",
      "parents": [
        "75408ad56bf5b240dc3c4a4db23a423c18a63920"
      ],
      "author": {
        "name": "Lev Rumyantsev",
        "email": "levarum@google.com",
        "time": "Fri Dec 13 15:49:37 2019 -0800"
      },
      "committer": {
        "name": "Lev Rumyantsev",
        "email": "levarum@google.com",
        "time": "Tue Jan 21 23:09:34 2020 +0000"
      },
      "message": "runtime: Initialize native bridge in app-zygote\n\nAn app-zygote may be running PreLoad hooks, which may require native-bridged\nexecution if non-native jni code is involved (testAppZygoteSyscalls needs that).\n\nTest: CtsExternalServiceTestCases\nandroid.externalservice.cts.ExternalServiceTest\ntestBindExternalServiceWithZygote\nTest: CtsSeccompHostTestCases\nandroid.seccomp.cts.SeccompHostJUnit4DeviceTest\ntestAppZygoteSyscalls\nboth for Q.sdk_gphone_x86_arm.armeabi-v7a\nBug: 143143718\nBug: 146904103\n\nChange-Id: I53f33183cc3d0bd992344441111a84f4c04533fa\n"
    },
    {
      "commit": "a9ff45b9f6d46cf6e48685a1c5d3cd64e05149a6",
      "tree": "9af811618b7d73319eaeedfa67532bc9d7bce543",
      "parents": [
        "6a67bea2203783db7569cd99cc86e2b63f5e28a7"
      ],
      "author": {
        "name": "atrost",
        "email": "atrost@google.com",
        "time": "Tue Jan 14 15:59:02 2020 +0000"
      },
      "committer": {
        "name": "Anna Trostanetski",
        "email": "atrost@google.com",
        "time": "Mon Jan 20 16:26:26 2020 +0000"
      },
      "message": "Remove TODO from ART\n\nDoing this directly from frameworks to bionic without ART.\nBug: 145743810\nTest: none\n\nChange-Id: I79634c403038fcbe4c2e842980cc4821a6fae027\n"
    },
    {
      "commit": "6442eaf8b21c85d60648f7a7498a6aeb299af861",
      "tree": "9a0fc7a9484e22e341b765b97adb9c517f78ddca",
      "parents": [
        "e30457c0b52caba839b21a03af56200df7a975e2"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 08 16:55:56 2020 +0000"
      },
      "committer": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Fri Jan 17 15:59:09 2020 +0000"
      },
      "message": "Harden hidden api checks.\n\nAlso walk past j.l.r in stackwalk for Hidden API. This is a fix for an\nasan test failure (691-hiddenapi-proxy) introduced in https://r.android.com/1208005.\nInstead of always walking past j.l.r during the stackwalk, this CL adds an\nexception for j.l.r.Proxy.\n\nBug: 142365358\nTest: art/test/testrunner/testrunner.py --target --64 -t674-hiddenapi\nTest: art/test/testrunner/run_build_test_target.py -j110 art-asan\nChange-Id: I98dd46d7070dd2dd4318398d2a5d2ae4ece94015\n"
    },
    {
      "commit": "e30457c0b52caba839b21a03af56200df7a975e2",
      "tree": "5f7dcb277f6c62c7dafa9f99346e4f4b80b9b466",
      "parents": [
        "a72256b2b9cb32ead8bdf06c7d6546eb01ef4229"
      ],
      "author": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Wed Jan 08 16:02:00 2020 +0800"
      },
      "committer": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Fri Jan 17 13:32:51 2020 +0000"
      },
      "message": "Add getNativeTid function\n\nAdd a function to get native thread id for java Thread.\n\nBug: 139521784\nTest: CtsLibcoreTestCases, device boot to home, thread priority set\n      as expected.\nChange-Id: Ic13c1380374044754f007136666dc0928ce1f143\n"
    },
    {
      "commit": "9406c43b2de9b94b6d70f82474840eccd7699dc7",
      "tree": "5bc44e726bf2a8d0a6e37279056c3f226154afc6",
      "parents": [
        "08d064fb6d02006730710a683e84a4cc54229c67"
      ],
      "author": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Tue Jan 14 15:40:09 2020 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jan 14 21:37:43 2020 +0000"
      },
      "message": "Revert \"Harden hidden api checks.\"\n\nRevert submission 1203343-hidden-api-check-hardening\n\nReason for revert: art-asan target failure\nReverted Changes:\nI5af9f79f5: Add change id for hidden api check hardening\nIfc8d39ba2: Harden hidden api checks.\n\nChange-Id: Ifb824ff00cb78f03cd388c56dd7411f5c51bb531\n"
    },
    {
      "commit": "3bf51634271a5cb25eadc3ffc092233663253a41",
      "tree": "e96e45d7ace51f97468ecdac21f754c59eee4ce1",
      "parents": [
        "135b5c8fe69b27c5059a9f042c394a9d438c9788"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 08 16:55:56 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Tue Jan 14 14:04:46 2020 +0000"
      },
      "message": "Harden hidden api checks.\n\nAlso walk past j.l.r in stackwalk for Hidden API.\n\nBug: 142365358\nTest: art/test/testrunner/testrunner.py --target --64 -t674-hiddenapi\nChange-Id: Ifc8d39ba23808216bbb8dd21e3262d330f2c87f1\n"
    },
    {
      "commit": "fab7208934673a026ecca1799a0ec5a892b38210",
      "tree": "fc27d288c53bb359d0f02791177e3ef3951694f2",
      "parents": [
        "270db1ce48377e3d9ca0c3dcec834ac807ca885b"
      ],
      "author": {
        "name": "atrost",
        "email": "atrost@google.com",
        "time": "Fri Dec 06 13:37:36 2019 +0000"
      },
      "committer": {
        "name": "Anna Trostanetski",
        "email": "atrost@google.com",
        "time": "Thu Dec 12 12:15:16 2019 +0000"
      },
      "message": "Pipe disabled compat changes to runtime through zygote.\n\nTest: device boots\nTest: Logging results of isChangeEnabled are matching state and respect adb overrides.\nBug: 145743810\nChange-Id: I03da331d3d36876fb646c2962e200aeecb5af84b\nMerged-In: I03da331d3d36876fb646c2962e200aeecb5af84b\n"
    },
    {
      "commit": "20b7a9b8aeaf76fc8f3248f211489fd00af73170",
      "tree": "33a09412c220b5bfc9935a84fabd92a39aa4c35f",
      "parents": [
        "c6ca1170904c9f5bbdf0ee5b12d6d4cb093739fc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 26 10:47:43 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 18:34:20 2019 +0000"
      },
      "message": "Fix Missing ReflectiveHandleScope in Class_newInstance\n\nThe Class_newInstance method (the native implementation of the\nj.l.Class.newInstance function) incorrectly held an ArtMethod* for the\nconstructor over a suspend point. This could lead to an obsolete\nmethod being called or (worst case) CHECK failures due to not\nfinishing the initialization of the class if it\u0027s made obsolete.\n\nTest: ./test/run-test --host 2001\nBug: 145197371\nBug: 134162467\nChange-Id: I7813977bfdd17165da810a1705197654eef024a1\n"
    },
    {
      "commit": "0aa02069a224384f0c6a8d78c3465290b61bdf67",
      "tree": "b1cc859ce0449e0943e756544d2a7a581cf870ca",
      "parents": [
        "88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 21 16:24:09 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 17:26:31 2019 +0000"
      },
      "message": "Add resetJitCounters\n\nUsed to avoid Jit counters from class preloading being recorded in the\nboot profiles.\n\nBug: 139883463\nBug: 142564450\nTest: test/run-test 2230-profile-save-hotness\nChange-Id: I69c548ea336e9fb33e74988668e5d3c93b8a6705\n"
    },
    {
      "commit": "882d41435982c518506f544ab79a9fa0a90cc78f",
      "tree": "5b5902f9ba26b45c2ced2367f168d82f33ad7b7c",
      "parents": [
        "da3653f1424236c4778cf3806861d04f2ba9b07e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 21 13:27:10 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 25 21:33:30 2019 +0000"
      },
      "message": "Use nativePostForkSystemServer for system server profiling\n\nNeed to use nativePostForkSystemServer instead of nativePostForkChild\nsince nativePostForkChild is called after the class loader is created.\n\n(cherry-picked from commit 0712f2969c0f19fa2cc41f99751d39ee1852ebbc)\nBug: 139883463\nBug: 144383344\nTest: showmap `pid system_server` and verify\nTest: atest BootImageProfileTest\n\nMerged-In: I7c4f61b08d286ef6056931231f6b835749092720\nChange-Id: I7c4f61b08d286ef6056931231f6b835749092720\n"
    },
    {
      "commit": "acdb9a350fede0776e1f4d6d04dc3246249345e3",
      "tree": "571b9d7e6b9606b1258314f781eb1341399def81",
      "parents": [
        "4c6d765dae35f7a3e7cafdbe346821622e65d6d4"
      ],
      "author": {
        "name": "Artur Satayev",
        "email": "satayev@google.com",
        "time": "Mon Oct 28 18:09:53 2019 +0000"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Wed Nov 06 13:16:51 2019 +0000"
      },
      "message": "Plumb @TestApi enforcement policy to runtime.\n\nBy default access to test APIs would be allowed for instrumented processes only.\n\nBug: 133832325\nTest: manual\nChange-Id: Iaa68447c88304b062025c96e8b863a0758b78add\n"
    },
    {
      "commit": "de05550bf33d3441655cfddd66e788791f2412e7",
      "tree": "6815d4af1a0a825df90318f753dc3afa71704ece",
      "parents": [
        "988c3911671598d7c840c65bf1cdfafa1e05c582"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 13:41:35 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 01 13:05:17 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized in reflection.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 36692143\nChange-Id: I53342f5bb6285c9ca95445791dd10e04c6d8f962\n"
    },
    {
      "commit": "07710c52222fa412051cb9c3920894fe50b7d41c",
      "tree": "0c3a94e2a2c59db85b6f85fb6f4b017e71363537",
      "parents": [
        "fb11957a861bc2230773e74e969b45a92d4f587b"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Mon Sep 16 15:53:38 2019 +0000"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Sep 19 16:43:22 2019 +0000"
      },
      "message": "Reland \"Java Heap Profiler for Perfetto.\" again\n\nThis reverts commit 284b1b01cf47335fa578e995150adcd0c6f02059.\n\nReason for revert: Added some nullptr checks with logging.\n                   Fixed behaviour when ReInitializing plugin.\n\nTest: dump heap for system_server\n\nTest: art/tools/run-gtests.sh -j4\n[ RUN      ] InstructionSetFeaturesTest.FeaturesFromAssembly\nart/runtime/arch/instruction_set_features_test.cc:161: Failure\nValue of: assembly_features-\u003eHasAtLeast(instruction_set_features.get())\n  Actual: false\nExpected: true\nAssembly features: ISA: Arm Feature string: div,-atomic_ldrd_strd,armv8a\nFeatures from build: ISA: Arm Feature string: div,atomic_ldrd_strd,armv8a\n[  FAILED  ] InstructionSetFeaturesTest.FeaturesFromAssembly (0 ms)\nKnown issue, see http://b/139425971\n\nTest: art/test/testrunner/testrunner.py --target --64\n4095/4260 (96%) tests passed.\n\nTest: art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nOutcomes: 13781. Passed: 13542, Failed: 0, Skipped: 140, Warnings: 99. Took 29m37s.\n\nTest: art/tools/run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nOutcomes: 401. All successful. Took 7m15s.\n\nBug: 136210868\n\nChange-Id: I7b8564c93926788acb0340de254836dff0ebd9f8\n"
    },
    {
      "commit": "4ac0e1571e015a01d75091c3daef065f9624ad77",
      "tree": "4d13edeab88bd6fd724388c48385b0c3cca4f3a8",
      "parents": [
        "5a2301d897294ff4ee6de71f459dc2566dc3fa1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "message": "Revert \"Revert \"Basic structural redefinition support\"\"\n\nThis reverts commit 5a2301d897294ff4ee6de71f459dc2566dc3fa1a.\n\nBug: 134162467\n\nReason for revert: Relanding as unclear if issue is due to topic.\n\nChange-Id: Ib1d1cf2e9132e30c9649b760ae9ae2d8ceacf843\n"
    },
    {
      "commit": "5a2301d897294ff4ee6de71f459dc2566dc3fa1a",
      "tree": "2bd06ab3f463734994b3d251f6115514520dbb3f",
      "parents": [
        "4eb6eb40e88214fcc874d93e75660cb580cb4d58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:11:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:12:13 2019 +0000"
      },
      "message": "Revert \"Basic structural redefinition support\"\n\nThis reverts commit c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c.\n\nBug: 134162467\n\nReason for revert: Breaks on redefine-stress\n\nChange-Id: I4e38da23d65b5b34b26b5ab537a3583328e078a4\n"
    },
    {
      "commit": "c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c",
      "tree": "f8647487e7465712fd73118ceb89e13167a12648",
      "parents": [
        "1ba7e8c10af4e270864a417044244d63db53ccf5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 13 10:50:38 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 17 23:52:12 2019 +0000"
      },
      "message": "Basic structural redefinition support\n\nThis adds basic support for adding methods and fields to already\nloaded classes using redefinition. This \u0027structural class\nredefinition\u0027 is currently limited to classes without any virtual\nmethods or instance fields. One cannot currently structurally redefine\nmultiple classes at once nor will structural redefinition trigger the\nstandard redefinition events.\n\nAfter structural redefinition all references to the old class, and its\nfields and methods are atomically updated. Any memory associated with\nthe static fields of the old class is zeroed. Offsets for field access\nmight change.  If there are any active stack frames for methods from\nthe redefined class the original (obsolete method) code will continue\nto execute. The identity hash code of the redefined class will not\nchange. Any locks being held, waited or blocked on by the old class\nwill be transferred to the new class.\n\nTo use this feature the process must be debuggable and running with\n-Xopaque-jni-ids:true.\n\nFor device testing use a wrap.sh that adds the following flags:\n\n    \u0027-Xopaque-jni-ids:true -Xcompiler-option --debuggable -XjdwpProvider:adbconnection\u0027\n\nStructural redefinition only available using the\n\"com.android.art.UNSAFE.class.structurally_redefine_class_direct\"\nextension. This will not trigger the normal class-redefinition events.\nOnly one class may be redefined at a time.\n\nNB There are still some holes in this potentially allowing obsolete\nmethods/fields to be visible. Most notably during jni-id, MethodHandle\nand VarHandle creation as well as potentially other places in the\nruntime. These holes will be closed by later CLs. Until then the\nextension to access structural class redefinition will remain tagged\nas UNSAFE.\n\nTest: ./test.py --host --all-compiler\nBug: 134162467\n\nChange-Id: I825d3a4bdb9594c0147223ae69f433ce9bbfc307\n"
    },
    {
      "commit": "284b1b01cf47335fa578e995150adcd0c6f02059",
      "tree": "a165ba397ce26aa19fcd1b49081d36808a33b9d1",
      "parents": [
        "4fa78a0356cd8a9501e427afc5c1bb95eea70ba3"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Sat Sep 14 00:18:42 2019 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Sat Sep 14 00:27:18 2019 +0000"
      },
      "message": "Revert \"Reland \"Java Heap Profiler for Perfetto.\"\"\n\nThis reverts commit 5a446bd6c72d25ed2435fb2279bd8617ad003d2e.\n\nReason for revert: Multiple gtests failing\n\nChange-Id: I07abd641d49518a48aed7e401c1927aa7c027937\n"
    },
    {
      "commit": "5a446bd6c72d25ed2435fb2279bd8617ad003d2e",
      "tree": "cad94b86c888b89a96596430ae652a64e4decf35",
      "parents": [
        "f923b09ee869da8a7fec8fc4ed860b6f3eaa7337"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Sep 10 11:30:26 2019 +0000"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Sep 12 08:53:36 2019 +0000"
      },
      "message": "Reland \"Java Heap Profiler for Perfetto.\"\n\nThis reverts commit 8f70b9672c13a5ca19cf2c54ace3cb2f342f743a.\n\nReason for revert: Roll forward with fix. Add hprof_listener to threads\n                   allowed to start early.\n\nBug: 136210868\nTest: * art/tools/run-gtests.sh -j4\n        arm/instruction_set_features_test already failing at base\n        art/arm64/image_space_test  already failing at base\n        art/arm/image_space_test  already failing at base\n      * art/test/testrunner/testrunner.py --target --64\n      * art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\n      * art/tools/run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\n      * Start profile, killall -38, see dumped data.\n\nChange-Id: I90c3f8158d95d735fe2a67e25813543849dd0c4f\n"
    },
    {
      "commit": "8f70b9672c13a5ca19cf2c54ace3cb2f342f743a",
      "tree": "6f7c3bfddf1a8beaa6f4e406cfe59929fce60ed2",
      "parents": [
        "7f8678ec4d2abec1f540fb441be60604bec86b6e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 06 22:25:34 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 07 02:00:29 2019 +0000"
      },
      "message": "Revert \"Java Heap Profiler for Perfetto.\"\n\nThis reverts commit adf49d4bb3870b73e79982f75bacd917d3ec3bb2.\n\nReason for revert: Breaks tests.\n\nBug: 136210868\nChange-Id: If79f47e3151f1d1cb359b79b388b8aac9ee09074\n"
    },
    {
      "commit": "adf49d4bb3870b73e79982f75bacd917d3ec3bb2",
      "tree": "d318b68d4840140f9c1e78f324becb5db0c142fa",
      "parents": [
        "7ed5e6002fc493984b3a4887a867ef751a139b4d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Jul 09 17:57:16 2019 +0100"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Fri Sep 06 10:05:17 2019 +0000"
      },
      "message": "Java Heap Profiler for Perfetto.\n\nThis adds a new ART plugin that waits for a signal (number 38), when\nreceived forks the process (so that the app stays responsive to the\nuser), then connects to Perfetto and writes out a proto describing the\ngraph of currently live ART objects.\n\nThis has several advantages over `am dumpheap`:\n* Because it forks, it has less impact on the user.\n* It only writes out the ownership graph, rather than also dumping the\n  contents of the heap.\n* As this is streamed into Perfetto, it can be correlated to other data\n  sources in the same trace file.\n\nTest: Flash; start data source; send signal 38; get heap dump\nBug: 136210868\n\nChange-Id: I1f75bc532fd0a6b8d5f7f474ac7154180677dedd\n"
    },
    {
      "commit": "a67daeba97fb1a469cb5764a7ced0d03fc206a38",
      "tree": "bc2c4f4bea8da9c2d7adb0bc3975edc775d4e2b7",
      "parents": [
        "d5a9587acd8fbc3aceddc51d436ebbec5633326c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 12 10:41:25 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 13 10:47:56 2019 +0000"
      },
      "message": "Fix race between post fork initialization and JIT.\n\nOnly start JIT threads after all zygote fork logic has been setup.\nFor robustness, also set the runtime state as the first thing post fork.\n\nTest: m\nChange-Id: Icf5db341275002599d0e89add4d9f6b2f799004d\n"
    },
    {
      "commit": "bfcea3dca82437ac6a0b824d6d2375629f7a0eaf",
      "tree": "e87d948f78c81f40217c5cd308097c788d39311c",
      "parents": [
        "6461124331de7707f3b109cec38337d851be997e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Aug 05 15:44:00 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 08 11:58:04 2019 +0000"
      },
      "message": "Jit-zygote: Postpone pre-compilation until boot is completed.\n\nCompile only needed (hot) methods during boot.\n\nThis saves about 1.5s from jit-zygote boot time.\n\nTest: device boots\nBug: 119800099\nChange-Id: If98540e42634bf1e9701231e5174d724e897ce67\n"
    },
    {
      "commit": "38a062eb7390f07ee0a318517f71d9b56491a5f7",
      "tree": "67204f1fbc785b888f9d5718e31cf22de6b2d727",
      "parents": [
        "e80ecf31e0d58a90d6b2a1d65ec090c03abc86dc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 13:59:27 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 05 19:27:58 2019 +0000"
      },
      "message": "Weaken 2 DCHECK()s in reflection.\n\nReflection can be used on classes that are being initialized\nrather than just classes that are already initialized as we\nwere previously asserting.\n\nTest: Additional tests in 100-reflect2.\nChange-Id: I072c28533e9248856b49fddb4bc46109448ee8a9\n"
    },
    {
      "commit": "7ee607e39cfbfc59616dbf4c063cd1169dc4350f",
      "tree": "7529abbedcb31c8a8093a58c2c25fb0831691de1",
      "parents": [
        "dd20d0006ff51a3aaaee8e8cb33cbbbd859b41f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 23 12:22:04 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 23 12:37:53 2019 -0700"
      },
      "message": "ART: Fix Runtime::GetStat\n\nReturn uint64_t, as data is actually stored as such. Remove ns\nto us conversion. Fix sensitive callers.\n\nTest: m test-art-host\nChange-Id: I506c90dbb179ffe010bb9cd6cc795edc280a9bc8\n"
    },
    {
      "commit": "5bef022af212e060a3e744e688ae2116849d4485",
      "tree": "be91c1f6cc7bcf8fbfe0b72c85c9f4bf0863adec",
      "parents": [
        "2d06e029b1c84916154b5960d2acd1c84706dc04"
      ],
      "author": {
        "name": "randy.jeong",
        "email": "randy.jeong@samsung.com",
        "time": "Mon May 27 10:29:09 2019 +0900"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 16 09:55:20 2019 +0000"
      },
      "message": "[RUNTIME] Ignore signal registration for debugging\n\nIt\u0027s difficult to identify native crash/error of 3rd party app.\nBecause they can control their app with own signal handling.\nTherefore I would like to support the way to ignore signal\nregistration in 3rd party app with the specific property.\n\nTo enable this, do just setprop \"debug.ignoreappsignalhandler 1\".\n\nTest: test app to hook signal, then setprop debug.ignoreappsignalhandler 1\n\nChange-Id: I56e2f1255a71abae339396379deb8cb5c31c25c5\nMerged-In: I56e2f1255a71abae339396379deb8cb5c31c25c5\nSigned-off-by: randy.jeong \u003crandy.jeong@samsung.com\u003e\n"
    },
    {
      "commit": "3068d582eff4552ff260d7966fcbdc93e17d0207",
      "tree": "bc894a414070a06ea2a231fb98607b57b8c3b0cb",
      "parents": [
        "991cd5cc16267b74e390f640eb441102062babb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 28 16:39:29 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 31 14:15:59 2019 +0000"
      },
      "message": "Clean up creating handles from `this`.\n\nMake these member functions static and take an additional\nparameter `Handle\u003c.\u003e h_this`. Callers mostly already have\na Handle\u003c\u003e to pass, so we avoid an extra StackHandleScope.\nThis pattern was already used for some functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nChange-Id: I4f4478b0526bcb2f3c23305d3b3cc4a65fff9ff5\n"
    },
    {
      "commit": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc",
      "tree": "bac59dd8a62ae9f410c707a4086c330b8923a55b",
      "parents": [
        "92ed90ca3897ae7861b22aa12740065152839649"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 16:47:08 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 08:10:30 2019 +0000"
      },
      "message": "Add default argument kIsInstrumented\u003dtrue.\n\nkIsInstrumented\u003dfalse is reserved for use by specialized\nentrypoints which are used only when we can ensure that\nthe code is not instrumented. So add the default argument\nto simplify all other callers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3419795794fec9a1733ab3ad698b6415dbac679d\n"
    },
    {
      "commit": "9ac09eeb8bbd48a343213a96f6e7e0328fe30447",
      "tree": "6351289596083d20ca236715d451b0d47ceb5fdc",
      "parents": [
        "eab0248f8785f25241011a953940ea5a4c5e7467"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 08 23:38:27 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 10 22:46:00 2019 +0000"
      },
      "message": "jitzygote: compile system server methods at boot.\n\nTest: m \u0026\u0026 boots\nBug: 119800099\nChange-Id: Ia02a68bc3f152fe9a733577e66f327264518fe6b\n"
    },
    {
      "commit": "0d54cfb1a696bfe9795bdee3653c130747b97fcc",
      "tree": "c0212ffcbb33e92629267d5d78537e3519da6730",
      "parents": [
        "fe613a7f8dd25ffde533df248a1a89c91353e2be"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 03 09:13:52 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 03 11:28:50 2019 +0000"
      },
      "message": "jitzygote: Special case system server to keep the JIT queue at fork.\n\nTemporary measure until we have a system server specific profile.\n\nTest: m\nBug: 119800099\nChange-Id: I58da2d96ec355e26f872b67b021c3b3dba26e2b4\n"
    },
    {
      "commit": "b74f307cda4b1b186dcbdf6c84f1ee02a50ad3cb",
      "tree": "080b8c9b4317e2b5f4c942d0c7be6dbb18200dfa",
      "parents": [
        "1db789ea17f87415a38d72066ca0baf3f5252474"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 01 15:19:00 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 02 15:59:33 2019 +0000"
      },
      "message": "ART: IWYU for HiddenApi domain\n\nMake the domain a known char storage and forward-declare in DexFile\nto significantly reduce the list of transitive includes. Fix up\nmissing includes.\n\nTest: mmma art\nChange-Id: I9d43113e982fc0b509fd9a8168c6788e9431500a\n"
    },
    {
      "commit": "501c3b073e2252f8f5ccb0f9a7aab9bcf8ad297c",
      "tree": "d09085d3dcab7eab57e2c826f8073a7ee4bd8449",
      "parents": [
        "ed42f62df5bb46168334dadecb5d143c38f7a88b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 17 21:54:27 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 18 16:08:27 2019 +0000"
      },
      "message": "Revert^2 \"Fix correctness for fast path class loading\"\n\nThis reverts commit 2e2f9e8c6989dec22e4199a773a1e03954f82365.\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nBug: 130746382\n\nTest: m test-art-host\nTest: atest vm-tests-tf\n\nChange-Id: I2b6e6be530bb8b6c6222b11b7d93fb1f574d2ea4\n"
    },
    {
      "commit": "2e2f9e8c6989dec22e4199a773a1e03954f82365",
      "tree": "ba9745bcf08b758d71b458929ca9bf35f9aa7a69",
      "parents": [
        "d399f579cf2a8462ef6f1fbea360fe62be174377"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 17 12:35:08 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 17 12:36:07 2019 -0700"
      },
      "message": "Revert \"Fix correctness for fast path class loading\"\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nBug: 130680590\n\nTest: TH\nThis reverts commit ef04ac6c05fa344428008ffa1eac7316c64a3467.\n\nChange-Id: I2ee8a20419da251eed2620b7feb390053c0cdcb9\n"
    },
    {
      "commit": "ef04ac6c05fa344428008ffa1eac7316c64a3467",
      "tree": "761ffc6c22a32f16dc3a42392f83c91ef23ef03d",
      "parents": [
        "1eb5d8770a533b86269e503a842f6b45591e87cf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 11 13:37:10 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 16 20:13:01 2019 +0000"
      },
      "message": "Fix correctness for fast path class loading\n\nFor the fast path, we currently remove all exceptions and only return\nClassNotFoundExceptions. This CL preserves exceptions that might occur\nsuch as linkage errors.\n\nThe follow up is to add an additional fast path for faster class not\nfound exception generation.\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nTest: test-art-host\n\n(cherry picked from commit ca19f9a8547999cb13de06458364d64ab143cb09)\n\nMerged-In: Iae55aaaae2be5b1330e8e54bee36e862cf9e12e0\nChange-Id: I0fff3a748c07b5f3e05f4de24d56678a8b046844\n"
    },
    {
      "commit": "c2f43576c379db5ec366f357800cf7442b8ab849",
      "tree": "88f8eb65594251371e7a9e9e9ff6e8a6563eda0d",
      "parents": [
        "f59bc11bc0bd6c443d5350f24e4569f841e0beea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 12:56:14 2019 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 15:21:44 2019 +0000"
      },
      "message": "Add native counterpart for VMRuntime.setProcessDataDirectory\n\nThis is used by the framework to pass the full path to app\u0027s data\ndirectory to ART, then used for storing anonymous vdex files.\n\nTest: compiles\nBug: 72131483\nChange-Id: I90de4b22f483a40f585f9b5583a14980b812f24b\n"
    },
    {
      "commit": "7126c5b47d34b9a4d6d7553b8ea48e5085ee6b41",
      "tree": "eeabacfcf1e75997c2c4755bb84ff63706eba46d",
      "parents": [
        "c088b2efe015d49f10597c515a7d749cb0856f84"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 05 00:02:51 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 11:34:09 2019 +0000"
      },
      "message": "Preverify InMemoryDexClassLoader-loaded classes from vdex\n\nThis patch creates a new subclass of OatFile - OatFileBackedByVdex -\nwhich initializes OatDexClass instances using the verification info in\na vdex file created by a previous instance of the class loader.\nThe OatFile is not backed by an actual .oat file.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692 -t 693\nChange-Id: I3fd055abe17ee9739c07f2e2f4fc2543e4ec8c9e\n"
    },
    {
      "commit": "35a3f6a09931ee631a0377ee3ca98a7fb1f4f61d",
      "tree": "c3bbc93f5d7c5c74b49a03fc9a2609f7a918840e",
      "parents": [
        "3bfc694a4bcc9ef3de19b94a34701c76c6008071"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 04 15:59:06 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 02 19:20:14 2019 +0000"
      },
      "message": "Create vdex file for dex loaded with InMemoryDexClassLoader\n\nPrevious CL introduced a background verification thread for dex bytecode\nloaded with InMemoryDexClassLoader. Extend the logic to collect the\nresults of class verification into an instance of VerifierDeps and dump\nit into a vdex file in the app\u0027s data folder.\n\nThe background thread does not collect full VerifierDeps (e.g.\nassignability dependencies, etc), just a bit vector of whether a class\nwas successfully verified or not.\n\nThe vdex format is extended to include boot classpath checksums and the\nclass loader context it was created for. These are optional and\ncurrently left empty for regular vdex files.\n\nThe generated vdex files are treated as a cache with a limited capacity,\ncurrently capped at 8 files. The least recently used file (in terms of\natime reported by stat()) is unlinked if the cache is full and a new\nvdex is about to be generated.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692 -t 693\nChange-Id: I26080d894d34d8f35f00c7925db569f22f008d2c\n"
    },
    {
      "commit": "331a5e101313838189933399b2017305493f9f58",
      "tree": "5a8f391ff9e36db8965f01603e15834c800b5fc5",
      "parents": [
        "4080b8febed8b82957274882a96b2a7d8625c32e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 22:46:16 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 02 16:31:01 2019 +0000"
      },
      "message": "Revert^2 Verify InMemoryDexClassLoader classes in a background thread\n\nWhen dex bytecode is loaded using InMemoryDexClassLoader, automatically\nspawn a background thread which performs bytecode verification on every\nclass.\n\nThis reverts commit b4bb63aa4be80722643611fc931976b3544f14b5. This CL\nfixes a previous issue where runtime threads are not allowed to load\nclasses in debuggable mode.\n\nBug: 72131483\nChange-Id: Icdeb5be2b33ef55675e3a23886e71ce3b4b02f43\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692\n"
    },
    {
      "commit": "9ef308da0ea8d1df2edf65d4957599fafcc56aeb",
      "tree": "de58aeef64d8657cb2026fd34998a76394ba4014",
      "parents": [
        "99c0795f715ae96ba90bd7a37032d0dc7bdad8c2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 28 11:06:26 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 01 13:41:48 2019 -0700"
      },
      "message": "ART: Forbid the zygote to load code outside of system\n\nProtect the window between runtime creation and forking.\n\nBug: 129454856\nTest: m test-art-host\nTest: Device boots\nTest: manual\nChange-Id: I6108b4196235cb2a2ede52e9d9e3450afe78f90e\n"
    },
    {
      "commit": "b4bb63aa4be80722643611fc931976b3544f14b5",
      "tree": "7982bd7e79474b24f8f258efec3ac64328b34d7e",
      "parents": [
        "71d614f12ad6da2f15e835e22fe577b2d1d86bb0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 19:38:10 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 19:38:48 2019 +0000"
      },
      "message": "Revert \"Verify InMemoryDexClassLoader classes in a background thread\"\n\nThis reverts commit d592dbe1e2b09079382713220b2ff59f02db1859.\n\nReason for revert: art buildbots crashing\n\nChange-Id: Ida6bb79cb498e708df5c535edc16e4fe9875442c\n"
    },
    {
      "commit": "d592dbe1e2b09079382713220b2ff59f02db1859",
      "tree": "0782c75d713200b1e99dee9f97b4898612b3fee3",
      "parents": [
        "0a20607d671bf001043ccb0cf156db16b4fc6bed"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 01 22:25:31 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 15:54:39 2019 +0000"
      },
      "message": "Verify InMemoryDexClassLoader classes in a background thread\n\nWhen dex bytecode is loaded using InMemoryDexClassLoader, automatically\nspawn a background thread which performs bytecode verification on every\nclass.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692\nChange-Id: Iad54f510de02cd073e68d775d34b7dd5bdef304e\n"
    },
    {
      "commit": "0a20607d671bf001043ccb0cf156db16b4fc6bed",
      "tree": "11f6e1d1e762f2708712cf120235ca1241d5f204",
      "parents": [
        "84a32cd944102f71bb9d532c8b3d35c6c1bbce92"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 28 12:29:22 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 01 15:37:30 2019 +0000"
      },
      "message": "Remove ART dependence on property debug.allocTracker.stackDepth\n\nAdded VMDebug API to set this property. It will be called from framework\ncode.\n\nTest: test-art-host\nBug: 37291459\n\nChange-Id: I832a013fc8685bf063809e9394e0524bd9cd422e\n"
    },
    {
      "commit": "b215557206a39d3d2373c4ba7095bdae6a705144",
      "tree": "d17a39d4016aac38abf0699269c2532b4c4e5376",
      "parents": [
        "184832a46b21ff3ebe54f50f21dd71f2292d8943"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Mar 27 14:25:53 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Mar 29 23:49:27 2019 +0000"
      },
      "message": "Add FinalizerTimeoutMs argument, and respect it\n\nAdd -XX:FinalizerTimeoutMs commandline argument, and make it\navailable for libcore.\n\nAdd 1336-short-finalizer-timeout to test it. Blacklist it for\nthe cases in which 030-bad-finalizers was known not to work,\nsince it\u0027s largely a clone. Disable it for gcstress, since timeout\nmargins are tight.\n\nIncrease timeout in 030-bad-finalizers due to gcstress issues.\n\nUse the result in 004-NativeAllocations and 030-bad-finalizers\nto avoid timeouts. Make 004-NativeAllocations more proactive in\navoiding timeout.\n\nThis is intended as a replacement for aosp/836642 .\n\nBug: 129350738\nBug: 68792448\nTest: Boot AOSP, TreeHugger\nChange-Id: I9aef9c9bacb7e8d851bd2c879ed9fb5b596abc60\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "0984e483c1b8033250a32b11f112ae3e65eef39b",
      "tree": "267b4f59818e5080dff726adf25e5b5710111377",
      "parents": [
        "621c8807f38fedab56ea701370a18df123177f67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:41:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "Style cleanup for ObjPtr\u003c\u003e-ify changes.\n\nReplace \"ObjPtr\u003c.\u003e const\" with \"const ObjPtr\u003c.\u003e\".\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5a1c080bc88b091e15ee9eb0bb1ef6f6f290701c\n"
    },
    {
      "commit": "0eefb9bad0b098e892f977694ad1207f3ef42c90",
      "tree": "9c1abc5959eaf2d6a3a420369ba642381febca04",
      "parents": [
        "5aead700219d9c9fc05524d5d72dc32cb1807c61"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 15:04:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Field and mirror::Executable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ib536df95543cb7240a5816bef019391bb90e6369\n"
    },
    {
      "commit": "34857b5fd3be5ee8cf1935bd1fbaad37a8e42768",
      "tree": "eabdd26615030bde559d939eb861f02290851c9e",
      "parents": [
        "3b45890cf987c0b57965acd78958cd8eca487b8e"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "Koji.Fukui@sony.com",
        "time": "Wed Mar 20 19:13:00 2019 +0900"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 12:12:13 2019 +0000"
      },
      "message": "Revert \"Revert \"Change state to waiting during aborting the VM\"\"\n\nThis reverts commit ebb481d070e3fdbb7950580e6f6886c3231a1ad9.\n\nDex2oatWatchdogTest.TestWatchdogTrigger passed.\nApply the change again.\n\nTest: ART_HEAP_POISONING\u003dtrue make test-art-host-gtest-dex2oat_test64\nBug: 127875380\nChange-Id: If4326990cd612815ffe1511490712ca8babfec55\n"
    },
    {
      "commit": "423bebb17f15c3867a52315f0ae421f08f14544f",
      "tree": "97bdf50c7144ae21e6abfe8bdc26858a6a10f94d",
      "parents": [
        "93d99f3665cbd890509f4c707e1a62c5f26d320e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 15:17:21 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 09:45:20 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::ObjectArray.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I611b3e49d3feed306f6cd35d2b662a1e727e24c6\n"
    },
    {
      "commit": "179b7c61ea6769b99f70c80a7a89cbb212423ec2",
      "tree": "06130898bfb2d8c3f71f4fe181277f20e1942726",
      "parents": [
        "c8b7d445e02b752a68d824e2bc69658dfb76288a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 13:38:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 25 16:54:37 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify String allocations, fix stale refs.\n\nObjPtr\u003c\u003e-ify String allocation functions and related code\nand remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr(). Fix\nstale reference uses in reference_table_test and stub_test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I42927fb8b7240e5132188f73318b2ccb218748fd\n"
    },
    {
      "commit": "7458291cbaf549c4a9739b444e314f40f58a5520",
      "tree": "9f01f691b50a230690b4c9869787fa44a460bc6b",
      "parents": [
        "c2109c6803a5b7c23b0d59f67d13d58f97111e5b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 01 11:18:19 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 21 14:34:50 2019 +0000"
      },
      "message": "Open in-memory dex files into a single DexFile object\n\nRefactor the logic of opening dex from ByteBuffers so that all buffers\nare opened at once into the same DexFile/Element object. This effectively\nenables multidex in InMemoryDexClassLoader and will make it possible to\ngenerate a single vdex file for the whole class loader instead of one\nvdex per dex ByteBuffer.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nChange-Id: I5fb939072812745a2df0f323c502a1cf92069ed5\n"
    },
    {
      "commit": "f57f7d4cac1d54a54737252e1cf20bee1aace958",
      "tree": "f79d0eece6b4bfc78eb10e8add75de8cf6c0b7b8",
      "parents": [
        "2faab0064bccdf06a454ba5fc37f2cfeceab78bc"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Mar 14 17:49:26 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Mar 20 15:26:54 2019 +0000"
      },
      "message": "Change registerNativeAllocation to long argument\n\nBug: 128423826\nTest: AOSP boot and TreeHugger\nChange-Id: I460b4e692604a433e145e3b243ae6453bdec3fc6\n"
    },
    {
      "commit": "3383f9c81211ebb4185c861d8acb3d9de0df78ee",
      "tree": "994deadcdb15334dcbe54aed80c28ff98077c2fb",
      "parents": [
        "7286ad6c340b11f28240a049cf3225a3d58ebc67"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 15 11:46:08 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 19 21:37:36 2019 +0000"
      },
      "message": "ART: Conditionally remove loaded-oat-count check\n\nIn the case of the system server, oat files may be loaded before the\ncheck applies.\n\nBug: 128688902\nTest: m\nTest: manual\nMerged-In: I1c12463e905115e858cc0c52711dd82a4f06425d\nChange-Id: I1c12463e905115e858cc0c52711dd82a4f06425d\n"
    },
    {
      "commit": "ebb481d070e3fdbb7950580e6f6886c3231a1ad9",
      "tree": "af6986daab73dcd17dca5f4bab68024c12c40c83",
      "parents": [
        "a1e5b97b4bb4c47c2ab51d8a7d5dd1500d496c4d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 09:30:35 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 12:33:11 2019 +0000"
      },
      "message": "Revert \"Change state to waiting during aborting the VM\"\n\nThis reverts commit 97b964960123d5f215a1cebbce548c8a5322c307.\n\nBug: 127875380\n\nReason for revert: Broke Dex2oatWatchdogTest.TestWatchdogTrigger on host x86_64 and heap poisoning.\n\nChange-Id: Iaebfc4a03543bff4e7239d711dd7ad8c7f880d52\n"
    },
    {
      "commit": "97b964960123d5f215a1cebbce548c8a5322c307",
      "tree": "04239f8bc25ce6f22bda774bbae37755ed8acb27",
      "parents": [
        "26a5dd6fd1d65de29ba85e4bb61d9267dd428238"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "koji.fukui@sony.com",
        "time": "Tue Mar 05 12:22:57 2019 +0900"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 18 17:19:04 2019 +0000"
      },
      "message": "Change state to waiting during aborting the VM\n\nSymptom:\nProcess freeze when multiple runtime error happen on runnable threads.\n\nRoot cause:\nWhen multiple runtime error happen, only one thread locks abort_lock_\nand other threads are blocked even if they are runnable state.\nIf an other thread tries to suspend blocked threads at the same time,\nblocked threads can\u0027t be suspended until abort_lock_ is unlocked from\nowner thread. But owner thread can be suspended even if it locks\nabort_lock_. Thus, these threads causes dead lock.\n\nSolution:\nChange state to waiting when locking abort_lock_.\n\nBug: 127875380\nChange-Id: I7e914924690bb30d6d0490cf5f8afdb1c3cd4e4a\n"
    },
    {
      "commit": "e095c9135a6b28c3e8059a9a55d4c479f3e2c7f3",
      "tree": "1cc69dbb19fc52285ea19fa6b72e46fa17d2f7ff",
      "parents": [
        "b214694e13890559ae587263f93eb3cfdd63eaa1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 14 13:38:49 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 15 02:01:41 2019 +0000"
      },
      "message": "ART: Cache Runtime* in nativePostForkChild\n\nPreparation for future change.\n\nBug: 125474642\nTest: m test-art-host\nTest: Device boots\nChange-Id: I69018b9afe2063ca6ba8dd9f70f3b996888611a4\n"
    },
    {
      "commit": "8682354d448e1c3c355dbcac07b77e9c40e35987",
      "tree": "a8e99b9b44617c6d9f52501069d44db773d0df47",
      "parents": [
        "1f146b7db14c976987033224caf90831bbf11b10"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 25 09:38:49 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 13 18:19:00 2019 +0000"
      },
      "message": "ART: Allow to change boot image pickup order\n\nAllow to change the pickup order of boot image files between\nsystem-first and data-first.\n\nBug: 126307038\nTest: m test-art-host\nTest: Boot device with image in /data/dalvik-cache\nChange-Id: Id80cfc06aeb023559e1a3706833e57ba4880f43b\n"
    },
    {
      "commit": "175ce3dea89a40e68a685d7f873e8b9f082c45a6",
      "tree": "f4ba53dc33aca3ae71fd006b282a55dc926e53c9",
      "parents": [
        "cc292c611af7cdea6a2d9196fc347468b9233f71"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 06 16:54:24 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 08 01:22:42 2019 +0000"
      },
      "message": "Add callback for notifying that startup is completed\n\nAdd a callback that can be called to denote that application startup\nis completed. This may affect how the profile is collected and how\nstartup related caches are managed.\n\nBug: 123377072\nBug: 120671223\nTest: test-art-host\nChange-Id: If7eb8909cc5e99082a2243b5029380244b46174d\n"
    },
    {
      "commit": "de1b2a2113b9e2c44b90c441177060142c7abbfd",
      "tree": "1e710fb3c5fdf8c11858a6a2418a53a5ad1ab1d8",
      "parents": [
        "ffe26cc54fac4f1997e5dbf6991da9e95ce49e31"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 27 09:10:57 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 27 12:44:48 2019 +0000"
      },
      "message": "Revert \"Revert \"Add support for booting with a boot classpath not fully AOTed.\"\"\n\nThis reverts commit 14bfeddf2e434954f0ca36687ac0fc5dc6412bd3.\n\nReason for revert: Removes obsolete DCHECK\nBug: 119800099\n\nChange-Id: Ia984f95300c6b96165f0179bfc2f66b012bf5dbe\n"
    },
    {
      "commit": "14bfeddf2e434954f0ca36687ac0fc5dc6412bd3",
      "tree": "59b23768c4d886e99bd81968e0eaf26ff2160a37",
      "parents": [
        "e55ea985ab4f77ca9557e33a2d29dc1a1f0ac078"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 26 22:16:07 2019 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 26 23:59:26 2019 +0000"
      },
      "message": "Revert \"Add support for booting with a boot classpath not fully AOTed.\"\n\nThis reverts commit 7417ce97c4dcabbd7423d46ff9b7cdaf95c1e0f9.\n\nReason for revert: Breaks debug mode\n\nBug: 119800099\nBug: 126239181\nChange-Id: I2d4a79f957a020cc6404a130536a416daebc94e3\n"
    },
    {
      "commit": "7417ce97c4dcabbd7423d46ff9b7cdaf95c1e0f9",
      "tree": "3e84a40b0da5f826cbfd5ff4fb93c0b3dd4355e3",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 01 10:52:42 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 19 17:59:31 2019 +0000"
      },
      "message": "Add support for booting with a boot classpath not fully AOTed.\n\nBug: 119800099\nTest: adb shell setprop dalvik.vm.boot-image \"/system/framework/nonexistent.art\"\n\nChange-Id: I6641399f43c24702f19f4d976c6054d77186799e\n"
    },
    {
      "commit": "a88abfa91af92e87b806529813a1787568fdb032",
      "tree": "632ae56a03fb3178f093e9722eccfe9c24a5fc1a",
      "parents": [
        "2f34e59c10c30ea24fa5f4bc4e3d5a9dc6469c34"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 04 11:08:29 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 06 12:21:04 2019 -0800"
      },
      "message": "Add feature flag for loading app image startup cache\n\nPassed from the zygote.\n\nIf false, app image string intern tables and preresolved strings are not\nloaded. This means the intern strings are generated by walking the image\ninstead of looking at the app image intern table directly.\n\nBug: 123524494\nBug: 116059983\nTest: test-art-host\nTest: adb shell device_config put runtime_native use_app_image_startup_cache true\n\n(cherry picked from commit 5153419cba1cdfb6d5e5baba3e45fcf703c9daec)\n\nMerged-In: I6f800d1d989fd5e5b23166a115b1b241efac7ad2\nChange-Id: I119948efd25c039a057f283c19b23431093659f4\n"
    },
    {
      "commit": "4bcd65753c1e49ceba2c41983f26af81ae319670",
      "tree": "3fc7bd53d37448621726dc508f173490807af9c7",
      "parents": [
        "2da3cbb4af20a64108e474c0bbbe0cc5d3af2aa2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Feb 02 20:08:44 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 04 15:00:20 2019 +0000"
      },
      "message": "Take hidden API into account during getDeclaredMethod()\n\nGenerics make it possible for two methods to have the same name and list\nof parameters but differ in their return type. Class.getDeclaredMethod()\ndoes not allow callers to specify the type, so either of the matching\nmethods can be returned (ART will prefer the non-synthetic one).\n\nHowever, Class::GetDeclaredMethodInternal() did not use to take hidden API\ninto account and could return a hidden method, despite a non-hidden one\nbeing available. The reflective call would then reject the method and\nthrow NoSuchMethodException.\n\nThis patch modifies Class:GetDeclaredMethodInternal() to consider:\n(a) hidden/non-hidden\n(b) virtual/direct\n(c) synthetic/non-synthetic\nin that decreasing order of importance and pick the best matching\nmethod. The hiddenness checks are performed with AccessMethod::kNone\nso as to not trigger warnings. A hidden method may still be returned and\nthe caller should do the access check again with the appropriate\nAccessMethod.\n\nBug: 122291025\nTest: art/test.py -r -t 690-hiddenapi-same-name-methods\nChange-Id: Iaee780c1e87f5587f51e24b517b2b37101c729e3\n"
    },
    {
      "commit": "1a041486850aa462de5ed16c54f028ad97a8eb6e",
      "tree": "38d8fdf2848203fae31372447328f3f7b143f064",
      "parents": [
        "26e2eb689f595e2f1d3cd436198bc1233c4179db"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 18 17:55:08 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 24 13:27:07 2019 +0000"
      },
      "message": "Fix bug in InMemoryDexClassLoader loading\n\nInMemoryDexClassLoader can load dex files from both direct and indirect\nByteBuffers but it only respects the buffer\u0027s current position for the\nlatter and assumes the position is zero for the former.\n\nBug: 123337866\nTest: art/tools/run-libcore-tests.sh\n\nChange-Id: Id294814c68f7e9e859d67c12fe1f62e52e84c45e\n"
    },
    {
      "commit": "e7681823f8259c8c04ce0c361746216606784e69",
      "tree": "8bd248fc6be126d7d4e55bb4072ed24b2851ebbd",
      "parents": [
        "90faceb71e25748172ba6369209f8a2a66735394"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 14 16:25:33 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 10:22:27 2019 +0000"
      },
      "message": "hiddenapi: Print warnings for @CorePlatformApi violations\n\nWhen accessing a method/field at runtime, determine the context of both\nthe caller and the callee, and add new logic for the case\n\"platform -\u003e core-platform\" which used to be always allowed.\n\nIf the callee is marked with kAccCorePlatformApi, access is allowed.\nIf not, a warning is printed into logcat.\n\nBug: 119068555\nTest: 674-hiddenapi\nChange-Id: I64839596bf6eb06d7a169fd59b18fd82c140ce6e\n"
    },
    {
      "commit": "fe2886de2a9f06f286fe905ce8417981b9089c5c",
      "tree": "060025813c4ab6d3bfd98aaafa54a97be342a0c0",
      "parents": [
        "d7d3f6fa1870b9e9b8f58ab7854e5eeee071ba2e",
        "226805d9b81ba442251d0e2c4baedc36fcda6592"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "message": "Merge \"Deoptimize zygote compiled methods in DeoptimizeBootImage.\""
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "226805d9b81ba442251d0e2c4baedc36fcda6592",
      "tree": "3a256b1d36894d8d43ec9650f2a3f55c90c4730c",
      "parents": [
        "96453b7d6aa445c6609aa465df5d66ae0beb7956"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 14 10:59:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 19 09:22:01 2018 +0000"
      },
      "message": "Deoptimize zygote compiled methods in DeoptimizeBootImage.\n\nThose methods don\u0027t get compiled with the \"debuggable\" flag,\nso we need to deoptimize them.\n\nAlso fix a bug revealed by the new test where a concurrent\nJIT collection happens when trying to disable it.\n\nAlso make DeoptimizeBootImage truly mutator lock exclusive.\n\nTest: 689-zygote-jit-deopt\nChange-Id: I00607dbe100350c5328293c35c87946fa97924b8\n"
    },
    {
      "commit": "4eebb0edb078b4e474e6bb9527c4778571025516",
      "tree": "c0f395c607f46e17c8a5f21162cdce5668a17957",
      "parents": [
        "777cb01e3cdebbb5a578d67b631c34c9e4a517da"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 18 18:09:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 18 18:09:02 2018 +0000"
      },
      "message": "Remove Trace.Pause/Resume.\n\nResume was never wired up anywhere, and the zygote-tracing functionality is untested.\n\nTest: build\nChange-Id: I5ae0a8132ebffcbdcfde77caee5bcab415d6f063\n"
    },
    {
      "commit": "c220f981809d655fb061c92a581fd6fc4df4da5c",
      "tree": "77f494f865e9b3c24340b5761a5d762408eb3a78",
      "parents": [
        "5de31a1dd5ac6e12b37517550a609b9c0576f685"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Oct 12 16:15:45 2018 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Dec 12 21:03:14 2018 -0800"
      },
      "message": "Change GC triggering to use mallinfo()\n\nRevise the test of whether we should collect based on native allocation\nto be based on mallinfo.\n\nMake the GC triggering threshold for native allocations grow somewhat\nwith the Java heap size to account for the added cost of Java\ncollection. We currently compromise between that goal and a\ndesire to avoid drastic changes that might provoke new heap\ngrowth issues. It does now take more native allocations to\ntrigger a GC earlier in the normal Java GC cycle than later in the\ncycle, as it should.\n\nAdd the notifyNativeAllocations() interface to replace\nregisterNativeAllocation() in the common case in which native memory\nis completely allocated via malloc(), and thus no longer needs to be\naccounted for separately. Arrange for it to be called much more\nrarely, since its cost is higher, and we can save time by not going\nthrough JNI on every allocation.\n\nAdd 175-alloc-bignums test.\n\nCleanups/fixes:\n\nFix race in IsOutOfMemoryOnAllocation.\n\nRename max_allowed_footprint_ to avoid suggesting it\u0027s a hard limit.\nIt wasn\u0027t and it isn\u0027t. Make it atomic, since it\u0027s concurrently\nmodified.\n\nFix a few cases in which unsigned counters could become negative.\nI think the only bad consequences of this were weird log messages.\n\nFix integer sizes/signedness around GrowForUtilization.\nUse uint64_t only when we can exceed address space size, and\nsize_t otherwise. Improve overflow checking.\n\nMake allocator or collector tests check the important kinds first, since\nthey\u0027re not always known at compile time.\n\nBug: 111447610\n\nTest: Built and booted AOSP. Ran 175-alloc-big-bignums.\n\nChange-Id: I55deac86622019fb85bbd569c3ae8afab2d13d9a\n"
    },
    {
      "commit": "afc60cd6ddcd15353698bb453716313dea241ef8",
      "tree": "708bbf11e425ddb7a75874f27d272fd5484d0bf1",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 05 11:59:31 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 11 11:32:37 2018 +0000"
      },
      "message": "Cleanup native debug interface api.\n\nStrongly type the DEX file arguments.\n\nRemove the need for callers to worry about locks.\n\nUse std::map instead of std::unordered_map internally.\n\nTest: ./art/test.py -b -r -t 137\nChange-Id: I8bd79b796b5c7da265afc43a07ed227f550116c7\n"
    },
    {
      "commit": "a9a0973ff03ce2c2d1ec65695ad0f4cd8ed170a7",
      "tree": "9f00efead2c694b2a590f8c4890a9052571bbcff",
      "parents": [
        "260a50cb43618dfdd325e7c89745d8bc38b20292",
        "d19085141ad9c71eae1b0ff585999ac8e27dadd4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "message": "Merge \"Pass boot class path to ImageSpace::LoadBootImage.\""
    },
    {
      "commit": "d19085141ad9c71eae1b0ff585999ac8e27dadd4",
      "tree": "24284e84f5df4601bacc2a97c56af1bc5950c253",
      "parents": [
        "523940b40f9701504d6e007dd2af48f315038dc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 22 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 06 14:43:07 2018 +0000"
      },
      "message": "Pass boot class path to ImageSpace::LoadBootImage.\n\nWhen loading the boot image by ImageSpace, do not rely on\nthe boot class path (BCP) recorded in the primary boot image\noat file. Instead, check the BCP from image against the BCP\nprovided by the Runtime, i.e. from -Xbootclasspath:_ or the\nenvironment variable BOOTCLASSPATH. For now, allow Runtime\nto extract the BCP from the primary boot image oat file when\nwe have -Ximage:_ but no BCP.\n\nAlso pass the boot class path components down to the OatFile\nso that we can open and use the original dex files when we\ndo not have copies in the vdex files. This allows compiling\napp prebuilts when the boot dex files are uncompressed and\naligned in the original jars.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: Manually create boot image jars with uncompressed and\n      aligned dex files, compile a boot image with dex files\n      not copied into vdex files and use this boot image for\n      compiling a prebuilt services.{art,vdex,odex}.\nBug: 119868597\nChange-Id: If9411ddbecf6bb90bfa9233040931c5e833f6aee\n"
    },
    {
      "commit": "ce9ed3669d041d9eb2f5489596f133248d90f497",
      "tree": "f95fc9d6fc78119686fe91db5c2aaabd31b6abb1",
      "parents": [
        "69431d3ba1c560f0b23bd2ad6257949deb679aa7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 03:19:28 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 06 14:12:34 2018 +0000"
      },
      "message": "Enable JIT in zygote.\n\nbug: 119800099\nTest: boot test\nChange-Id: I92dc59adeaf1202a984d363b1420ef26e53ebe84\n"
    },
    {
      "commit": "8b751c59ed5331551648309bde6a19ec833fc46e",
      "tree": "7092b4556be47a205e469c20ae30737a4ff26260",
      "parents": [
        "94d4f5fa020561a1f828828dce1edf8fb5d4ab5c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Dec 05 12:25:31 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Dec 05 12:25:31 2018 +0000"
      },
      "message": "ART: Move EnableDebugger to frameworks\n\nBug: 120485385\nTest: cts\nChange-Id: Ied6ef5e846417fa264d0f5c009780d22219d14e5\n"
    },
    {
      "commit": "c9de61cf9477e221e0dcc6470de9bf73c0559cf0",
      "tree": "db42f9c3b26d7543b7c378397debfc0595925ba6",
      "parents": [
        "763cd98161424cf19af2f113a6802f04860dcd6e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 27 17:34:31 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 27 18:01:19 2018 +0000"
      },
      "message": "Revert^2 \"Refactor code around JIT creation.\"\n\nThis reverts commit 763cd98161424cf19af2f113a6802f04860dcd6e.\n\nBug: 119800099\n\nReason for revert: Updated the DCHECKo take into account current state\nof zygote not having a thread pool.\n\nChange-Id: I1181ff85e7aebd062ee892548b80ab3de06a5ac7\n"
    },
    {
      "commit": "763cd98161424cf19af2f113a6802f04860dcd6e",
      "tree": "bfb50d986ad25030ecfde9b3a4e1ffd8983e30f6",
      "parents": [
        "7a2c7c2f7062d9fef21b72ff9c10ca8ef863eb8b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 26 18:21:45 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 26 18:21:45 2018 +0000"
      },
      "message": "Revert \"Refactor code around JIT creation.\"\n\nThis reverts commit 7a2c7c2f7062d9fef21b72ff9c10ca8ef863eb8b.\n\nReason for revert: Breaks boot in debug mode\n\nBug: 119800099\nChange-Id: I6d015b04c480f76824ead936238cbf49b164b7e3\nTest: N/A\n"
    },
    {
      "commit": "7a2c7c2f7062d9fef21b72ff9c10ca8ef863eb8b",
      "tree": "909d18e31d319313a0729019258418980c810d79",
      "parents": [
        "c754cc8e1c2dbcb1331ec2bed3ea0787bdd2b5c3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 20 10:03:13 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 21 11:09:49 2018 +0000"
      },
      "message": "Refactor code around JIT creation.\n\n- Create the JIT early on.\n- Have dedicated zygote spaces, that get assign after the fork.\n- Re-parse compiler options after fork to take into account customization\n  of debug flags by the child.\n\nCurrently, we only create the thread pool in the child, so the zygote\nisn\u0027t jitting yet.\n\nBug: 119800099\nTest: test.py, device boots\nChange-Id: I591ce933ebf54a67937ab1d05206534f55ef2f65\n"
    },
    {
      "commit": "54c7da9c50ee85ade636605cd6ea18b4c2bc69fa",
      "tree": "57e1a23dcc0beba8e98841b8cf063f6153b08c9b",
      "parents": [
        "d94653399e2f9f06bbdf629f2affbf9a4fa73b8f",
        "2bb2fbd2879d0a6d9ebf7acff817079dde89b417"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 14:21:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 16 14:21:47 2018 +0000"
      },
      "message": "Merge changes Idc6e518c,Ia1cc0506\n\n* changes:\n  Create SdkVersion enum, migrate users to it\n  Runtime flags only for fast/slow hiddenapi path\n"
    },
    {
      "commit": "bf86464506dce85a7b67ea1c4eb3e1f4f1d2085f",
      "tree": "92627875da9819cfafe2b6f69b2f74961da6b350",
      "parents": [
        "4c8cf12c4d7a55566054c24e3067672213502ee0",
        "2b6b3e5317c2159e97e56173fa559479f757980e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 16 13:04:52 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 16 13:04:52 2018 +0000"
      },
      "message": "Merge \"EnableDebugger: handle the case when hard RLIMIT_CORE is \u003cinf.\""
    },
    {
      "commit": "2bb2fbd2879d0a6d9ebf7acff817079dde89b417",
      "tree": "d607aa6bfb2ea55fbfd875237b37c79f3cfed5f6",
      "parents": [
        "85865697ff9fabede3d64ff64cde72727c3fc4c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 13 18:24:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Create SdkVersion enum, migrate users to it\n\nCreates a new SdkVersion enum with integer codes of known\nAndroid SDK versions, together with helper functions for common\npredicates. Also converts target_sdk_version_ in Runtime to\nuint32_t and cleans up its uses.\n\nTest: m test-art\nChange-Id: Idc6e518c8675068bf952d0256686c88bb0eb833e\n"
    },
    {
      "commit": "2b6b3e5317c2159e97e56173fa559479f757980e",
      "tree": "8addc71e8a406db574017764b6cc4ed71b39bd7d",
      "parents": [
        "23d3ed8c124f239d26a583f9d096b22f7f6677d1"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Nov 05 17:03:43 2018 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Nov 15 13:23:59 2018 -0800"
      },
      "message": "EnableDebugger: handle the case when hard RLIMIT_CORE is \u003cinf.\n\nASan and HWASan set rlim_cur \u003d rlim_max \u003d 0 for RLIMIT_CORE.\n\nBug: 112438058\nTest: SANITIZE_TARGET\u003dhwaddress, no RLIMIT_CORE warnings in logcat\n\nChange-Id: I8839705673c371b9b393eca36c7519a1ea73d7be\n"
    },
    {
      "commit": "f50ac103426588d9f7c014ef2d2b9c766f8dc25e",
      "tree": "bac6537c3cd63cc382e24d9b94f0eb64f18ab0a4",
      "parents": [
        "b56e8353020acda1a8285daa11c69f57060cd015"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 17 18:00:06 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 14 16:49:40 2018 +0000"
      },
      "message": "Simplify hidden_api.h logic\n\nRefactor GetMemberAction to return a boolean whether access to a class\nmember should be denied. This also moves StrictMode consumer\nnotification into hidden_api.cc and removes notifications for toasts.\nTests are changed accordingly.\n\nTest: phone boots\nTest: m test-art\nMerged-In: I02902143de0ff91d402ba79c83f28226b1822a6f\nChange-Id: I02902143de0ff91d402ba79c83f28226b1822a6f\n(cherry picked from commit 51995f90adaa0e5047dee56d22f15e4225e70517)\n"
    },
    {
      "commit": "104883b04617a850adf11f05e57c2fd29e09c83c",
      "tree": "51d436588505a3ead506d633bdf97c9b4c934ae0",
      "parents": [
        "00e96d054e2b656d4d0f99fc141d1701af4dba23"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 09 17:12:23 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 12 15:26:21 2018 +0000"
      },
      "message": "Clean up primitive array helpers in Object.\n\nRefactor these helpers and avoid read barriers. Remove\nClass::Is{Int,Long}ArrayClass() and use the Object helpers\ninstead.\n\nRemove the AsByteSizedArray() and AsShortSizedArray()\nhelpers that essentially break the type system and rewrite\ntheir users, adding appropriate notes. {Float,Double}Array\nuses in Unsafe would have previously failed a DCHECK().\n\nTest: Additional test in 004-UnsafeTest.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I88b7e3df7de883f64cfc5eb437a40646f2884685\n"
    },
    {
      "commit": "c2cab4b11b95147dd9dadb3378e10a891ee64ad6",
      "tree": "8595e62d3aa3dad700c3deec7765afacc6a9b963",
      "parents": [
        "b70c999fcc3ff4d4988e0214f4d18783ff35edf7",
        "9186b182c0e0e5d57dc15a03e4f8d0f2951f3a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 07 10:07:29 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 07 10:07:29 2018 +0000"
      },
      "message": "Merge \"Refactor ClassLinker::FindPrimitiveClass().\""
    }
  ],
  "next": "9186b182c0e0e5d57dc15a03e4f8d0f2951f3a96"
}
