)]}'
{
  "log": [
    {
      "commit": "422a9ebc5b9d780a3201243f02b58652b44d9896",
      "tree": "4fcd6abe72d70358d7bf6235266ab685b61678a1",
      "parents": [
        "9f18fbc433bba51a5b81249989a8726558135528"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 12:54:07 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 16:54:29 2019 +0000"
      },
      "message": "Do not hold lock when making class visibly initialized.\n\nDoing so can lead to deadlocks.\n\nBug: 138561860\nBug: 36692143\nTest: New test 177-visibly-initialized-deadlock\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\nChange-Id: I6195a4a5a7d865f90c529da684697b9a3e23ff30\n"
    },
    {
      "commit": "8e1106587f0273116302afe06956129b5d82784a",
      "tree": "e1869e8da9ab9a6bfdf89a34f4e8cedd44045005",
      "parents": [
        "5a11036542fbd2c00de1896c0ae2477f655e8ed3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 30 10:14:41 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 08:35:08 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized for allocations.\n\nAnd move the \"intialized but not visibly initialized\" check\nto ClassLinker::EnsureIntialized().\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: Ib5e19326b1149b2aef586b905ce89470c3a8e405\n"
    },
    {
      "commit": "f3677471a58c2738a3d9dd05f07f01c18a5e61be",
      "tree": "21b4279c1077e051b84aad12da29240672f54913",
      "parents": [
        "f1468b53d0427a45011fe6446d189babe0acd6e0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 26 16:31:53 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 29 22:22:53 2019 +0000"
      },
      "message": "Add ability to switch to index ids late.\n\nIn order to support some debugging features we need to have JNI code\nmostly running with jmethodIDs and jfieldIDs as opaque indexes\ndisconnected from any underlying art data-structure pointers. For\nperformance though we want to continue to use data-structure pointers\nas these IDs when debugging is not needed. To support both\npossibilities this adds support for changing from a \u0027swapablePointer\u0027\nto either \u0027pointer\u0027 or \u0027indicies\u0027 regime at runtime.\n\nThe SwapablePointer regime still uses pointers as the ids but creates\nthe data-structures needed to ensure that we can (1) detect that the\nmethods have pointer-type IDs and (2) we can change some\nWellKnownClass internal IDs from one to the other.\n\nCurrently one must select this mode explicitly using\n\u0027-Xopaque-jni-ids:swapable\u0027. Depending on when the final jni-id-type\nis selected a small amount of extra memory is used. Currently manual\ntesting of turning the default id-type to swapable and changing to\npointer immediately after zygote-fork shows a additional 40-90 kb of\nshared zygote-heap memory.\n\nTest: ./test.py --host\nTest: m libfieldcounts; \\\n      ./tools/jvmti-agents/field-counts/count-fields.py \u0027Ljava/lang/Class;.extData:Ldalvik/system/ClassExt;\u0027 \u0027Ldalvik/system/ClassExt;.jmethodIDs:Ljava/lang/Object;\u0027 \u0027Ldalvik/system/ClassExt;.staticJfieldIDs:Ljava/lang/Object;\u0027 \u0027Ldalvik/system/ClassExt;.instanceJfieldIDs:Ljava/lang/Object;\u0027 -p `adb shell pidof com.android.deskclock`;\n      Examine output\nBug: 134162467\n\nChange-Id: I1885b10056d5dcc65dad5ae4f858ddc12ba79403\n"
    },
    {
      "commit": "bf12191214c0d6215a98dfe846a51230d995dad9",
      "tree": "085c1059014ce66fdb7eceb6e8502d906f0eacbd",
      "parents": [
        "78342419743cb6d0f17dc2d4c0cd99d18d9c83d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 13:49:05 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 11:10:26 2019 +0000"
      },
      "message": "Implement ClassStatus::kVisiblyInitialized.\n\nPreviously all class initialization checks involved a memory\nbarrier to ensure appropriate memory visibility. We change\nthat by introducing the kVisiblyInitialized status which can\nbe checked without a memory barrier. Before we mark a class\nas visibly initialized, we run a checkpoint on all threads\nto ensure memory visibility. This is done in batches for up\nto 32 classes to reduce the overhead.\n\nAvoiding memory barriers in the compiled code reduces code\nsize and improves performance. This is also the first step\ntoward fixing a long-standing synchronization bug 18161648.\n\nPrebuilt sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19150696\n   arm64/boot*.oat: 22574336\n   oat/arm64/services.odex: 21929800\n - after:\n   arm/boot*.oat: 19134508 (-16KiB)\n   arm64/boot*.oat: 22553664 (-20KiB)\n   oat/arm64/services.odex: 21888760 (-40KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh -j4\nTest: testrunner.py --target --optimizing\nTest: Manually diff `m dump-oat-boot` output from before\n      with output after this CL without codegen changes,\n      with `sed` replacements for class status. Check that\n      only checksums and the oatdump runtime values of\n      DexCache.dexFile differ.\nBug: 18161648\nBug: 36692143\nChange-Id: Ida10439d347e680a0abf4674546923374ffaa957\n"
    },
    {
      "commit": "70e2a7694b1d9aa926e1ff05c541574d1d89a28c",
      "tree": "aefc1b15d28cacd17f61d18a4bcbe341b043effa",
      "parents": [
        "da40acad8760aacd4bc3b636fbdb5f8107d3e00f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 12 16:49:00 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 23 08:35:23 2019 +0000"
      },
      "message": "Initialize array classes in pre-fence visitor.\n\nRewrite array class initialization to make it easier to\nreason about memory visibility. Initialize all members in\nthe pre-fence visitor for the normal use case. Refactor\ninitialization of core array classes without boot image to\navoid special-casing in ClassLinker::CreateArrayClass().\n\nNote that the Class::object_size_alloc_fast_path_ field\nof primitive classes (instances of which cannot be\nallocated) will be kept at numeric_limits\u003cuint32_t\u003e::max().\nThe boot image before and after is otherwise identical.\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\nChange-Id: I570e3af011c8d3383ce46c81eb6f2fa60c5a4b0f\n"
    },
    {
      "commit": "bb5b4f35e7d4cfddb9aedb4f2ea35b017650cd58",
      "tree": "c62934250a5e74f1d194eeefa9bc8c7c9ee03131",
      "parents": [
        "4a30f89d65efa9b85c34bbd7aa23ea4cd38b920d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 09 02:31:48 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 10 15:54:45 2019 +0000"
      },
      "message": "Revert \"Disable opaque JNI Ids for now.\"\n\nWe were incorrectly using a potentially out-of-date pointer to access\nclass object fields. This could cause segvs if the class object moves\nduring certain allocations relating to JNI id allocation.\n\nThis reverts commit 1be9c72dd49e7620dd76a8b9cef23d7cde0a6b01.\n\nReason for revert: Fixed issue with gcstress\nTest: ./test.py --host --debuggable --gcstress\nBug: 134162467\n\nChange-Id: I6ee7fc4485bbae6f0f1d4f4af0e8c2bc88bf4075\n"
    },
    {
      "commit": "79d6c800cd8aa1da335ea0523c391852780ac02a",
      "tree": "a77faf41d7b658709113c72d7eaaaa1ce2ded6b5",
      "parents": [
        "01fbfbebceb00b94cc54738ebf425b6c4a79211a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 15:50:11 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Revert^2 \"Support using opaque JNI ids\"\n\nWe weren\u0027t handing the fact that encoding jmethodIDs could cause OOM\nexceptions in some places in reflection.cc. This could lead to\nattempting to use a null jmethodID as if it were a real id. This issue\nis fixed by the parent CL.\n\nThis reverts commit b476a29a2c.\nThis reverts commit 3b2905366c.\nThis Unreverts commit d5d645ffec.\nThis Unreverts commit 21d5994583.\n\nReason for revert: Fixed issue causing 004 debuggable flakes\nTest: ./test.py --host --jit --debuggable\nBug: 134162467\n\nChange-Id: Iece08ab299cd8a20f8382be7be6c3796858e70eb\n"
    },
    {
      "commit": "b476a29a2cda22b86fc1d96e4cc65ce36fb878af",
      "tree": "039eaee2edf5495275088d1c467e522977c6bcd6",
      "parents": [
        "3b2905366c6ee1eaba2d6477078e505e377343ec"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 07:54:48 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:16:04 2019 +0000"
      },
      "message": "Revert \"Support using opaque JNI ids\"\n\nThis reverts commit 21d5994583c679cd5d8573b5d35dbd659bdca2c7.\n\nBug: 134162467\n\nReason for revert: Breaks debuggable\n\nChange-Id: I9510a6ac208d392ff25ee196a1a519fecd151445\n"
    },
    {
      "commit": "21d5994583c679cd5d8573b5d35dbd659bdca2c7",
      "tree": "521906398a2f04048cc51b4f409b6a3ebc0c6ffa",
      "parents": [
        "5dfbe7ae9ed9a1a82446d32118190105a211a2d2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 19 12:58:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 20:22:39 2019 +0000"
      },
      "message": "Support using opaque JNI ids\n\nCurrently JNI ids (jmethodID \u0026  jfieldID) are created by simply\ncasting the corresponding ART structure pointer. This is great for\nsimplicity but means we are prevented from performing operations that\ncould change these pointer values. To support these use-cases add\nsupport for loading the runtime with a layer of indirection between\nthese ids and the internal art data types.\n\nCurrently the JNI id type can be toggled only by passing the new\n\u0027-Xopaque-jni-ids:{true,false}\u0027 flag during startup.\n\nThis changes the --debuggable test configuration to pass\n\u0027-Xopaque-jni-ids:true\u0027 in order to get test coverage of this feature\nusing the \u0027art-jit\u0027 configuration.\n\nTest: ./test.py --host --debuggable\nTest: ./test.py --host --debuggable --jit-on-first-use\nTest: ./test/testrunnner/run_build_test_target.py art-jit\nBug: 134162467\nChange-Id: Id8c8cb9a5b8ff18dc2f40892fae2d344a7214f44\n"
    },
    {
      "commit": "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff",
      "tree": "b1a58a51787768ff0af12a2ee1662ceeae78fdf1",
      "parents": [
        "63ab3e1fb635f346241ee5519bf52be8deb6ca60"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 06 14:23:03 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 10 17:37:57 2019 +0000"
      },
      "message": "Handle allocation failure in AddPreResolvedStringsArray\n\nMight fail on 32 bits if the address space is fragmented.\n\nRegression test is infeasible to add.\n\nBug: 134652205\nTest: test-art-host\nChange-Id: I8a254a27275be4e0ff39fdb72715771f4f77cf36\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": "991cd5cc16267b74e390f640eb441102062babb6",
      "tree": "d6112197d0bfec05d5a66da2b27578504385b9f5",
      "parents": [
        "78da5e255d1281412e9f7e4f0c9b4e90ba7f02b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 30 14:23:39 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 31 14:15:59 2019 +0000"
      },
      "message": "Add default template args to Heap::Alloc*Object*().\n\nNamely kInstrumented\u003dtrue and kCheckLargeObject\u003dtrue.\n\nThis is a follow-up after\n    https://android-review.googlesource.com/963693\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6c23e76f90f1892382c3bb8c331d12437bc23f89\n"
    },
    {
      "commit": "abdb4592fa28d6e75f1160f01cde58ad7c3fef37",
      "tree": "e887df0046489008f318fce65909ab0535aa386c",
      "parents": [
        "639e73b5ad1d96a1e67743735a13f7a268b455aa"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu May 16 08:33:12 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 20 19:35:19 2019 +0000"
      },
      "message": "Use string length from DEX instead of recomputing\n\nThis gives around a 2% improvement in startup time overall. Here are results from a selection of\napps:\n\ncom.android.gallery3d/.app.GalleryActivity: 203.2ms → 197.7ms (change: -5.4ms, -2.7%)\ncom.android.messaging/.ui.conversationlist.ConversationListActivity:\n  202.1ms → 199.1ms (change: -3.0ms, -1.5%)\ncom.android.contacts/.activities.PeopleActivity: 277.3ms → 270.7ms (change: -6.6ms, -2.4%)\ncom.android.camera2/com.android.camera.CameraLauncher:\n  351.7ms → 344.1ms (change: -7.7ms, -2.2%)\ncom.android.dialer/.main.impl.MainActivity: 259.5ms → 254.2ms (change: -5.3ms, -2.0%)\ncom.android.settings/.Settings: 189.0ms → 186.5ms (change: -2.4ms, -1.3%)\ncom.android.email/.activity.Welcome: 222.8ms → 219.3ms (change: -3.6ms, -1.6%)\norg.mozilla.firefox/.App: 370.2ms → 358.3ms (change: -11.9ms, -3.2%)\n\nThis is the average of 100 runs on a Pixel 2 XL.\n\nBug: 132691958\nTest: device boots, start app many times\nChange-Id: I93b6eb5105e32788cfc8159c6c21b400a161f86c\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": "552a13415573da19eafa46e1ac00fb0eb68f2b23",
      "tree": "8cae5f3602d8f8e65cd3cbc349af17d785128605",
      "parents": [
        "0dda8c84938d6bb4ce5a1707e5e109ea187fc33d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 10:56:47 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 14:44:09 2019 +0000"
      },
      "message": "ART: Optimize StringBuilder append pattern.\n\nRecognize appending with StringBuilder and replace the\nentire expression with a runtime call that perfoms the\nappend in a more efficient manner.\n\nFor now, require the entire pattern to be in a single block\nand be very strict about the StringBuilder environment uses.\nAlso, do not accept StringBuilder/char[]/Object/float/double\narguments as they throw non-OOME exceptions and/or require a\ncall from the entrypoint back to a helper function in Java;\nthese shall be implemented later.\n\nBoot image size for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19653872\n   arm64/boot*.oat: 23292784\n   oat/arm64/services.odex: 22408664\n - after:\n   arm/boot*.oat: 19432184 (-216KiB)\n   arm64/boot*.oat: 22992488 (-293KiB)\n   oat/arm64/services.odex: 22376776 (-31KiB)\nNote that const-string in compiled boot image methods cannot\nthrow, but for apps it can and therefore its environment can\nprevent the optimization for apps. We could implement either\na simple carve-out for const-string or generic environment\npruning to allow this pattern to be applied more often.\n\nResults for the new StringBuilderAppendBenchmark on taimen:\n  timeAppendLongStrings: ~700ns -\u003e ~200ns\n  timeAppendStringAndInt: ~220ns -\u003e ~140ns\n  timeAppendStrings: ~200ns -\u003e 130ns\n\nBug: 19575890\nTest: 697-checker-string-append\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\nTest: vogar --benchmark art/benchmark/stringbuilder-append/src/StringBuilderAppendBenchmark.java\nChange-Id: I51789bf299f5219f68ada4c077b6a1d3fe083964\n"
    },
    {
      "commit": "391be3ab96ebe8d9cc00849a3bb8058708416000",
      "tree": "a3c56b6250b34e23eedac6d50c65b164e959a62f",
      "parents": [
        "0c2313c2d119e32ac27dae6513a9406ea087bfa9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 14 12:41:40 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 16 00:59:49 2019 +0000"
      },
      "message": "ART: Forward-declare AllocatorType (iwyu)\n\nTest: mmma art\nChange-Id: I064a1664727dfbed6ae91bde1658c7ba021bcc94\n"
    },
    {
      "commit": "3ff45bf767f4f1baf858e2220e36acffa97b0383",
      "tree": "36ce6df2db8983a904a619ab3b2fd70ef22a817a",
      "parents": [
        "539376351abd8de035aae3a7ea2c9edd186a1b8c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 08 16:58:52 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 08 16:58:52 2019 -0700"
      },
      "message": "ART: Small iwyu\n\nForward-declare StrideIterator in class.h\n\nTest: mmma art\nChange-Id: I7651c4011dfa4c266d7e6fb04c7c149d7d17a727\n"
    },
    {
      "commit": "c6934e36d33ab402b7b51c78d46c319fc33e8ef3",
      "tree": "cec68ac35886015369bca93d5987889552327ac6",
      "parents": [
        "552ba72fce139aa2b0a80d1a2b920c5e8fadaf58"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 10 11:40:01 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 08 08:19:28 2019 +0000"
      },
      "message": "Avoid some read barriers in ClassTable.\n\nAnd clean up ClassTable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 119486698\nChange-Id: Ie413bc5a56eb548352ae1fed0976b75c44e0c0d4\n"
    },
    {
      "commit": "d355acfaf613d4020f1c2f4b526275c624fe887a",
      "tree": "c40094e3a866cdc27426c713108a67e5eda260b9",
      "parents": [
        "df1a7d458e3f4b5410562e7d86a3343155a44ce0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 21 17:09:40 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 03 08:07:46 2019 +0000"
      },
      "message": "Clean up Object size related read barriers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nTest: testrunner.py --host --interpreter --gcstress\nBug: 119486698\nChange-Id: I831838f230ebdd9e540462b2de56271895a01fad\n"
    },
    {
      "commit": "58412b1f6c6c1fb1f212dd4e2cb442541fc91df5",
      "tree": "d0da00907ee46faec095c9f2bd62b83da3d99000",
      "parents": [
        "dfc0de7696a50a9aeee95dcf74dac036e3334314"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 13:26:34 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 02 07:57:27 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify DexCache.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ic4747928255afca61aca6802e7fec0585c6c1226\n"
    },
    {
      "commit": "dfc0de7696a50a9aeee95dcf74dac036e3334314",
      "tree": "20a6edd33cca852f8e65ce8d20a85949b566904c",
      "parents": [
        "9ef308da0ea8d1df2edf65d4957599fafcc56aeb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 10:57:55 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 02 07:57:27 2019 +0000"
      },
      "message": "Partially ObjPtr\u003c\u003e-ify Object, fix stale ref in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I0c0bc669c0ab8d99185e662a2fec16f32a42a0a2\n"
    },
    {
      "commit": "bdc93b47e2e7e8f17413669e03bc461d259d16f6",
      "tree": "bd1c632196a437e90d012475afa83adf614be538",
      "parents": [
        "f52d92fce224c86491d9b0fd6fca805564119426"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 16:12:04 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 09:37:59 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify StackTraceElement and ClassLoader.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I457eeda55bbfb905dd2de0abd68451ab42ef9c1f\n"
    },
    {
      "commit": "f52d92fce224c86491d9b0fd6fca805564119426",
      "tree": "fbf38f272a980e965627918d9dc6bbb536395c00",
      "parents": [
        "e660f7232a19a2c173f562b8e0987755a78ee298"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 12:33:02 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 09:37:59 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify Monitor/-Pool.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I2d2ebc5ef56e73e5678e0cfcd84c479611dfcca8\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": "d7e9bbf092b5a61048358fd54183526ef12284af",
      "tree": "620cee17c499bdb23217224b0b1332408d725a6e",
      "parents": [
        "bb206de72135271e66e58576b1196f3e08d5b6fd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:18:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "Clean up explicit conversions to ObjPtr\u003c\u003e.\n\nAdd an ObjPtr\u003c\u003e::DownCast() overload that takes a plain\npointer and remove unnecessary calls to MakeObjPtr(),\nusually preceding DownCast(). Move the MakeObjPtr() to\ncommon_art_test.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I2a243b6d8f3b2e773396dfc53b659c5f7d9ea44a\n"
    },
    {
      "commit": "bb206de72135271e66e58576b1196f3e08d5b6fd",
      "tree": "3ecbb781735b26d43628cf0f08673ce9908d69fd",
      "parents": [
        "5fdd1e84e0e3c4da0e6beac66a5cdd81c34bf399"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 10:30:32 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassExt.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: If5fe3b9f6e10549b5ca3f395b0c83531cd3ba7a3\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": "621c8807f38fedab56ea701370a18df123177f67",
      "tree": "058a0b3e4157ef726f909b0efe14965a7e336513",
      "parents": [
        "0eefb9bad0b098e892f977694ad1207f3ef42c90"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:18:18 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::CallSite.\n\nAnd remove unused function CallSite::Create().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I936cda76543fb79edda1c2cc8671b0684fb9f08a\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": "5aead700219d9c9fc05524d5d72dc32cb1807c61",
      "tree": "84dac95f7627fefc8fd8d3dfbd5d6baf5d1e1a01",
      "parents": [
        "4f1e3288a845b91a5ce369865ec7e249f4f94622"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 11:00:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify method/var handles, fix stale refs in tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I89ea84f7970899643e437161b598d3232a182e98\n"
    },
    {
      "commit": "3b45890cf987c0b57965acd78958cd8eca487b8e",
      "tree": "18a3dd853e9829873688a6a61bda39dd681b2a27",
      "parents": [
        "423bebb17f15c3867a52315f0ae421f08f14544f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:08:41 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::Throwable.\n\nAnd do some cleanup after previously submitted changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I4f8e118bb385a9cba464a564b15addc1c7306ac2\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": "557feceeb438946e4a005471bc80935e5c0af195",
      "tree": "10c1d8acd53adb5739102efb6e0f691c83c10acd",
      "parents": [
        "c524e9e7e767be0801cf110310039635698c1532"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 14:29:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::IfTable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I77d36cc96f48ff92c1ca3b2581be7637a2ea22d7\n"
    },
    {
      "commit": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\n"
    },
    {
      "commit": "f57f2ed8c3f75c8d8c2c051f2961ca4e8330a698",
      "tree": "8a734652280d099f95d0d2f8cb358fcf56ca0d47",
      "parents": [
        "5cb98a99cff06cd6a5b94f7d819b180d6e621f32"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 25 15:55:42 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 09:52:25 2019 +0000"
      },
      "message": "ART: Clean up obj_ptr.h and obj_ptr-inl.h .\n\nMove ObjPtr\u003c\u003e member function definitions that depend on\nother functions in obj_ptr-inl.h also to the obj_ptr-inl.h.\nUse C++14 std::enable_if_t\u003c\u003e and C++17 std::is_base_of_v\u003c\u003e.\nImprove kObjPtrPoisoningValidateOnCopy code readability\n(avoid ternary operator). Move relational opeators to\nnamespace scope and reimplement !\u003d as negation of \u003d\u003d.\n\nAlso move PtrCompression\u003c\u003e::Compress(ObjPtr\u003c\u003e) to the\nobject_reference-inl.h which includes obj_ptr-inl.h.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I5116c0e322775c19a88687f30742ef654a8be873\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": "a040ddc1378118ac6b3735fa8333c1a19e646fe1",
      "tree": "87340e8d63e6e29c4adc38787323bd9b611f7d36",
      "parents": [
        "f57f7d4cac1d54a54737252e1cf20bee1aace958"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 15 13:14:11 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 20 17:27:16 2019 +0000"
      },
      "message": "Document when we can avoid read barriers.\n\nTest: Rely on TreeHugger.\nBug: 119486698\nChange-Id: I6d5e18709ff7d624eea7a083f39a56ed8f8ffa49\n"
    },
    {
      "commit": "6e7a72c5baa322f57fe6a52303dac45fba8edd25",
      "tree": "e2cde34e087bce7ea04322c6dca5d2fbc849698e",
      "parents": [
        "97b964960123d5f215a1cebbce548c8a5322c307"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 07 21:40:10 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 18 20:21:04 2019 +0000"
      },
      "message": "Release app image metadata when startup is completed\n\nThe app image startup cache is only required for startup. Release\nit after startup is completed.\n\nNote that the cache handles being zeroed out at any time.\n\nBug: 123377072\nTest: test-art-host\n\nChange-Id: Iaa1c800bd0de7290b44d814a21bda20298a10d5f\n"
    },
    {
      "commit": "3892e628ac617878251fa3c5e689ad661de0e289",
      "tree": "36268e3ce03b217728d16f85b78a4923adf5ea55",
      "parents": [
        "bfaba288427e80e7941e49c4264ba8f6cd6d97d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 15 15:22:18 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 18 09:51:37 2019 +0000"
      },
      "message": "Clean up Class::GetDescriptor().\n\nPull in helper functions Class::GetArrayDescriptor() and\nClassLinker::GetDescriptorForProxy(), avoid deep recursion\nfor multidimensional arrays and avoid a read barrier for\nGetName() for proxy classes.\n\nAlso avoid recursion in Class::DescriptorEquals().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I04201294434a00eb2f91c66403af45f715941be4\n"
    },
    {
      "commit": "c2e2c45f49da353bf3f67c0fb5a3e3dddd33479a",
      "tree": "ed652537cfa07424d0e839cacf0d749971e7e20e",
      "parents": [
        "da5f83d44fb302b2ca7091911dbcecdece7c529b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 28 13:06:33 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 01 09:52:21 2019 +0000"
      },
      "message": "Remove bogus ImageWriter friend declaration.\n\nThere is no art::ImageWriter, only art::linker::ImageWriter.\n\nTest: Rely on TreeHugger.\nChange-Id: I59b02debb861b783408ddcbcc90534d9a3b7907e\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": "2f34e59c10c30ea24fa5f4bc4e3d5a9dc6469c34",
      "tree": "9360a99feb7a1aa6fe7b2685429ddb49b17a5e7c",
      "parents": [
        "c66d6a7569ef72d9e9eb115bb7b663ccc8df5179",
        "7210108e6d930f9b8bcf5eac6b7a03ea29f92f84"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 18:00:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 06 18:00:50 2019 +0000"
      },
      "message": "Merge changes I14c7cddd,I4a39d0e8,I3f24c8f4,I9699f138\n\n* changes:\n  Replace StringPiece with std::string_view in art/runtime/.\n  Replace StringPiece with std::string_view in HashSet.\n  Replace StringPiece with std::string_view in Signature.\n  Replace StringPiece with std::string_view in class.h.\n"
    },
    {
      "commit": "eb37ba594146338bf7e7e2bf3769d08046fb263f",
      "tree": "7fac104aed3aec8d8390c8cbe1f7fbd85b4f998a",
      "parents": [
        "e027d727b833930f1bd0029bc1b2cf750d8af5da"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 14:10:38 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 12:24:10 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in Signature.\n\nAnd also in Signature-related code. Remove the function\nDexFile::CreateSignature() which was used only in a test\nas the test can use method searching functions that take\nstd::string_view instead.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I3f24c8f4f677e2e40503dbab347df1eb031b4132\n"
    },
    {
      "commit": "e027d727b833930f1bd0029bc1b2cf750d8af5da",
      "tree": "0bb05206b8c019798bd3ffede02fb9243d08e615",
      "parents": [
        "ac52000e86077b3c45c192ec259d72413599ff11"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 10:13:49 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 11:56:16 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in class.h.\n\nTranslate the std::string_view to StringPiece where\nneeded for comparing with Signature until we change\nthe Signature::operator\u003d\u003d() to take std::string_view.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I9699f13882353d84dc69e6b8e30d12dac4bace24\n"
    },
    {
      "commit": "a538ed5b56e3cdc43cb0c338f1e0826f4f79cc26",
      "tree": "c1b257b68c34411d8ff6add035aa383fae668388",
      "parents": [
        "9f3928f2f10ad53af12d825e093f57d337f2d570"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 05 08:46:14 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 05 08:46:14 2019 -0800"
      },
      "message": "ART: Remove stale comment\n\nFollow-up to commit a2fed081e33bcc956ebc545aacd654ec6a32673d.\n\nBug: 123888325\nTest: N/A\nChange-Id: I1ad8bbe946e84c49bbf9ba3be606d213313b273c\n"
    },
    {
      "commit": "3aa868aba9cc4d9b61898f7fbfac7a4bccdb74d4",
      "tree": "dee7b51a244648fd4b54da71f930f0788ea37f23",
      "parents": [
        "a2fed081e33bcc956ebc545aacd654ec6a32673d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 04 11:18:43 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 05 08:31:26 2019 -0800"
      },
      "message": "ART: Add unchecked conversions of arrays\n\nAdd array conversion functions that do not check the type,\nand use them in an unchecked version for PointerArray.\n\nDecreases dex2oatd preopting of a big app from 151s to 150s.\n\nBug: 123888325\nTest: m test-art-host\nChange-Id: Id58c65ac603a20c2cfb9e3289af4f3bc323554b6\n"
    },
    {
      "commit": "a2fed081e33bcc956ebc545aacd654ec6a32673d",
      "tree": "13e1fc19a737dff8cd416725bce6329086516c99",
      "parents": [
        "2860c19944b64c581a8af63339805409c0584d2f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 01 09:34:43 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 05 08:00:37 2019 -0800"
      },
      "message": "ART: Optimize array accesses\n\nOptimize computation of the data offset of arrays by adding\na constant for the array payload field offset, and templatized\nversions of the computation. Add a correctness check on runtime\ncreation.\n\nTemplatize CheckVTableHasNoDuplicates.\n\nDecreases dex2oatd preopting of a big app from 165s to 151s.\n\nBug: 123888325\nTest: m test-art-host\nChange-Id: I8db9df545dc807a307aef8af7dad7a15757670b1\n"
    },
    {
      "commit": "ac52000e86077b3c45c192ec259d72413599ff11",
      "tree": "89ba8256f3aaf8c2ca06782b98cf1d7e89506667",
      "parents": [
        "01eb773f391aaffdf5a959d894c6f5092778b051",
        "b0f16e6fca217b67e0b47da49896781dba429130"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 10:13:24 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 05 10:13:24 2019 +0000"
      },
      "message": "Merge changes I888a268b,Ia5a3c0bb,I189841e4,I5ab8b0b0\n\n* changes:\n  Replace StringPiece with std::string_view in RegType.\n  Replace StringPiece with std::string_view in OatFile.\n  ART: Change ArtMethod::NumArgRegisters() signature.\n  Remove dead String::Equals() overloads.\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": "982a9ee7d826ad5a19927016bbc3cd8691ba07a3",
      "tree": "6f9e1e91b2339cfa4b85a9c6738054c889f4370a",
      "parents": [
        "5fe64d84822bf86d72d941c271c93ecbb0ff0742"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 10:21:48 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 10:23:56 2019 +0000"
      },
      "message": "Remove dead String::Equals() overloads.\n\nGets rid of the StringPiece usage.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I5ab8b0b09bdd2930cba8d0c5d4b124f2d970dbd2\n"
    },
    {
      "commit": "8f1c8e56a683ff9d77ec1d1ac7f3d81458047714",
      "tree": "10c19d1403361bf499a576000135aaf2a692dd05",
      "parents": [
        "181b831d1a215504a80b5c7508fc2c6e1acac40c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:34:16 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 17 17:13:51 2019 +0000"
      },
      "message": "ART: Some more iwyu\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ie67b57c7173986009fdc7b4aa01563846d30f25f\n"
    },
    {
      "commit": "49b74a8c685acfe43dd33e3f51a24c486388bee1",
      "tree": "2c88245108b612904d1b3e377725894574ec1eed",
      "parents": [
        "a1ffdba7e285435cbb3538473f25eb7cb47cfd66"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 07 10:19:49 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Remove thread from class.h\n\nMove only dependent functions to the inl.\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ic2ceba1563ac44048afec6df1bccda91ceb42782\n"
    },
    {
      "commit": "5a0430d0239481f4efb252d60ec9641703b8d456",
      "tree": "cd7bdb45d94e7af3aa3e1bbb5958f930bcee29f6",
      "parents": [
        "b9b995738c8f53d68446d14553c1befd487877e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 04 14:33:57 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:20 2019 -0800"
      },
      "message": "ART: Introduce runtime_globals\n\nSplit libartbase\u0027s globals.h into actual globals, and runtime-\ndependent globals which should live in runtime.\n\nBlanket-convert all runtime/ inclusions.\n\nIn future CLs, the number of global constants should be reduced.\nFor example, GC types are only relevant to GC/alloc functionality.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I2d8cd32e0e7ab4084d2f2e96864b5338a78da94e\n"
    },
    {
      "commit": "62629598f845c2efec0dff652e440e8fbcce4b8a",
      "tree": "7af96934e7ca5313787a9b328e85e6606645c4e5",
      "parents": [
        "d77abd9e128f60917f712b8da84bab46e3ed5870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:08:31 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:09:07 2019 -0800"
      },
      "message": "ART: Some more IWYU in common headers\n\nForward-declare a few structs and classes. Remove unused includes.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I21215cee39269b373784d6a82577039322a4a950\n"
    },
    {
      "commit": "436896cd020eee6de97b619a670832b0607c3f16",
      "tree": "7cc5cbafcfbe6f590cb3e9d816112815a3f00668",
      "parents": [
        "7458a7afdfe3046d962ea13dd0f6b176283505b2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 15:06:53 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 09:19:10 2019 -0800"
      },
      "message": "ART: Some IWYU for IterationRange\n\nRemove unnecessary include. Forward-declare in common headers.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I0a1403259ea3f1142548009deb6313dab0fed26f\n"
    },
    {
      "commit": "ad1aa6340567c0660506069d760ff41483eb3821",
      "tree": "dbceabc90859e9353a8683d8be02a702205be9c9",
      "parents": [
        "b8bca301eff0db87d37bc4ab898a4973d211019b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:30:54 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 09:19:10 2019 -0800"
      },
      "message": "ART: Move Signature to its own header\n\nReduce the dependencies on dex_file.h\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1450fe2c3f4a7f5b535ed38cc19cb8a053228541\n"
    },
    {
      "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": "5b20b358edb0c586ae2106a82be365717da82507",
      "tree": "3cda8d9774087f3f6b80681f18d03c271d113fbf",
      "parents": [
        "62f6e9055363df6b6372d86960e8d987d6c439a1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 19:03:20 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 10:52:08 2018 -0800"
      },
      "message": "ART: Rewrite EnsureInitialized hit case\n\nWhen an initialized class is found during EnsureInitialized, do\nnot check whether verification was attempted and fix up bits.\nInstead, ensure that all class-loading paths have that done\nwhen eventually getting here.\n\nSpecial runtime-constructed classes (primitives, arrays, proxies)\nneed code to do this work. \"Normal\" classes have the work done\nduring VerifyClass.\n\nLeave a DCHECK in as a state check. Protect state transfers with\nadditional checks.\n\nThis reduces the overhead of the interpreter which cannot elide\ninitialization checks for static accesses.\n\nBug: 115834172\nTest: m test-art-host\nChange-Id: Iacd6652583364509c37eafe81fed1198abb1b71a\n"
    },
    {
      "commit": "62f6e9055363df6b6372d86960e8d987d6c439a1",
      "tree": "189957252780e2d61aa0d5ef874db5794805d39b",
      "parents": [
        "81c61bf0ef90c1fd79694aab49758e16cd0dd044"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 18:58:50 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 10:52:08 2018 -0800"
      },
      "message": "ART: Add integrity check\n\nAdd access-flags setter DCHECK code similar to the getter. For now,\ncheck that the verification-attempted flag is not removed.\n\nBug: 115834172\nTest: m test-art-host\nChange-Id: Ia1027126b2ff1a2a2e3c26f674a5f8dc8d2f0c0a\n"
    },
    {
      "commit": "e79edef8fd58d45361f95f81c3d0e4152591bc9b",
      "tree": "1731923580fe4110da0e62ff735245b24b4ff2bf",
      "parents": [
        "941b5068d86105dab3c427939d344bf44645d260",
        "24c14221c4cb2175406cd4406043dfd38b9b83fe"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 11 00:10:10 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 11 00:10:10 2018 +0000"
      },
      "message": "Merge \"ART: Fix or nolint cert-dcl16-c\""
    },
    {
      "commit": "24c14221c4cb2175406cd4406043dfd38b9b83fe",
      "tree": "afc6ce1aef9b5ae3c62c4b30eae1c8ba215a1397",
      "parents": [
        "0633365c40e32fda28d06ef94e6e3e3d8dab697f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 10 10:16:15 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 10 21:14:57 2018 +0000"
      },
      "message": "ART: Fix or nolint cert-dcl16-c\n\nBug: 32619234\nBug: 120614316\nTest: m\nChange-Id: I9ab82cbf3bdcb52a2f85e37d06bbd6d8f415cb15\n"
    },
    {
      "commit": "97b281129e556e6f3a91e9893f71ca45e7715e3f",
      "tree": "3e90f0148f3f6d073a29b0bfcd774e0689fb9fb4",
      "parents": [
        "0bbac3089b5637103585b04774eea3d959c4f24d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 04 09:09:12 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Clean up base/utils.h\n\nRemove dead code. Remove unnecessary includes.\n\nBug: 115837065\nBug: 119869270\nTest: m\nChange-Id: Ieb07546e9ebd476b7b1459fb8dd6cf5545d0af20\n"
    },
    {
      "commit": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\n"
    },
    {
      "commit": "1a6586327d9de6374f9e7ca98d071f2943b03c99",
      "tree": "1d118af8f32855ef0036080d5e8a560f14e5e482",
      "parents": [
        "d378a567a435a80be9ab7eb8bfe0359c1240c0ff"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Dec 01 17:54:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 03 20:19:40 2018 +0000"
      },
      "message": "Keep pointer to original DexFile during JVMTI redefine for hiddenapi\n\nJVMTI redefine overwrites the pointer to the class\u0027 DexFile which\nprevents access checks from reading the hiddenapi flags store. Store\nthe pointer in ClassExt together with the original ClassDef index\nto preserve the access to flags store. Because method/field indices\nare still lost, the corresponding dex member is found using string\ncomparison of member\u0027s name and type.\n\nBug: 119688837\nTest: 999-redefine-hiddenapi\nChange-Id: Ifdf35668e838869a971233bbaae61851014658b1\n"
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "85865697ff9fabede3d64ff64cde72727c3fc4c1",
      "tree": "0c67639c4c286149fa3f06f5f412683e39014790",
      "parents": [
        "b321ac28f726a7ed41f277382d85702ffdfbe00f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 17:26:20 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Runtime flags only for fast/slow hiddenapi path\n\nWith more flags being supported in the dex file, stop copying all of\nthem into ArtField/ArtMethod access flags. Instead, store the\ninformation needed to figure out whether to enter the slow path and\nretrieve full access flags from dex or not.\n\nAt the moment, the only runtime flag is kAccPublicApi assigned to all\nclass members on the whitelist.\n\nThe CL also moves hardcoded API membership of intrinsics out of\nArtMethod and into hidden_api.h, and moves ArtMethod::SetIntrinsic\ninto the .cc file.\n\nTest: m test-art\nChange-Id: Ia1cc05060dbc22341768161dfd8697c6158e803a\n"
    },
    {
      "commit": "bc1e0fab934b7fb03545f08085b109d6508b17d0",
      "tree": "87048ec7cccd78f9819ba16d95539a8deae51659",
      "parents": [
        "0bcbe9399dfc546db5c81b13979afc85da19d025"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 14 16:18:18 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 14 16:40:48 2018 -0800"
      },
      "message": "Reduce class loader updating overhead.\n\nAvoid unnecessary read barrier for comparing class loader agianst\nnull. Avoid transaction check.\n\nDeleted the helper class to simplify the code.\n\nThe time goes from ~3.8ms to ~2.9ms on Maps.\n\nTest: test-art-host\nBug: 116052292\n\nChange-Id: I4a966a9bb39400ba58d7cf3e0b2c8ab4747d65ed\n"
    },
    {
      "commit": "dbcb48fc0d0841f327d108246487a4ef3df556ed",
      "tree": "3abcfa87be3178d040739c465ce54f90dda96aa6",
      "parents": [
        "104883b04617a850adf11f05e57c2fd29e09c83c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 12 11:47:04 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 12 16:35:06 2018 +0000"
      },
      "message": "Avoid unnecessary read barriers in mirror::Class.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Id98ebedf185bfc7f31eda506604c072f68b7a084\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": "39d8c873645df7c956bf306693d95212d1d51906",
      "tree": "84bdfb98c931343b507c19a8149c84ba48a0c7b1",
      "parents": [
        "1e152a6090c546f4a6184a5610c85cae7ac77068"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 01 16:44:20 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 01 19:28:17 2018 +0000"
      },
      "message": "Optimize string comparisons in Class::FindClassMethod.\n\nThe method is relatively hot in non-quickend code.\n\nAvoid full string comparisons by comparing the unicode lengths first.\n\nTest: ./art/test.py -b -r --interpreter --host --64\nChange-Id: Ib0aa7008ca36e3916967fe082948d16823b93e02\n"
    },
    {
      "commit": "6b72b77e0823849fb75201461af80e69e1b4d803",
      "tree": "05dca1c1c9be37ee14acffb41f04153d86feb342",
      "parents": [
        "69ebc8fcfb2eb13b17209068c05f5f7add882294",
        "fd63bbf88147e19c32c21678b90d8cc450496fc3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 30 21:13:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 21:13:23 2018 +0000"
      },
      "message": "Merge \"ART: Add string-alloc-inl.h\""
    },
    {
      "commit": "fd63bbf88147e19c32c21678b90d8cc450496fc3",
      "tree": "d78f12fbfd72bf29b16e13a7f3fabfca5f1d3f88",
      "parents": [
        "0ee508253edcdee41a80fcbf1511234ca176233d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 12:55:35 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 30 10:57:42 2018 -0700"
      },
      "message": "ART: Add string-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for string allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I68d3bcf2b3615d12231010940d0a24a1dbc03826\n"
    },
    {
      "commit": "69ebc8fcfb2eb13b17209068c05f5f7add882294",
      "tree": "94905d092f5189ea18eabf325a602b94ef590a34",
      "parents": [
        "0ee508253edcdee41a80fcbf1511234ca176233d",
        "1ca718ec2de53fb5ef2a9211bfcc921311775c90"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 30 17:22:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 17:22:51 2018 +0000"
      },
      "message": "Merge \"Add PreResolved strings dex cache array\""
    },
    {
      "commit": "1ca718ec2de53fb5ef2a9211bfcc921311775c90",
      "tree": "f5ce8c3f4edd022765c343cc5a9df8ebd292f0ec",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 23 12:55:34 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 30 16:03:00 2018 +0000"
      },
      "message": "Add PreResolved strings dex cache array\n\nFor app images, this dex cache may be prepopulated to speed up\napplication startup. This new dex cache array is created when\n--resolve-startup-const-strings\u003dtrue.\n\nTest: test-art-host\nBug: 116059983\nBug: 118385560\n\nChange-Id: I379dc15174281665d7f4ceb106f7fbf51f89b921\n"
    },
    {
      "commit": "e15b9b189a0898b5554002d9c86da7c17f2eb7ae",
      "tree": "b9d484bb6aed03f8d1435d52c6ae1cfbf3702368",
      "parents": [
        "72d3493a6b9fde2fc3c1abb9ee6afff4451ec291"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 12:54:27 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 13:05:18 2018 -0700"
      },
      "message": "ART: Do some include-what-you-use\n\nHelp with transitive includes. In preparation for new\nspecialized headers reducing transitivity.\n\nBug: 118385392\nTest: mmma art\nChange-Id: Ie79afda4e09191428c2b4c2f20a7e3352c01c1e9\n"
    },
    {
      "commit": "70f5fd0770adbef645950895309a2a63c3bde7c0",
      "tree": "d9794484e83858cf7e33551eb8a108e07f46b18c",
      "parents": [
        "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:58:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add class-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for class instance allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I32529f0221a836452c58687330a91ac0d5fde162\n"
    },
    {
      "commit": "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4",
      "tree": "7a8ee84cad0df34ab33bdcb0115fc0c79d6c83be",
      "parents": [
        "c2099b0b0c052dd61137b9cf5f9f8b30bab1a7a8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 15:18:21 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add object-array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for object array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I0d7c40ed53708d4c759190961b40f0cac3fe696d\n"
    },
    {
      "commit": "8e0f04319c7c3ddee60c505376b31768533b0dd5",
      "tree": "b9d215de61b3a16895695e52ff4ee5ecbd985f14",
      "parents": [
        "88dbad33ae92167a89a5d5469f39f41624535dbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 13:38:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 25 09:52:37 2018 -0700"
      },
      "message": "ART: Add array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: Id3378f40c52fa7ef4297af08cb7509e0c04b94d1\n"
    },
    {
      "commit": "88dbad33ae92167a89a5d5469f39f41624535dbf",
      "tree": "b3b0c864c12c246117143954f16df054309852c6",
      "parents": [
        "c58dca3941459b4375a53925f3471373584eab5e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 19:54:12 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 25 09:52:28 2018 -0700"
      },
      "message": "ART: Do some include-what-you-use\n\nHelp with transitive includes. In preparation for new\nspecialized headers reducing transitivity.\n\nBug: 118385392\nTest: mmma art\nChange-Id: Ib465ecceec3331ea81588fb4a43eb65e766b6904\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "98104995d8dfc6fec6ec46f4cd50acd67e435687",
      "tree": "390e8a3f8361a894fba2d6136d906aa1c62c29f3",
      "parents": [
        "17c5e022f48a36fd160906b9c99ae14a2f014f17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 12:49:47 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 12:49:47 2018 -0700"
      },
      "message": "ART: Use ObjPtr for GetSuperClass\n\nBug: 37224696\nTest: mmma art\nTest: m test-art-host\nChange-Id: If55db6e26bb1bb05a13c59b849bed17839fca6cf\n"
    },
    {
      "commit": "78baed5ec51a6e2d113e8b29aafa5c6203b46845",
      "tree": "57ca544020f309e3529e33300ad4867ca4579c1e",
      "parents": [
        "a48eb7e0690187618d2824a7d9b5601e7f5cdf80"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 11 10:44:58 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 12 17:53:50 2018 +0100"
      },
      "message": "ART: Use reinterpret_cast{32,64}\u003c\u003e when appropriate.\n\nAnd fix UnstartedRuntime checking for null arguments in all\nfunctions where we now use reinterpret_cast32\u003c\u003e.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/783607 .\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\nBug: 117427174\nChange-Id: I58f8ad59f70e3fbb1d06aef419cd26555706fa65\n"
    },
    {
      "commit": "3adb7f218f1f6f15e2ced105073daa6e14aef2a9",
      "tree": "33331b2200c1f88c269e85453522cf90e07e660d",
      "parents": [
        "e0e49b9eb70f8a85891df5b4da73fcc71cb3d62f",
        "0c61be4f9f7b4baaa6ea7c12ba1c8492a7bc14f5"
      ],
      "author": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Fri Oct 05 07:07:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 07:07:42 2018 +0000"
      },
      "message": "Merge \"Implemented a new method for walking string references in AppImages.\""
    },
    {
      "commit": "0c61be4f9f7b4baaa6ea7c12ba1c8492a7bc14f5",
      "tree": "2732f14759bfcd06bd8bf872c27a8c42b38e79ef",
      "parents": [
        "2386636e0330051a96fe7d577524e929d81e9ba8"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed Sep 26 17:27:34 2018 -0700"
      },
      "committer": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Thu Oct 04 12:47:40 2018 -0700"
      },
      "message": "Implemented a new method for walking string references in AppImages.\n\n* Defined a new section in the AppImage binary format.\n* Verify heap invariants having to do with native string references.\n* Collect managed and native references to managed strings.\n* Record the location of these references as offsets into the image.\n* Writes offsets into new image section.\n* Walk this list of offsets at load time to intern strings from the\nAppImage.\n* Verify that strings have been interned correctly.\n\nTest: art/test/testrunner/testrunner.py -b --host\nTest: m test-art-host-gtest\nTest: Built and ran Keep, Docs, Chrome, YouTube, and Facebook.\nBug: 70734839\n\nChange-Id: Ib5235abdebca018e8920d12318c31b9c0efb0ede\n"
    },
    {
      "commit": "e8fdf725e380ef31441cceb02978b4b6c4e39fe7",
      "tree": "1c233d405bc4a259a108faea6d11f83fe330e222",
      "parents": [
        "9d2f7f87c77b3a3e74da21d9962b92ed63ddfbbd",
        "66c7459a0ea8d84c9f52738d9400831de4d2819d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 04 09:45:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 09:45:40 2018 +0000"
      },
      "message": "Merge \"Check the size of pid_t in art::mirror::Class.\""
    },
    {
      "commit": "66c7459a0ea8d84c9f52738d9400831de4d2819d",
      "tree": "982400de801d3d8e3fa0d3b4872aa42df81bc3d4",
      "parents": [
        "2c3d9a443abdfd491b187e7c7660895f8bafb529"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 03 19:12:45 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 03 19:12:45 2018 +0100"
      },
      "message": "Check the size of pid_t in art::mirror::Class.\n\nEnsure that `art::mirror::Class::clinit_thread_id_` (which is a C\n`pid_t` value) and `java.lang.Class.clinitThreadId` (which is a Java\n32-bit `int` value) have the same size.\n\nTest: mmma art\nChange-Id: Ief8e962a3d012be8f0aa966849496fba6a9fb3b8\n"
    },
    {
      "commit": "56de89aaf2a224de8c436291e3c23a1a61315437",
      "tree": "397fafa3662d1abde6fecff49f24a559c2b0ab32",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 01 15:32:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 14:38:59 2018 +0100"
      },
      "message": "Mark most *Offset helper functions as constexpr.\n\nMaking the values compile-time constants will help to\nclean up the cpp-define-generator.\n\nTest: test.py -b -g\nChange-Id: I612a19a54062784b501bfe4f41c6642d48e0dd21\n"
    },
    {
      "commit": "4df2d8041f5dcc7af8c3b3b60b0ea87a1e0d3b94",
      "tree": "0273072a2b65d6c0cf692a3e7f8eab9814d9d23d",
      "parents": [
        "233b572a940431a94a1790750afdceab2d6f4fde"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 16:42:44 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 28 09:12:06 2018 +0100"
      },
      "message": "Revert^2 \"Load boot image at a random address.\"\n\nThis reverts commit f3d077373536c54824e4449759dff2f18369eab3.\n\nFixed Heap constructor to reserve extra space for GSS.\n\nChange-Id: I6a65be35f4aa183304db5491da4a4810d8e3b266\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --relocate --no-relocate\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --relocate --no-relocate\nTest: art/test/testrunner/run_build_test_target.py -j48 art-gtest-gss-gc-tlab\nBug: 77856493\n"
    },
    {
      "commit": "233b572a940431a94a1790750afdceab2d6f4fde",
      "tree": "85360608b41023a895d1fe1a933edec6311054bf",
      "parents": [
        "62741139ea636682568237417c3bda84dfd1606b",
        "f3d077373536c54824e4449759dff2f18369eab3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 16:40:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 27 16:40:03 2018 +0000"
      },
      "message": "Merge \"Revert \"Load boot image at a random address.\"\""
    },
    {
      "commit": "f3d077373536c54824e4449759dff2f18369eab3",
      "tree": "e00d19a342ff429fc514bf70bf52ff005a00911c",
      "parents": [
        "5ad79d85d77a42456728897ac3e2e7d4530e618e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 16:24:17 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 16:24:17 2018 +0000"
      },
      "message": "Revert \"Load boot image at a random address.\"\n\nThis reverts commit 5ad79d85d77a42456728897ac3e2e7d4530e618e.\n\nReason for revert: Breaks GSS garbage collection config.\n\nBug: 77856493\nChange-Id: Ifa39966ac2470154f8ba093de4804689d545219b\n"
    },
    {
      "commit": "334c154f9b4ba288a1fec54fef98fcf71223bae6",
      "tree": "330d6fef01000062f0e1f3691edd2a7961ce1eca",
      "parents": [
        "a59b1ecaf425bae23eed3224cf055b6172c8424f",
        "5ad79d85d77a42456728897ac3e2e7d4530e618e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 14:13:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 27 14:13:46 2018 +0000"
      },
      "message": "Merge \"Load boot image at a random address.\""
    },
    {
      "commit": "5ad79d85d77a42456728897ac3e2e7d4530e618e",
      "tree": "ff70d1f12904c718f2f3f721d3846f4305eae53d",
      "parents": [
        "5d7015cd64085068b1685d44339b4b705ef3f065"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 03 09:54:09 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 26 13:08:36 2018 +0100"
      },
      "message": "Load boot image at a random address.\n\nAnd perform in-place fixup of references and pointers. This\ndirties all the boot image memory loaded by zygote, so there\nshall be no \"shared clean\" boot image pages anymore, these\nshall change to \"shared dirty\". However, as we\u0027re using a\nprofile-based boot image, these pages are presumably used\noften enough and unlikely to be paged out anyway.\n\nThe in-place fixup takes around 60-120ms when starting the\nzygote on aosp_taimen-userdebug. However, an experiment with\nMAP_POPULATE pushes the raw fixup down to around 12-15ms.\nIf we used compressed images, this would be the actual time\nfor fixup as the data would be already present in memory.\nIf we keep using uncompressed images, we shall need to tune\nthe loading with MAP_POPULATE or MADV_WILLNEED.\n\nThe -Xrelocate/-Xno-relocate option is re-interpreted from\n\"use patchoat if needed\" to \"relocate the boot image in\nmemory if possible\". We do not allow relocation for the AOT\ncompilation to speed up dex2oat execution and help producing\ndeterministic output.\n\nThe patchoat tool shall be removed in a follow-up CL.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --relocate --no-relocate\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --relocate --no-relocate\nBug: 77856493\nChange-Id: I2db1fabefb5d4b85c798cd51e04c78cb232bff4a\n"
    },
    {
      "commit": "fc4b2eaa427e43a51c6f39ffecac0ef4fa732b61",
      "tree": "b6bc4cd9bc846ae40eac280dbc2c9514e05a0f7b",
      "parents": [
        "26f048f48cdb1e884aab2b6fddf26d58346d29ad",
        "c55bb390d88b8eb62a50932f7f9b47c2a3733f16"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 25 00:36:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 25 00:36:43 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Refactor typedef to using\"\""
    },
    {
      "commit": "c55bb390d88b8eb62a50932f7f9b47c2a3733f16",
      "tree": "ec2e74f3f8404dffcb9bfde4e7ffa3416a35543d",
      "parents": [
        "89468aeaa6a67ae4025b30d427391186306d6522"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 21 00:02:02 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 18:37:12 2018 -0700"
      },
      "message": "Revert^2 \"ART: Refactor typedef to using\"\n\nThis reverts commit ee07743e03042c2ca36e0c9513847a9e7d2509f1.\n\nReason for revert: fixed attributes.\n\nBug: 32619234\nTest: m test-art-host\nTest: m test-art-target-gtest-unstarted_runtime_test\nChange-Id: I6f0a775adfdf6ecd132b470f7c5446e949872e20\n"
    },
    {
      "commit": "5ec6f36d4688e70c652882bff8c6a3c060ccc83e",
      "tree": "d05b0ed6a3b301de7c11a165fa44729c42a7b99d",
      "parents": [
        "258774298aa0ee03510876137fd915e23bbc7cd1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 17:25:05 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 18:13:30 2018 -0700"
      },
      "message": "ART: Fix incorrect dispatch\n\nEnsure the right overload is used. Found through clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I2d31013b7d7d6f5b8ef81a915875cf5061f3575c\n"
    },
    {
      "commit": "d5245a743df43830baf9fbc2233f6b5cebad8f32",
      "tree": "40a6269dfa24f31fe20caf5ae4df02e3812ae213",
      "parents": [
        "98399b8667f1fd210c66b340a6b5de7d3693ad1c",
        "ee07743e03042c2ca36e0c9513847a9e7d2509f1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 20 20:05:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 20 20:05:41 2018 +0000"
      },
      "message": "Merge \"Revert \"ART: Refactor typedef to using\"\""
    },
    {
      "commit": "ee07743e03042c2ca36e0c9513847a9e7d2509f1",
      "tree": "66867d7443a3798f6d882ef2715ddeb7baf3e771",
      "parents": [
        "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "message": "Revert \"ART: Refactor typedef to using\"\n\nThis reverts commit 9a20ff06f7ccee08a742c315ec6d351ab56ba1cd.\n\nReason for revert: Attributes on the wrong side.\n\nBug: 32619234\nChange-Id: I8fd2abef619b22c02ccfbf5ae629339f1a60918b\n"
    },
    {
      "commit": "9b1e90ef5c8c026253099066e8414803a9880bf9",
      "tree": "50f77c45386702a8e2248d44ed4a2bf9954f402c",
      "parents": [
        "c1ecc9b64a3f03e5a721081215c812c66183d2b8",
        "924ad50f0bcfc49657c5d4d23a197b2e6fdc03fe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 20 07:59:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 20 07:59:16 2018 +0000"
      },
      "message": "Merge \"Refactor Class::FixupNativePointers().\""
    },
    {
      "commit": "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd",
      "tree": "7e55557e118eb5fffe03ad3456e00d8469a36232",
      "parents": [
        "70dfb6983492aff1c52cc1b52044258aef51f47f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 10:58:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 21:56:32 2018 -0700"
      },
      "message": "ART: Refactor typedef to using\n\nAdd clang-tidy\u0027s modernize-use-using.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If50d37b5152af4270784e3cde7951292a9e19033\n"
    },
    {
      "commit": "924ad50f0bcfc49657c5d4d23a197b2e6fdc03fe",
      "tree": "daf8c97184751014cfca2434fe1a9baac2c68eb8",
      "parents": [
        "a93364cbd4ebf4b8c309c4c18f30e16c8f9a8997"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 19 09:48:04 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 19 13:54:22 2018 +0100"
      },
      "message": "Refactor Class::FixupNativePointers().\n\nSimplify Class::FixupNativePointers() and fix verify flags\nusage. Also clean up verify flags for a few array functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 77856493\nChange-Id: I5370757827a2a5061b956034434bdc63164eda3f\n"
    }
  ],
  "next": "98db89cef0be48e4b8cdd6738f1af26b0d908f45"
}
