)]}'
{
  "log": [
    {
      "commit": "61ba8d2421a98e9b16510be4f9af7ca7bc4c9055",
      "tree": "9a79331dd5ebd46ed46f853b24ab072f43debf28",
      "parents": [
        "eb369ce3669be74dd89b21f8b3ab31ace4a47086"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 07 09:55:57 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 20 17:18:31 2018 +0100"
      },
      "message": "Fix longstanding bug around implicit NPEs and GC, version 2.\n\nThe TODO has been there since M (so forever :)):\nhttps://android-review.googlesource.com/c/platform/art/+/122794/13//COMMIT_MSG#13\n\nWe hardly see the issue in our tests as we need to have:\n1) A GC happening while creating the NPE object.\n2) ParallelMoves between the NullCheck and implicit null check operation\n   that moves references.\n\nThe CL piggy backs on the \"IsEmittedAtUseSite\" flag, to set implicit\nnull checks with it. The liveness analysis then special cases implicit\nnull checks to record environment uses at the location of the actual\ninstruction that will do the implicit null check.\n\nTest: test.py --gcstress\nTest: run-libcore-tests --gcstress\nbug: 111545159\nChange-Id: I3ecea4fe0d7e483e93db83281ca10db47da228c5\n"
    },
    {
      "commit": "b1f9ff073bf9b102c0e9850607ea66d42584674d",
      "tree": "403ef59d567c9ddaaa077311ac2aa020831fd82d",
      "parents": [
        "a21eca6a7ddc7f986651261359f821771494c61e",
        "a2d29a3a772f17014197e829aa8cb41026f88f05"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 16:53:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 03 16:53:36 2018 +0000"
      },
      "message": "Merge \"Add stack map fast path for GC.\""
    },
    {
      "commit": "a21eca6a7ddc7f986651261359f821771494c61e",
      "tree": "5afeffa6ea8384ab50e3e4f87c6b76d195b13134",
      "parents": [
        "d925742e6c52237a262b4430f8b6b679ff1cc80e",
        "966b46fcba43764267069b6e19bcb2a092260418"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 16:41:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 03 16:41:58 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ARM/ARM64: Use introspection marking for JITted code.\"\""
    },
    {
      "commit": "a2d29a3a772f17014197e829aa8cb41026f88f05",
      "tree": "5fea3c3e18db733655c55fdd91175f9870b4ad35",
      "parents": [
        "8e7ddc234ecbde21b0e6755cf66bcad858a817d2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 11:06:38 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 16:00:00 2018 +0100"
      },
      "message": "Add stack map fast path for GC.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ia04a07b560fcce2fb955d66d1924ee224dec420d\n"
    },
    {
      "commit": "8e7ddc234ecbde21b0e6755cf66bcad858a817d2",
      "tree": "89808276b8bb306e55e9879307c52b9234616233",
      "parents": [
        "f0e805deaa0e13ee4d8ccee7df5fd25a0652d993",
        "e7a9194558379ee24fde82fcaeaee29542df1520"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 03 14:06:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 03 14:06:06 2018 +0000"
      },
      "message": "Merge \"Simplify StackMapStream encoding.\""
    },
    {
      "commit": "e7a9194558379ee24fde82fcaeaee29542df1520",
      "tree": "30f3c43f2d64f159503bb8c3442aa39cc6cb612e",
      "parents": [
        "f50419eee7290542db07bff23c4f65e693ba037f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 17:23:53 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 12:48:49 2018 +0100"
      },
      "message": "Simplify StackMapStream encoding.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ife021d03e4e486043ec609f9af8673ace7bde497\n"
    },
    {
      "commit": "9d479254d0dc4043a15ab26205f40439eca15493",
      "tree": "af8a9c9c6f2c28e723a971c9d39c9d1cebd1f814",
      "parents": [
        "ca20fb6cc4dda392e63bdc8ec9de54d89793373e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 24 11:35:20 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:43:30 2018 +0000"
      },
      "message": "Rename type resolution entrypoints.\n\nRename the InitializeType and InitializeTypeAndVerifyAccess\nentrypoints to Resolve* to better match their semantics.\nKeep the InitializeStaticStorage name for now as the most\nappropriate name InitializeType would clash with the old\nname of the ResolveType entrypoint.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ide55b58c490d085ab37d8536f90699f7ed571d59\n"
    },
    {
      "commit": "966b46fcba43764267069b6e19bcb2a092260418",
      "tree": "fe89667cbb09a981e67ebd1196d324038a6413ff",
      "parents": [
        "98afa11c3cd8517bd28d1cad7aacaf0179c905f0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 10:20:19 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 12:35:34 2018 +0100"
      },
      "message": "Revert^2 \"ARM/ARM64: Use introspection marking for JITted code.\"\n\nThis reverts commit 756e722c323c69a7c9891892602730e9c94b78f9.\n\nFix the introspection code to avoid avoid macro instructions\nfor unpoisoning references inside ExactAssemblyScope.\n\nChange-Id: I6effadb84de74aba0236ab84b52ca85770daf5be\nTest: m test-art-host-gtest\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --jit\nTest: ART_HEAP_POISONING\u003dtrue m test-art-target-gtest\nTest: ART_HEAP_POISONING\u003dtrue testrunner.py --target --optimizing --jit\nBug: 36141117\n"
    },
    {
      "commit": "79ee7719b7f2f191a2271729f0d62866cf96cd78",
      "tree": "7b4bfe13f1737d33c03801f740b82d0c58986340",
      "parents": [
        "1c3f8ea47c9034c5fa49b7ebfac6ce2e43e548ea",
        "3232dbb6df866985089b13a36c56e2b39dd473ab"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 03 11:02:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 03 11:02:05 2018 +0000"
      },
      "message": "Merge \"Do not save/restore regs in ClinitCheck slow path.\""
    },
    {
      "commit": "1c3f8ea47c9034c5fa49b7ebfac6ce2e43e548ea",
      "tree": "4ffa1262d0592b786e03d70b36eacdb02a0a0b3d",
      "parents": [
        "98afa11c3cd8517bd28d1cad7aacaf0179c905f0",
        "e346440a8942b2340c5bfb4c7069fb75d43b1163"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 03 10:39:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 03 10:39:05 2018 +0000"
      },
      "message": "Merge \"Fix braino in scheduler_arm.cc\""
    },
    {
      "commit": "3232dbb6df866985089b13a36c56e2b39dd473ab",
      "tree": "055f3e8888bfb3cfd072a981e4733cfaad7b202c",
      "parents": [
        "b27d874ebc0c067d96994a6ebe3c10eaeb2e4a75"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 25 15:42:46 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 08:59:07 2018 +0000"
      },
      "message": "Do not save/restore regs in ClinitCheck slow path.\n\nThe entrypoint is kSaveEverything, so the only register that\nneeds to be saved is the argument/return value register.\n\nThe size of the aosp_taimen-userdebug prebuilts:\n  - before:\n    arm/boot*.oat: 16811692\n    arm64/boot*.oat: 19801032\n    oat/arm64/services.odex: 20232208\n  - after:\n    arm/boot*.oat: 16798804 (-12.6KiB, -0.08%)\n    arm64/boot*.oat: 19804392 (+3.3KiB, +0.02%)\n    oat/arm64/services.odex: 20227784 (-4.3KiB, -0.02%)\nNote that though there is less code, the metadata for the\narm64/boot*.oat outweighs the code size reduction because of\nthe register map encoding as value+shift introduced in\n    https://android-review.googlesource.com/695682\nwhich it\u0027s ill-suited for kSaveEverything entrypoints. We\nshould reconsider that encoding.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nChange-Id: I5cd1deb90332a3b88a0a59d87925c557d9bff1ab\n"
    },
    {
      "commit": "b27d874ebc0c067d96994a6ebe3c10eaeb2e4a75",
      "tree": "3084a0b326e98115f5d0621362d5b7c368775669",
      "parents": [
        "8f5992d8c81d4d9a0805c649cdcf859328d5c1b6",
        "a9f303c089aa2b2fc82d97201352945678ef54ae"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 08:57:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 03 08:57:16 2018 +0000"
      },
      "message": "Merge \"Rewrite Class init entrypoint to take a Class arg.\""
    },
    {
      "commit": "9e53f5f19167848d043f91e6d20436e9b568b55a",
      "tree": "884f659fecd04cf40c410ce5d4c09f488e5a9793",
      "parents": [
        "efcdd13a3d820aa084ed4255196da1363cf9e5cf",
        "756e722c323c69a7c9891892602730e9c94b78f9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 02 19:41:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 02 19:41:08 2018 +0000"
      },
      "message": "Merge \"Revert \"ARM/ARM64: Use introspection marking for JITted code.\"\""
    },
    {
      "commit": "756e722c323c69a7c9891892602730e9c94b78f9",
      "tree": "a2bf360d95f0aef84f3bce43f43871910a0b7ed9",
      "parents": [
        "450f1d0fa0c40198e63c3e016f02e40ac854b0cb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 02 17:53:46 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 02 17:53:46 2018 +0000"
      },
      "message": "Revert \"ARM/ARM64: Use introspection marking for JITted code.\"\n\nThis reverts commit 450f1d0fa0c40198e63c3e016f02e40ac854b0cb.\n\nReason for revert: breaks poisoning configuration\n\nBug: 36141117\nChange-Id: I198c20ca1db6d7d7602aa5318616e2b149de8772\n"
    },
    {
      "commit": "eeac119a22b09496eb66109c906df6a5243eac36",
      "tree": "c006a2c9b8c5c513939274409845e0be57cb18a5",
      "parents": [
        "1bfd891d06e276d602b4a6ccf1a9f70967195218",
        "ced04835d8e3cd3f68576cfffc1d21283ca151b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 02 16:43:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 02 16:43:35 2018 +0000"
      },
      "message": "Merge \"Reuse arena memory for each block in scheduler.\""
    },
    {
      "commit": "a9f303c089aa2b2fc82d97201352945678ef54ae",
      "tree": "0df0eb5294a3ee72aea8ca670762c02ca9ffa8dd",
      "parents": [
        "1bfd891d06e276d602b4a6ccf1a9f70967195218"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 20 16:43:56 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 02 17:41:21 2018 +0100"
      },
      "message": "Rewrite Class init entrypoint to take a Class arg.\n\nFixes invalid type index being passed to the entrypoint for\nclass init check across dex files when the target type does\nnot have a TypeId in the compilation unit\u0027s DexFile.\n\nThe size of the aosp_taimen-userdebug prebuilts:\n  - before:\n    arm/boot*.oat: 16782748\n    arm64/boot*.oat: 19764400\n    oat/arm64/services.odex: 20162432\n  - after:\n    arm/boot*.oat: 16811692 (+28.3KiB, +0.17%)\n    arm64/boot*.oat: 19801032 (+35.8KiB, +0.19%)\n    oat/arm64/services.odex: 20232208 (+68.1KiB, +0.35%)\nThis increase comes from doing two runtime calls instead of\none for HLoadClass/kBssEntry that MustGenerateClinitCheck().\n\nTest: Additional test in 476-clinit-inline-static-invoke\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nTest: testrunner.py --jvm\nBug: 111433619\nChange-Id: I2fccd6944480ab4dac514f60d38e72c1014ae7b2\n"
    },
    {
      "commit": "e346440a8942b2340c5bfb4c7069fb75d43b1163",
      "tree": "5b90459ddc640adbced1796aafccd1af7a7cdab2",
      "parents": [
        "1bfd891d06e276d602b4a6ccf1a9f70967195218"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 02 17:38:49 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 02 17:38:49 2018 +0100"
      },
      "message": "Fix braino in scheduler_arm.cc\n\nbug: 112142186\nTest: m\nChange-Id: Ibed41bf7de2a5d968839c40450e01f6f60394e49\n"
    },
    {
      "commit": "1bfd891d06e276d602b4a6ccf1a9f70967195218",
      "tree": "ce0fedeafdffed1333aab4d751906a24b7e46c2f",
      "parents": [
        "e8d8755abbf6543b41e03c6b86a5e1db31289868",
        "3aaaa21055ab73562b8da7968ac4fa5fe9d44695"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Aug 02 15:11:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 02 15:11:02 2018 +0000"
      },
      "message": "Merge \"Encode frame info using varints.\""
    },
    {
      "commit": "ced04835d8e3cd3f68576cfffc1d21283ca151b4",
      "tree": "125ddd1d222f4fb1710e17c76803ad3e92572a5c",
      "parents": [
        "350b6a312222b9b27bfee0e72ce261a45cb60e1c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 26 14:42:17 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 02 15:47:02 2018 +0100"
      },
      "message": "Reuse arena memory for each block in scheduler.\n\nThis reduces the peak memory used for large methods with\nmultiple blocks to schedule.\n\nCompiling the aosp_taimen-userdebug boot image, the most\nmemory hungry method BatteryStats.dumpLocked has the\nScheduler memory allocations in ArenaStack hidden by the\nregister allocator:\n  - before:\n    MEM: used: 8300224, allocated: 9175040, lost: 197360\n    Scheduler       8300224\n  - after:\n    MEM: used: 5914296, allocated: 7864320, lost: 78200\n    SsaLiveness     5532840\n    RegAllocator     144968\n    RegAllocVldt     236488\nThe total arena memory used, including the ArenaAllocator\nnot listed above, goes from 44333648 to 41950324 (-5.4%).\n(Measured with kArenaAllocatorCountAllocations\u003dtrue,\nkArenaAllocatorPreciseTracking\u003dfalse.)\n\nAlso remove one unnecessary -Wframe-larger-than\u003d workaround\nand add one workaround for large frame with the above arena\nalloc tracking flags.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 34053922\nChange-Id: I7fd8d90dcc13b184b1e5bd0bcac072388710a129\n"
    },
    {
      "commit": "3aaaa21055ab73562b8da7968ac4fa5fe9d44695",
      "tree": "a3118eee8f5cc9c661e1480f2ce73691c3786f8a",
      "parents": [
        "605339045d347074b9149c0185fe2ca7fafe470d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 30 16:46:53 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Aug 02 11:31:44 2018 +0100"
      },
      "message": "Encode frame info using varints.\n\nThis saves 0.3% of oat file size.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I85003946a9579f03cb1ed2b5e9b2c62b3efe6734\n"
    },
    {
      "commit": "a75b58496fc392cce82dbc59617f4f7f2b67af08",
      "tree": "d889a06f92c32511344dab1763baec1206ff286b",
      "parents": [
        "350b6a312222b9b27bfee0e72ce261a45cb60e1c",
        "450f1d0fa0c40198e63c3e016f02e40ac854b0cb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 02 10:30:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 02 10:30:31 2018 +0000"
      },
      "message": "Merge \"ARM/ARM64: Use introspection marking for JITted code.\""
    },
    {
      "commit": "8cd54547cec8a4537db5682c2da8be22843b1310",
      "tree": "fb1158993bab2e027984cedab59b402c051a45a7",
      "parents": [
        "91f0fdb4372d3f2bcfcd9db67afcbe7ee1901048"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 14:49:40 2018 +0100"
      },
      "message": "Move MethodInfo to CodeInfo.\n\nThere is no need to treat it specially any more,\nbecause of the de-duplication at BitTable level.\n\nThis saves 0.6% of oat file size.\n\nTest: test-art-host-gtest\nChange-Id: Ife7927d736243879a41d6f325d49ebf6930a63f6\n"
    },
    {
      "commit": "b73323c50d10d3850d2d8719a481f4f430fc51ce",
      "tree": "b5c2eb181dd398229fb7b7e852923efd247e5710",
      "parents": [
        "ca182f2c81e7102d3ccd1c4ec5c96e602ad343fe"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 12:41:36 2018 +0100"
      },
      "message": "Deduplicate stackmaps at BitTable level.\n\nMake it possible to share BitTables between CodeInfos.\n\nThis saves 1% of .oat file size.\n\nTest: test-art-host-gtest\nChange-Id: I14172cba6b65e734b94f8c232f24eeee1fc67113\n"
    },
    {
      "commit": "8808756b8fba036a9c73a45c800a56be09872364",
      "tree": "9b28f314ff516d1d9b85d07f71bdc77fad465e48",
      "parents": [
        "dda4e8b5f2ffed24a2dcdb99d2301d9fc0eb91e2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:56 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 27 15:03:06 2018 +0100"
      },
      "message": "Remove frame info from OatQuickMethodHeader.\n\nThe information has been moved to CodeInfo,\nwhere it is stored in much more compact way.\n\nThe old CL which added the data to CodeInfo cost 0.7%.\nThis CL saves 2.5% of .oat file size so a win overall.\n\nTest: test-art-host-gtest\nChange-Id: I07fcf6f2776c96218f995ba3b57a1e6ccbf5e317\n"
    },
    {
      "commit": "6ee06e97cef5ee92944deaeba0da4d10c4c33a2a",
      "tree": "77d69c85d37864b4d3ee970be4b7fd1246adee7b",
      "parents": [
        "f5dcd31d89282b6c9324fdc960e6e7e2281c16f1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 25 21:45:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 26 11:45:54 2018 +0100"
      },
      "message": "Decode only the needed tables from CodeInfo.\n\nMost use cases need only the first two bit tables from CodeInfo.\nAdd flag to the decode method so that only those two are loaded.\nWe only touched the table header but that still made difference.\n\nThis speeds up pmd by over 10%.\n\nTest: test-art-host-gtest\nChange-Id: I7740081bf18205dd69864503b5bcec7de5e1a901\n"
    },
    {
      "commit": "450f1d0fa0c40198e63c3e016f02e40ac854b0cb",
      "tree": "0606a5c722be0d706242c015cb1218021c5c1309",
      "parents": [
        "da6220a29fae95f17edd5374dc6bc2d4870a84da"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 25 17:27:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 25 18:34:19 2018 +0100"
      },
      "message": "ARM/ARM64: Use introspection marking for JITted code.\n\nImpact on Golem benchmarks is within noise.\n\nTest: m test-art-host-gtest\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nBug: 36141117\nChange-Id: Idf5177ee5cd34e2034d298a7907240b3e3e12d82\n"
    },
    {
      "commit": "2ab1bdd1ed06ff2cbcfbed946fb58778be23ad4f",
      "tree": "ce63864f7f62b433ca863866406bee2e7af73065",
      "parents": [
        "fca0b491a34144acf6769ab9c5fb528ac81bd325"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 12 09:59:56 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 23 18:39:09 2018 +0100"
      },
      "message": "Elide ClinitCheck for superclasses with trivial init.\n\nWe cannot generally elide ClinitCheck for superclasses\nbecause of escaping instances of erroneous classes and\nbecause a subclass can be successfully initialized while\nthe superclass is initializing and the subclass remains\ninitialized even when the superclass initializer throws.\n\nHowever, for those superclasses that have trivial init,\ni.e. that class and its superclasses (and superinterfaces\nwith default methods) initialize only their own static\nfields using constant values, there is no chance to end\nup in one of these weird situations and we can safely\neliminate the ClinitCheck.\n\nThe size of the aosp_taimen-userdebug prebuilts:\n  - before:\n    arm/boot*.oat: 16856928\n    arm64/boot*.oat: 19846592\n    oat/arm64/services.odex: 24662880\n  - after:\n    arm/boot*.oat: 16848696 (-8.0KiB, -0.05%)\n    arm64/boot*.oat: 19842320 (-4.2KiB, -0.02%)\n    oat/arm64/services.odex: 24629952 (-32.2KiB, -0.13%)\nwith minor changes to other app prebuilts.\n\nTest: Improved 478-checker-clinit-check-pruning.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 62478025\nChange-Id: I865f567443f1b7f172e5e6559d8eb3232adb7833\n"
    },
    {
      "commit": "fca0b491a34144acf6769ab9c5fb528ac81bd325",
      "tree": "3896bc10455308ed675886d8d8037d5358c1556d",
      "parents": [
        "fb9c672577ae9772557f72f9cecb77d4d24af585"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 23 15:30:52 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 23 18:30:45 2018 +0100"
      },
      "message": "Fix a stale reference use.\n\nIt is unsafe to use an expression like\n    klass.Get() \u003d\u003d ResolveType()\nwhere the `ResolveType()` call can invalidate the plain\npointer already retrieved from a Handle\u003c\u003e.\n\nWe fix this in HInstructionBuilder::BuildLoadClass() by\nreordering the code and we change the prefix of related\nfunctions from \"Get\" to \"Resolve\" to better express their\nsemantics. We also pass the ScopedObjectAccess helper all\nthe way to the `ResolveClassFrom()` to avoid constructing\na new one.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I13c1ea356386f28fdc9548da781982f9774080f1\n"
    },
    {
      "commit": "b07dcdba37e9a5652b7754a6bd9c3538880d6668",
      "tree": "15524fb0505323ec78bf4d8841245da6fe61d6ee",
      "parents": [
        "6250dfa22577160b270f3f3165260739707cf7d3",
        "c945e0d410ca8d4e9ba09272e8727a3192f1e449"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "message": "Merge changes I87f2999f,I8af0e845\n\n* changes:\n  Remove ArtMethod\u0027s declaring class state checks.\n  ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n"
    },
    {
      "commit": "bd39d145e4986217bcb8dce1d4a9631d926a2781",
      "tree": "52dfd3307ab5279e960f9a1bf6e474e47440a3d8",
      "parents": [
        "6f4cf6e8fa15de2f9bf7c6a649ea7a2fabef886a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 19 11:14:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 19 11:37:05 2018 -0700"
      },
      "message": "ART: Clean up unused using declarations\n\nMake tidy happy, and enable checking.\n\nTest: mmma art\nChange-Id: I9e18e80b3f37dd2aeb8ecd1c25abe4d5cf2f1c45\n"
    },
    {
      "commit": "c945e0d410ca8d4e9ba09272e8727a3192f1e449",
      "tree": "b010aeed33bb66bbaf9af355f21dfad2f9232dea",
      "parents": [
        "d93e374e273dd45f5d829399da1d4201bf46057e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 17:26:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:23:48 2018 +0100"
      },
      "message": "Remove ArtMethod\u0027s declaring class state checks.\n\nThis check was not very useful because the Class is already\nin a state to pass the check when we\u0027re constructing the\nArtMethod and it can never revert to an earlier state, so\nthe check is essentially a weak protection against GC bugs.\nBesides not being very useful, the check had the ability to\ninvalidate ObjPtr\u003c\u003e cookies (when called in non-runnable\nstate), making it difficult to fully ObjPtr\u003c\u003e-ify the code.\n\nAlso remove a lot of kReadBarrierOption template parameters\nwhich were needed specifically for this check. This removes\nunnecessary maintence burden as shown by past bugs dealing\nwith carefully adding those parameters where necessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 74373650\nBug: 31113334\nChange-Id: I87f2999fc4e7c27b5c2307139269b4b5f6649d16\n"
    },
    {
      "commit": "59d0872519e8abd1ec17003c17b5c3780ed831df",
      "tree": "718c0ff45c67d962a822527ae003eb75e720c4a4",
      "parents": [
        "79deffcd99bb3c87ea1c2c36509ef156d4010b2e",
        "8e524ad3c690c183b1a71f6114796974a107c5dd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 19 15:18:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 19 15:18:47 2018 +0000"
      },
      "message": "Merge \"Always produce PIC code for AOT compilation.\""
    },
    {
      "commit": "d93e374e273dd45f5d829399da1d4201bf46057e",
      "tree": "280dc72b2aec4696bbc35ad39ca8d3479107380e",
      "parents": [
        "7f7f9d3991f3a55da8934a3b72890d4776373598"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 10:58:13 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:04:38 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n\nAnd clean up some forgotten things after old CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8af0e845c24d674d0efab21d80c29949b1cc0593\n"
    },
    {
      "commit": "33602449cf4e315330a460d8dbccdbda6bdef7da",
      "tree": "96fe782c8eeecb0278e23c8d1d86267d1b320598",
      "parents": [
        "728ca71cc4530bd1e41f2b36347968d8658eabca",
        "18ba1dacaaf426cbeb3c0aff6db9c58a752f9a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 16 17:46:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 17:46:38 2018 +0000"
      },
      "message": "Merge \"ART: Implement loop full unrolling.\""
    },
    {
      "commit": "ebe60376cd86a5db8c69938911cc2a59547e558e",
      "tree": "7b7261a30debab68fefa23a1219acf295428c06b",
      "parents": [
        "f1255887da17bfb86da8a958678bae7422cc00ab",
        "f58dc65c52f5e3f15eaaa1e25d7259e64649ade3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 16 11:05:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 11:05:59 2018 +0000"
      },
      "message": "Merge \"ART: Delete code optimizing a%1 and a%-1 from InstructionCodeGeneratorARM64\""
    },
    {
      "commit": "8e524ad3c690c183b1a71f6114796974a107c5dd",
      "tree": "6ee124814e8f33fd4706eb15fcad2cae0019546b",
      "parents": [
        "5991b184a40e4ce181d67d683ced46caa6143b53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 13 10:27:43 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 16 10:12:51 2018 +0100"
      },
      "message": "Always produce PIC code for AOT compilation.\n\nChange sharpening to use PIC load kinds for AOT compilation\nand add \"Jit\" to the direct addressing load kind names. Use\nPIC code also for the Integer.valueOf() intrinsic codegen.\nRemove all support for non-PIC linker patches.\n\nThe dex2oat --compile-pic option is retained for now but\nignored by the compiler.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I54d666f6522f160a1b6ece4045a15d19363acbb6\n"
    },
    {
      "commit": "2449d6d006dcb685d3b386edcf624e67ef37e12c",
      "tree": "044e224023c972e02340927acc3e5b9e518adbc8",
      "parents": [
        "e24c69db699cf92b9ee4182442be3066ce1be762",
        "2c76257e4bfcd6f522b0cd3487ba7d9900043243"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 04:46:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Jul 15 04:46:32 2018 +0000"
      },
      "message": "Merge \"Remove unused InvokeInfo from stack maps and the runtime.\""
    },
    {
      "commit": "9434487f640d4a4c247e916e30137b9359f50eed",
      "tree": "4edc7e4811cc570cf29ac0ec47b04cfd2b5383f1",
      "parents": [
        "cdfc942e60032622b5a4379d0dd5ca914ba6393a"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 09:57:50 2018 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 13:10:40 2018 -0700"
      },
      "message": "Expand comment for HVecMultiplyAccumulate\n\nState explicitly that fused multiply-add may not be used, since this\nwas a source of prior confusion. Add a DCHECK to draw developers\nattention to this, if they try to add a floating point multiply-add.\n\nSee https://android-review.googlesource.com/c/platform/art/+/716505 .\n\nTest: Treehugger\nChange-Id: I1331be120a0a54baeb4da92e9211407b08892e98\n"
    },
    {
      "commit": "cdfc942e60032622b5a4379d0dd5ca914ba6393a",
      "tree": "823e767f6eba6fb2831f69753936bc0c35eea84e",
      "parents": [
        "ec1f1a91328f44d93cfc16e39160dbdfce2f7b9a",
        "f5f56c791c5853f43a2a9781c98d5776c7dd5a59"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 16:35:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 13 16:35:30 2018 +0000"
      },
      "message": "Merge \"Revert \"Emit vector mulitply and accumulate instructions for x86.\"\""
    },
    {
      "commit": "2c76257e4bfcd6f522b0cd3487ba7d9900043243",
      "tree": "ab1098cffcb3e13087e770d26fef9f4d6f06a550",
      "parents": [
        "0b4a439f808f4602c7b97364e49c5546f5100d51"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 10:09:11 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 13 16:32:11 2018 +0100"
      },
      "message": "Remove unused InvokeInfo from stack maps and the runtime.\n\nTest: test-art-host-gtest\nChange-Id: I5ce28973042f9241e72ceb52fc5db472ca571563\n"
    },
    {
      "commit": "f58dc65c52f5e3f15eaaa1e25d7259e64649ade3",
      "tree": "4485299d9959a658909879b5a234fd807d7627ff",
      "parents": [
        "0b4a439f808f4602c7b97364e49c5546f5100d51"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Jun 25 17:54:07 2018 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Fri Jul 13 16:30:32 2018 +0100"
      },
      "message": "ART: Delete code optimizing a%1 and a%-1 from InstructionCodeGeneratorARM64\n\nIn InstructionWithAbsorbingInputSimplifier there is code optimizing a%1\nand a%-1. So the code in InstructionCodeGeneratorARM64 optimizing such\ncases can be deleted.\n\nThis patch deletes the code from InstructionCodeGeneratorARM64 and adds\nadditional tests.\n\nTest: 012-math, 014-math3, 411-optimizing-arith, 411-checker-hdiv-hrem-pow2\nTest: 701-easy-div-rem, 442-checker-constant-folding\nTest: test-art-host, test-art-target\nChange-Id: Ib80c0aa4c3e28b07fa79bb43783274c9d7fc456a\n"
    },
    {
      "commit": "f5f56c791c5853f43a2a9781c98d5776c7dd5a59",
      "tree": "ed8270e3a5d0161ebe5bec0606a24cd5e3123e59",
      "parents": [
        "61908880e6565acfadbafe93fa64de000014f1a6"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 00:05:27 2018 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 00:05:27 2018 +0000"
      },
      "message": "Revert \"Emit vector mulitply and accumulate instructions for x86.\"\n\nThis reverts commit 61908880e6565acfadbafe93fa64de000014f1a6.\n\nReason for revert: By failing to round multiply results, it does not follow Java rounding rules.\n\nChange-Id: Ic0ef08691bef266c9f8d91973e596e09ff3307c6\n"
    },
    {
      "commit": "bbd2cc2e23691515def685fc3dcea6cd792a2f4e",
      "tree": "45d84f370b70b9aaee23aaa514dd3073d78893ba",
      "parents": [
        "c06bfc9b18e6421ac60e7b27f8f1e90b45772f52",
        "51b8aafd3beb8855a258383a9eb876a783375629"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 12 10:43:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 12 10:43:28 2018 +0000"
      },
      "message": "Merge \"Fix HClinitCheck elimination in instruction builder.\""
    },
    {
      "commit": "51b8aafd3beb8855a258383a9eb876a783375629",
      "tree": "002f77eb0308dbb11b6e5e5a88ce4bc19c6ff836",
      "parents": [
        "e824cfdcfd41d400237a806ff93caca7f2e51878"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 09 15:17:05 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 12 09:23:17 2018 +0100"
      },
      "message": "Fix HClinitCheck elimination in instruction builder.\n\nTo handle escaping instances of erroneous classes correctly,\nwe can omit the HClinitCheck only when using a class in the\nstatic method of the very same class. Even for superclasses\nwe need to do the check. The new test exposes the cases\nwhere we were previously diverging from the RI.\n\nAlso clean up the CompilerDriver by inlining one function\ndirectly to the HInstructionBuild::IsInitialized(.) and\nremoving some related functions that are no longer used.\n\nThe size of the aosp_taimen-userdebug prebuilts:\n  - before:\n    arm/boot*.oat: 16891788\n    arm64/boot*.oat: 19815520\n    oat/arm64/services.odex: 20071624\n  - after:\n    arm/boot*.oat: 16949532 (+56.4KiB, +0.34%)\n    arm64/boot*.oat: 19889752 (+72.5KiB, +0.37%)\n    oat/arm64/services.odex: 20224328 (+149.1KiB, +0.76%)\nwith minor changes to other app prebuilts.\n\nNote: Some of that could be reclaimed by reinstating the old\noptimization for classes where no bytecode can be executed\nduring initialization (no \u003cclinit\u003e to execute in that class\nor superclasses).\n\nTest: 174-escaping-instance-of-bad-class\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --jvm -t 174\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 62478025\nChange-Id: I41f026ea7fecc615c06e87f3b6cb847de0ede8a6\n"
    },
    {
      "commit": "d109e30eab8ba25f8d89be2a83d9036e2d541af2",
      "tree": "24df91603efe9ce8c4a2efd09ac402aceb10df4e",
      "parents": [
        "c916736ca1e375c276df251446baf2ac8ff3eb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 27 10:25:41 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:51 2018 -0700"
      },
      "message": "Don\u0027t use StringFactory.newEmptyString in compiled code\n\nWhen compiling debuggable code we would compile a new-instance String\ninstruction into a StringFactory.newEmptyString invoke. This\nadditional invoke could be observed using tracing and is inconsistent\nwith the interpreter, where the string is simply allocated directly.\nIn order to bring these two modes into alignment we added a new\nAllocStringObject quick entrypoint that will be used instead of the\nnormal AllocObject\u003c...\u003e entrypoints when allocating a string. This\nentrypoint directly allocates a new string in the same manner the\ninterpreter does.\n\nNeeds next CL for test to work.\n\nBug: 110884646\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xjitthreshold:0 --jit\nTest: Manual inspection of compiled code.\nChange-Id: I7b4b084bcf7dd9a23485c0e3cd2cd04a04b43d3d\n"
    },
    {
      "commit": "b808ddca3d4816132f6f05bebcc6676144b1f6b6",
      "tree": "8806f6bab46a441fb9ea68d130abd31ba876518b",
      "parents": [
        "97c465ca6ee4c76766f8abaa3a98ee0329019c5c",
        "afc97bca07c85d4c3b46801c557edd12d681fc96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 06 13:57:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 06 13:57:41 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Add CodeInfo to JNI methods.\"\""
    },
    {
      "commit": "afc97bca07c85d4c3b46801c557edd12d681fc96",
      "tree": "fd53094370a28aa4ba4b9d419e05ff7797cf51ae",
      "parents": [
        "564fa8a1f3e3c39793c9b146ed5f21650617dc3f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 08:14:35 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 13:04:43 2018 +0100"
      },
      "message": "Revert^2 \"Add CodeInfo to JNI methods.\"\n\nIt has no stack maps. We only store the frame info there.\n\nAs a consequence of having CodeInfo, the JNI methods are\nnow classified as IsOptimized().\n\nThis does not have any real effect on .oat file size.\n\nThis reverts commit 564fa8a1f3e3c39793c9b146ed5f21650617dc3f.\n\nTest: test-art-host-gtest\nTest: test-art-target-gtest-jni_compiler_test32\nChange-Id: Ic7a1949027d89ba97cfedfc8ea453f041193b6a7\n"
    },
    {
      "commit": "a296f908e186398ff413c78f2460cb3138e531ab",
      "tree": "04592d0bcf8afac399dc562efdcac491072366eb",
      "parents": [
        "b275072ddfb1bfcacc914aff08cb0f5774000258",
        "93bd3619de4616040d672a4ed3825976bed4bfce"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 00:03:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 00:03:21 2018 +0000"
      },
      "message": "Merge \"Use iterators to access stack map data.\""
    },
    {
      "commit": "b275072ddfb1bfcacc914aff08cb0f5774000258",
      "tree": "de2997300d8b8da936136e222b6a7e48735b4508",
      "parents": [
        "ea9b308e4548b704e21f4d587d9006ddc9db7b9e",
        "564fa8a1f3e3c39793c9b146ed5f21650617dc3f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 00:02:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 00:02:30 2018 +0000"
      },
      "message": "Merge \"Revert \"Add CodeInfo to JNI methods.\"\""
    },
    {
      "commit": "564fa8a1f3e3c39793c9b146ed5f21650617dc3f",
      "tree": "b9e960a55f5643e65ecd05e258f9ac1662288bcc",
      "parents": [
        "85f3934f364e1674bfd2a6813274918576acdf60"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 00:01:10 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 00:01:10 2018 +0000"
      },
      "message": "Revert \"Add CodeInfo to JNI methods.\"\n\nThis reverts commit 85f3934f364e1674bfd2a6813274918576acdf60.\n\nReason for revert: breaks gtests on target\n\nChange-Id: I9f97fe4e7557027677824974568120f658bbd53a\n"
    },
    {
      "commit": "64cdf56aeac47ab2dfd4f6437f976de9a9ad372d",
      "tree": "a833bf651517419264cfa17a4c1bc61cf86c1800",
      "parents": [
        "85861e8095f8b9ab774a78b2a1820008da009438",
        "85f3934f364e1674bfd2a6813274918576acdf60"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 04 15:13:10 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 04 15:13:10 2018 +0000"
      },
      "message": "Merge \"Add CodeInfo to JNI methods.\""
    },
    {
      "commit": "85861e8095f8b9ab774a78b2a1820008da009438",
      "tree": "290d80535544fb3b8795f0f88a11b03598052d6e",
      "parents": [
        "0e4563c4ccd3a36dff11c33fc98aa9cedae722e4",
        "0e32908d0ee4be5905cdd409dd3c45331fc98465"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 04 14:22:11 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 04 14:22:11 2018 +0000"
      },
      "message": "Merge \"ART: Refactor scalar loop optimizations.\""
    },
    {
      "commit": "93bd3619de4616040d672a4ed3825976bed4bfce",
      "tree": "2ab3424374ed3d316053ed8e9ec2d4b95ea2ef4d",
      "parents": [
        "f07d5617770c37d87447c8bddf105eb0469ab093"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 02 19:30:18 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 04 14:23:12 2018 +0100"
      },
      "message": "Use iterators to access stack map data.\n\nTry to simplify the code using the recently added iterators.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0b9f54df01749ee6ec3a67cfb07ba636a2489c89\n"
    },
    {
      "commit": "85f3934f364e1674bfd2a6813274918576acdf60",
      "tree": "7dde44e022bfe43439982e6d2c699f5acc73efcf",
      "parents": [
        "0162450a86c1586c8e0d28710ea0280bfa64ae32"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:52 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 04 13:51:50 2018 +0100"
      },
      "message": "Add CodeInfo to JNI methods.\n\nIt has no stack maps. We only store the frame info there.\n\nAs a consequence of having CodeInfo, the JNI methods are\nnow classified as IsOptimized().\n\nThis does not have any real effect on .oat file size.\n\nTest: test-art-host-gtest\nChange-Id: I8d03a3af347dc7239719bb3c39ecf84c6eaece80\n"
    },
    {
      "commit": "18ba1dacaaf426cbeb3c0aff6db9c58a752f9a96",
      "tree": "e6d82d3b8856137a1b09a2843ea88165d97afbfe",
      "parents": [
        "0e32908d0ee4be5905cdd409dd3c45331fc98465"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed May 16 19:06:32 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Jul 04 13:12:18 2018 +0100"
      },
      "message": "ART: Implement loop full unrolling.\n\nPerforms whole loop unrolling for small loops with small\ntrip count to eliminate the loop check overhead, to have\nmore opportunities for inter-iteration optimizations.\n\ncaffeinemark/FloatAtom: 1.2x performance on arm64 Cortex-A57.\n\nTest: 530-checker-peel-unroll.\nTest: test-art-host, test-art-target.\nChange-Id: Idf3fe3cb611376935d176c60db8c49907222e28a\n"
    },
    {
      "commit": "0e32908d0ee4be5905cdd409dd3c45331fc98465",
      "tree": "592ffd19b21379b0815345302b04911932fa90f9",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue Jun 12 10:23:27 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Jul 04 13:12:13 2018 +0100"
      },
      "message": "ART: Refactor scalar loop optimizations.\n\nRefactor scalar loop peeling and unrolling to eliminate repeated\nchecks and graph traversals, to make the code more readable and\nto make it easier to add new scalar loop opts.\n\nThis is a prerequisite for full unrolling patch.\n\nTest: 530-checker-peel-unroll.\nTest: test-art-target, test-art-host.\nChange-Id: If824a95f304033555085eefac7524e59ed540322\n"
    },
    {
      "commit": "0162450a86c1586c8e0d28710ea0280bfa64ae32",
      "tree": "b9e960a55f5643e65ecd05e258f9ac1662288bcc",
      "parents": [
        "a8d5a5f709cc7611352d58fb6f2fb50411563653",
        "0b4267720380ca746abb9090364cea9ee6cb1435"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 04 08:41:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 04 08:41:41 2018 +0000"
      },
      "message": "Merge \"Revert \"Refactor DexFile ownership\"\""
    },
    {
      "commit": "a8d5a5f709cc7611352d58fb6f2fb50411563653",
      "tree": "be3f0cf1d59e5797100cae0d859e12605ac0b378",
      "parents": [
        "7583d915800ad330da0232dfdb0a4d1bda2d074c",
        "8a62a4c9570b345b715a022d33d443413a634392"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 04 07:50:56 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 04 07:50:56 2018 +0000"
      },
      "message": "Merge \"Handle String.\u003cinit\u003e with a phi input.\""
    },
    {
      "commit": "0b4267720380ca746abb9090364cea9ee6cb1435",
      "tree": "3e330d7241d5608858b9084a246a4bb8b88b070f",
      "parents": [
        "7583d915800ad330da0232dfdb0a4d1bda2d074c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 03 23:03:42 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 03 23:03:56 2018 +0000"
      },
      "message": "Revert \"Refactor DexFile ownership\"\n\nThis reverts commit b095f022a9683a9123018c01e22595cf969fd88b.\n\nReason for revert: Caused huge interpreter performance regression.\n\nChange-Id: I0f27f8f234d315807695362bf679ef47f68723f7\n"
    },
    {
      "commit": "8a62a4c9570b345b715a022d33d443413a634392",
      "tree": "4b34426f14301f230e9d6b5f23486a038cf6e548",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 03 09:39:07 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 03 11:22:34 2018 +0100"
      },
      "message": "Handle String.\u003cinit\u003e with a phi input.\n\nWe wrongly assumed only irreducible loops could lead\nto this situation, but any loop can actually be in between\na String NewInstance and a String.\u003cinit\u003e.\n\nbug: 109666561\nTest: 563-checker-fakestring\nChange-Id: I018a22f7e22c15e140252544415f51d544f7cc13\n"
    },
    {
      "commit": "ad78fb294dbf8bae52835f98cc3e38a6f217781f",
      "tree": "7c84bd96a90ed96c12a65a0390c171fa79867fd3",
      "parents": [
        "b3df69b26ae461aeb5c990faa9bfa4bf17574234",
        "61908880e6565acfadbafe93fa64de000014f1a6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 02 12:33:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 02 12:33:58 2018 +0000"
      },
      "message": "Merge \"Emit vector mulitply and accumulate instructions for x86.\""
    },
    {
      "commit": "b3df69b26ae461aeb5c990faa9bfa4bf17574234",
      "tree": "d47ef1c292c30ec4f794af5f38388804027a17c6",
      "parents": [
        "b28683f43231e65860ecf91c96a8c0234542c019",
        "15f95b103731a4386c784ef3ca79c47e68e27719"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 02 11:30:56 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 02 11:30:56 2018 +0000"
      },
      "message": "Merge \"ART: Fix HSelectGenerator for instructions which can throw.\""
    },
    {
      "commit": "61908880e6565acfadbafe93fa64de000014f1a6",
      "tree": "40b535db9175f3d959364d5bc30eaab4e2c4b4c4",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Gupta Kumar, Sanjiv",
        "email": "sanjiv.kumar.gupta@intel.com",
        "time": "Fri Jun 29 13:06:35 2018 +0530"
      },
      "committer": {
        "name": "Gupta Kumar, Sanjiv",
        "email": "sanjiv.kumar.gupta@intel.com",
        "time": "Mon Jul 02 15:37:38 2018 +0530"
      },
      "message": "Emit vector mulitply and accumulate instructions for x86.\n\nThis patch adds a new cpu vaiant named kabylake and performs\ninstruction simplification to generate VectorMulitplyAccumulate.\n\nTest: ./test.py --host --64\n\nChange-Id: Ie6cc882dadf1322dd4d3ae49bfdb600b0c447765\nSigned-off-by: Gupta Kumar, Sanjiv \u003csanjiv.kumar.gupta@intel.com\u003e\n"
    },
    {
      "commit": "15f95b103731a4386c784ef3ca79c47e68e27719",
      "tree": "12a257e5889029543d960c5578c20d2600824bb0",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 29 15:30:36 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 29 19:29:53 2018 +0100"
      },
      "message": "ART: Fix HSelectGenerator for instructions which can throw.\n\nMake sure that HSelectGenerator doesn\u0027t hoist instructions which\ncan throw. Currently this doesn\u0027t happen due to\nSideEffect::CanTriggerGC however this side effect is to be removed\nfor some instructions.\n\nTest: select_generator_test.\nTest: test-art-host, test-art-target.\n\nChange-Id: I996f6cbdcee4987a36079d387a7b74b326881ab6\n"
    },
    {
      "commit": "04a4f20f26b0935a43f74269f68ddfd67335afb8",
      "tree": "851fd56078bdff9edb4a8354c8695fc5c7bda2f4",
      "parents": [
        "97ac9cc3c62fe8d93af316763a20d13b3495b993",
        "6fd1606a3f3fc2dd53ab4f8b371e420b3e33c74f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 29 15:39:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 29 15:39:58 2018 +0000"
      },
      "message": "Merge \"Implement Integer.valueOf() intrinsic for boot image.\""
    },
    {
      "commit": "6fd1606a3f3fc2dd53ab4f8b371e420b3e33c74f",
      "tree": "9f944d267ce3616eb969c027665e4a451c2b3879",
      "parents": [
        "bb089b6bf850c87e0e42917a383cc7298dcb09c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 26 11:02:04 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 29 14:39:00 2018 +0100"
      },
      "message": "Implement Integer.valueOf() intrinsic for boot image.\n\nAnd generate only one \"boot image live objects\" array rather\nthan one per boot*.art file.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 71526895\nChange-Id: I23af7f47fea5150805f801cd2512f2d152ee5b73\n"
    },
    {
      "commit": "97ac9cc3c62fe8d93af316763a20d13b3495b993",
      "tree": "bafe28742d1bdfb3e8e119fcd1c5844c29ce7b23",
      "parents": [
        "956753a5952a74aa43d9e16454b97062d7eddb8c",
        "bb089b6bf850c87e0e42917a383cc7298dcb09c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 29 12:04:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 29 12:04:07 2018 +0000"
      },
      "message": "Merge \"Remove CompilerDriver::support_boot_image_fixup_.\""
    },
    {
      "commit": "bb089b6bf850c87e0e42917a383cc7298dcb09c5",
      "tree": "9076775ab1a00bf7321a6b4a457ddd81f20c10c1",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 28 17:30:16 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 28 17:55:01 2018 +0100"
      },
      "message": "Remove CompilerDriver::support_boot_image_fixup_.\n\nCheck for non-PIC boot image as a testing config instead.\nHonor the config for HInvokeStaticOrDirect sharpening.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3645f4fefe322f1fd64ea88a2b41a35ceccea688\n"
    },
    {
      "commit": "b095f022a9683a9123018c01e22595cf969fd88b",
      "tree": "ccbf6e69ca17f4677186f4e148e1f9baf8bc7ae4",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jun 22 14:38:51 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jun 27 18:14:50 2018 -0700"
      },
      "message": "Refactor DexFile ownership\n\nAvoid bare pointers in DexFileLoader APIs, which caused clang-tidy\nissues and other problems.\n\nBug: none\nTest: build and boot\nChange-Id: Ic277bc83af1997774b42c55d3d631ec940b9c015\n"
    },
    {
      "commit": "86c84f7edbe58a7a18ac40abba0ef268ed367271",
      "tree": "84c8c19fd2f50bd9bc385df3ab2a339d908c0ef3",
      "parents": [
        "de4efa65db3c38df49c680159bedf72afcc1fc71",
        "f9e90541479502840c19274cf4d5b7ff22e51193"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 27 13:18:12 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 13:18:12 2018 +0000"
      },
      "message": "Merge \"ART: Refactor Int64ConstantFrom to use Int64FromConstant; rename it to Int64FromLocation\""
    },
    {
      "commit": "f9e90541479502840c19274cf4d5b7ff22e51193",
      "tree": "a5ba846c0d493aae7db126ee91d635765250a6e9",
      "parents": [
        "a3234e96206a841c83f9f5bf0d4e14fb07b72a5e"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Jun 25 13:43:53 2018 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Jun 27 13:24:35 2018 +0100"
      },
      "message": "ART: Refactor Int64ConstantFrom to use Int64FromConstant; rename it to Int64FromLocation\n\nInt64ConstantFrom function duplicates code of the Int64FromConstant. Its\ncode can be replaced with a call: Int64FromConstant(location.getConstant()).\n\nThe patch removes the duplicating code. It also changes the function name to\nInt64FromLocation to be consistent with its usage.\n\nTest: test-art-host, test-art-target\nChange-Id: I5624259aa72523f97ca8fc132a6152f338425c8e\n"
    },
    {
      "commit": "f07d5617770c37d87447c8bddf105eb0469ab093",
      "tree": "e6b15b904e591a3b805b292ce9afd9b0cecbf40d",
      "parents": [
        "2dc252e37d4df0c4160cd20b6fc852f5f28b7b87",
        "a043111e3a2c09b549708a6227a1f54d91da76aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 27 12:23:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 12:23:54 2018 +0000"
      },
      "message": "Merge \"Move instruction_set_ to CompilerOptions.\""
    },
    {
      "commit": "2dc252e37d4df0c4160cd20b6fc852f5f28b7b87",
      "tree": "5d3f59bb106801aac2076369aa4de2ebe072c501",
      "parents": [
        "4ced1a8537f887d9d878042d9ea2415b1b959512",
        "a38e6cf2aaf4fd3d92b05c0a7a146fb5525ea72d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 12:23:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 12:23:30 2018 +0000"
      },
      "message": "Merge \"Remove explicit size from CodeInfo.\""
    },
    {
      "commit": "4ced1a8537f887d9d878042d9ea2415b1b959512",
      "tree": "b5808c7f882b02d08c9e6ab2bc35346a016d5178",
      "parents": [
        "893753811f4686edf11c953701e3cc857b8f45e0",
        "a3234e96206a841c83f9f5bf0d4e14fb07b72a5e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 27 12:16:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 12:16:14 2018 +0000"
      },
      "message": "Merge \"ARM64: Optimization of HRem and HDiv when a denominator is power of 2\""
    },
    {
      "commit": "893753811f4686edf11c953701e3cc857b8f45e0",
      "tree": "ee9f04d1c89be2966cdabc013cdc71f47d19a993",
      "parents": [
        "639f5150805006a2c3a07daa804abcdba0bc3ece",
        "a6e2614354803077bd6e2f015873a717a7cc6690"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 27 11:35:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 11:35:33 2018 +0000"
      },
      "message": "Merge \"ART: Extend the range of clonable instructions.\""
    },
    {
      "commit": "a38e6cf2aaf4fd3d92b05c0a7a146fb5525ea72d",
      "tree": "377c74c834776b9942bb7c2853e44447dac27f83",
      "parents": [
        "f6ba5b316b51d0fb9f91cb51a42e51dfeee62ee4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 26 18:13:49 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 10:15:32 2018 +0100"
      },
      "message": "Remove explicit size from CodeInfo.\n\nIt was mostly there since it was necessary to create the\nbound-checked MemoryRegion for loading.\n\nThe new BitMemoryReader interface is much easier to\ntweak to avoid needing to know the size ahead of time.\n\nKeep the CHECK that the loader reads the expected number\nof bytes, but move it to FillInCodeInfo.\n\nThis saves 0.2% of .oat file size.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I92ee936e9fd004da61b90841aff9c9f2029fcfbf\n"
    },
    {
      "commit": "a3234e96206a841c83f9f5bf0d4e14fb07b72a5e",
      "tree": "b71bab3d76984daa0def172ac9811a1f72c758e7",
      "parents": [
        "a84b53a0a5404f4049f24300dbc81bc859b12105"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Tue Jun 19 23:26:15 2018 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Jun 27 10:03:49 2018 +0100"
      },
      "message": "ARM64: Optimization of HRem and HDiv when a denominator is power of 2\n\nOn ARM64 when a denominator is a power of 2 fewer instructions can be\nused to represent HDiv and HRem. For example, a/2 can be lowered to\nadd+asr; a%2 to cmp+and+csneg. Currently four instructions\nare always used for the division by a power of 2 and five instructions for the\nremainder.\n\nThis patch optimizes the division by 2 (lowering to two instructions),\nthe remainder from the division by 2 (lowering to three instructions)\nand the remainder from the division by a power of 2 (lowering to four\ninstructions).\n\nOn Pixel 2, performance improvements, geomean of diff for a benchmark group (%),\nmax - the maximum seen diff of a single case in a benchmark group, higher better:\nBig core:\nalgorithm                 0.664 (max: 1.6)\nintrinsics                5.813 (max: 19.0)\nmicro                     4.734 (max: 22.0)\n\nLittle core:\nalgorithm                 2.097 (max: 5.4)\nintrinsics               14.610 (max: 27.3)\nmicro                    12.687 (max: 35.6)\n\nTest: 012-math, 014-math3, 411-optimizing-arith, 411-checker-hdiv-hrem-pow2\nTest: test-art-host, test-art-target\nChange-Id: Iaaec6dc8fc0ec5df2b2d0e8692d5dea573b8d284\n"
    },
    {
      "commit": "a84b53a0a5404f4049f24300dbc81bc859b12105",
      "tree": "7c411fda0733b048625cd09a5fda214f1eb69135",
      "parents": [
        "a98d9e76ed2486db9a7490a6e421a509ab2f6e2d",
        "f6ba5b316b51d0fb9f91cb51a42e51dfeee62ee4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 08:54:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 08:54:43 2018 +0000"
      },
      "message": "Merge \"Add method frame info to CodeInfo.\""
    },
    {
      "commit": "f6ba5b316b51d0fb9f91cb51a42e51dfeee62ee4",
      "tree": "ac3b776ae3c20fc957949d06dd878ef3ffa6ffb5",
      "parents": [
        "cca7cb9ffa56d8ab8fd0c5997c8bfd965d7426c1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:49 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 26 16:51:15 2018 +0100"
      },
      "message": "Add method frame info to CodeInfo.\n\nThe stored information will be used in follow-up CLs.\n\nThis temporarily increases .oat file size by 0.7%.\n\nTest: test-art-host-gtest\nChange-Id: Ie7d898b06398ae44287bb1e8153861ab112a216c\n"
    },
    {
      "commit": "8d9815f4b12e42a4b327e8ee2a3d39a280a8a2c6",
      "tree": "0ae986eea6067bbb733e9ca54ef643222e087046",
      "parents": [
        "fad8ad743e27b5d809f4e7d71d50fe3726cc7b2a",
        "213ee2da6a1c58d0fc12c937bbd9c9974ca00aca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 26 13:10:49 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 26 13:10:49 2018 +0000"
      },
      "message": "Merge \"Move dex_files_for_oat_file_ to CompilerOptions.\""
    },
    {
      "commit": "0e4ecbe581f574a9f682f6cdf8e1b6382da1b45f",
      "tree": "e26b6fb25f6860fb09bae607e20a343da9461164",
      "parents": [
        "cca7cb9ffa56d8ab8fd0c5997c8bfd965d7426c1",
        "dc4bccef0ded1c261bf9838def2ef329765a8682"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 17:47:01 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 25 17:47:01 2018 +0000"
      },
      "message": "Merge \"Move image_classes_ to CompilerOptions.\""
    },
    {
      "commit": "a043111e3a2c09b549708a6227a1f54d91da76aa",
      "tree": "393fe11cfceccebf474e4bdf36ff79b70b97f589",
      "parents": [
        "213ee2da6a1c58d0fc12c937bbd9c9974ca00aca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 09:32:54 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 18:43:19 2018 +0100"
      },
      "message": "Move instruction_set_ to CompilerOptions.\n\nRemoves CompilerDriver dependency from ImageWriter and\nseveral other classes.\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\nChange-Id: I3c5b8ff73732128b9c4fad9405231a216ea72465\n"
    },
    {
      "commit": "213ee2da6a1c58d0fc12c937bbd9c9974ca00aca",
      "tree": "bfb5d5ed85473054d863bbaa91a7d9a69a803eec",
      "parents": [
        "dc4bccef0ded1c261bf9838def2ef329765a8682"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 22 11:56:34 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 11:41:47 2018 +0100"
      },
      "message": "Move dex_files_for_oat_file_ to CompilerOptions.\n\nA step toward removing the CompilerDriver dependency from\nseveral classes, including HSharpening and ImageWriter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I364ef66511fdf855cb11b12c818a40572b037727\n"
    },
    {
      "commit": "dc4bccef0ded1c261bf9838def2ef329765a8682",
      "tree": "f007ff3f747ae2d1e6a20d9bd9c017b2ce191f1e",
      "parents": [
        "eebb821b1adaf2db7662fc1c3ff4e9fcfe59a694"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 16:15:42 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 11:30:07 2018 +0100"
      },
      "message": "Move image_classes_ to CompilerOptions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ifb30e071d7b39ae939fc3f83d7eba82fd077c7e8\n"
    },
    {
      "commit": "accb14cc7dac2443020fd44c9391c94673d78a4b",
      "tree": "9d045fd4a97cfa6326994144163cf8d3e9dabea8",
      "parents": [
        "8a7470798fdc2f16eae3e8a6f3a6849eb589d7f5",
        "078d7ba2c20d7778f8988e89a70d47e07372cc5a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 22 21:17:13 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 22 21:17:13 2018 +0000"
      },
      "message": "Merge \"Implement BitMemory{Reader,Writer}\""
    },
    {
      "commit": "a6e2614354803077bd6e2f015873a717a7cc6690",
      "tree": "c0bc563a2e002b18166912c7497ae2e1d66cd75b",
      "parents": [
        "f28f96987c9a8fc3d01154f51f0a37fd32967949"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue Jun 19 14:55:17 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 22 14:41:50 2018 +0100"
      },
      "message": "ART: Extend the range of clonable instructions.\n\nMake a bunch of instructions clonable: DivZeroCheck,\nTypeConversion, InstanceOf, CheckCast.\n\nTest: with forced peeling and unrolling (applied to every clonable\nloop) all the test pass and device boots to GUI.\n\nTest: angler boots to GUI.\nTest: test-art-target, test-art-host.\nTest: 530-checker-peel-unroll.\n\nChange-Id: Id056b998e0a656dbada6958e7c667b7331047059\n"
    },
    {
      "commit": "078d7ba2c20d7778f8988e89a70d47e07372cc5a",
      "tree": "5f9340183de479241e8c043a0996aadc41583b5a",
      "parents": [
        "0b4e5a3a1275a4aa6955a0576ab9d57eedd5bdd2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 21 15:36:48 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 22 13:24:28 2018 +0100"
      },
      "message": "Implement BitMemory{Reader,Writer}\n\nTwo simple classes which replace the need to pass\nthe (BitMemoryRegion, bit_offset) tuple everywhere.\n\nThe slightly simplifies the code and it also makes\nit possible to optimize those classes in the future.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I4806c805149a07e1a11b76405ca27960a0012c69\n"
    },
    {
      "commit": "6566496d4c437c83f23871ca5670bad8a0a8a7ce",
      "tree": "7cb301f51b65ded6849fa29896115cb10ca3f453",
      "parents": [
        "ccfc88af4ab94ff91f9b241d5113dfe7cb1f2b34",
        "0b4e5a3a1275a4aa6955a0576ab9d57eedd5bdd2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 22 12:15:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 22 12:15:38 2018 +0000"
      },
      "message": "Merge \"Binary search stack maps by native pc.\""
    },
    {
      "commit": "ccfc88af4ab94ff91f9b241d5113dfe7cb1f2b34",
      "tree": "68198426ee1a8ff1f4ee06f131be1e75fd961968",
      "parents": [
        "ef3f32487a8a9a8b4272ea5ae372642c721ee41a",
        "eebb821b1adaf2db7662fc1c3ff4e9fcfe59a694"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 22 09:03:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 22 09:03:30 2018 +0000"
      },
      "message": "Merge \"Implement Integer.valueOf() intrinsic for PIC.\""
    },
    {
      "commit": "bf711e388998c9233b9fc930bcf02511b6943706",
      "tree": "eeb66747dff7329516d85e29da22795ae51947b7",
      "parents": [
        "5774f57afc997ffe765c32199bd0d5e55d23005a",
        "878f17d7737a91235013ed16ebe057a12367941b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jun 21 16:28:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 21 16:28:30 2018 +0000"
      },
      "message": "Merge \"ARM64: Splitting GenerateDivRem* functions into GenerateIntDiv and GenerateIntRem functions\""
    },
    {
      "commit": "eebb821b1adaf2db7662fc1c3ff4e9fcfe59a694",
      "tree": "a3d3cf5f8c20d03fccdc0808537904da63e74938",
      "parents": [
        "7e56bd41cde4e489a11050d9e340bf8b5692d9e8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 05 14:57:24 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 16:12:28 2018 +0100"
      },
      "message": "Implement Integer.valueOf() intrinsic for PIC.\n\nAnd fix the intrinsic for JIT even in case when someone\nmesses up the IntegerCache using reflection. Two cases are\nexposed with a regression test (one that previously failed\nrandomly and one that failed 100%) but other crashes were\npossible; for example, we would need a read barrier for\narray reads when elements are not guaranteed to be in the\nboot image.\n\nThe new approach loads references only from the boot image\nlive objects array which cannot be touched by reflection.\nThe referenced objects and IntegerCache.cache are exposed\nand can lead to weird behavior but not crashes.\n\nOn x86, the pc_relative_fixups_86 actually checks the cache\nan additional time but discrepancies between this check and\nthe location building at the beginning of codegen should be\nOK as the HIsX86ComputeBaseMethodAddress should be added\nfor PIC regardless of whether pc_relative_fixups_86 thinks\nthe method is intrinsified or not.\n\nTest: 717-integer-value-of\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --pictest --npictest\nTest: testrunner.py --host --jit\nTest: testrunner.py --target --optimizing --pictest --npictest\nTest: testrunner.py --target --jit\nBug: 71526895\nChange-Id: I89b3245a62aba22980c86a99e2af480bfa250af1\n"
    },
    {
      "commit": "54159c6c6fe529a55ef3d15a3c8418362d5a43fb",
      "tree": "2ec461de8ec15383134f4c6e209f4b8a33854277",
      "parents": [
        "44217b253bf4e5990de7051129ecda34f94d7f25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 20 14:30:08 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 13:46:50 2018 +0100"
      },
      "message": "Use HashSet\u003cstd::string\u003e instead of unordered_set\u003c\u003e.\n\nChange the default parameters for HashSet\u003cstd::string\u003e to\nallow passing StringPiece as a key, avoiding an unnecessary\nallocation. Use the HashSet\u003cstd::string\u003e instead of\nstd::unordered_set\u003cstd::string\u003e. Rename HashSet\u003c\u003e functions\nthat mirror std::unordered_multiset\u003c\u003e to lower-case.\n\nFix CompilerDriver::LoadImageClasses() to avoid using\ninvalidated iterator.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I7f8b82ee0b07befc5a0ee1c420b08a2068ad931e\n"
    },
    {
      "commit": "0b4e5a3a1275a4aa6955a0576ab9d57eedd5bdd2",
      "tree": "da1f910ee6c4d38a535c59eca934c394d6fc7363",
      "parents": [
        "c046a45aabc2a244ea2595692feb97238b568701"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jun 11 16:25:29 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 21 13:45:25 2018 +0100"
      },
      "message": "Binary search stack maps by native pc.\n\nTest: test.py --host -r -b -t 018 -t 510\nChange-Id: I07042e8dfd82adcd24fdfe1a1970a7ccdc09ce46\n"
    },
    {
      "commit": "58ef29a621fb629a639b13632e7a43337901a056",
      "tree": "6ab326bef33e0600f194b8f91be2755e518660e6",
      "parents": [
        "7496a1e8055f1a5f935cbfb7148c615885826e45",
        "cf7833edafa2dbf31ec7d29b51874dba6a92ae36"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 20 13:39:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 20 13:39:08 2018 +0000"
      },
      "message": "Merge \"Template BitTable based on the accessors.\""
    },
    {
      "commit": "92a020670417d960597d11788ed5cb044c1770bc",
      "tree": "79feae9308472fa34c164e188c724513843e9941",
      "parents": [
        "69abc5848218b584ca3af941c9429c25bbfc2288",
        "d6750532bae8dbb072e78e410c9a1f14aa071a5b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 15 18:11:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 15 18:11:15 2018 +0000"
      },
      "message": "Merge \"ART: Ignore unneeded environment uses.\""
    },
    {
      "commit": "69abc5848218b584ca3af941c9429c25bbfc2288",
      "tree": "44fa3563abbd72ae1316ad313bd3febe3747ba83",
      "parents": [
        "5f7c6a1fc35e04b75e1154620c5fd0ab8758e62c",
        "4d277ba858389980525c16c4b0655ee72af5a44c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 15 17:49:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 15 17:49:26 2018 +0000"
      },
      "message": "Merge \"ART: Make GVN work with BoundType.\""
    },
    {
      "commit": "d6750532bae8dbb072e78e410c9a1f14aa071a5b",
      "tree": "bab48e4844d3ed54924b95f0bd1c51ccbbb464b6",
      "parents": [
        "0e3a330f4a545a6a2d352bd4a803c8387f54e76b"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed May 30 20:07:43 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 15 17:21:02 2018 +0100"
      },
      "message": "ART: Ignore unneeded environment uses.\n\nSome of the environment uses of primitive-typed values are\nnot really needed in non-debuggable/non-OSR methods. Ignoring\nthose uses during liveness analysis significantly reduces the\nsize of stack maps in the oat file.\n\nCode reduction on arm64:\nboot-framework.oat: -1.8%\nboot.oat:           -1.4%\n\nTest: 466-get-live-vreg, 564-checker-condition-liveness.\nTest: 639-checker-code-sinking.\nTest: angler boots to GUI.\nTest: test-art-host, test-art-target\n\nChange-Id: I91dcb6d0a8ab86f56c7b243bf9b100f69bcd5979\n"
    },
    {
      "commit": "4d277ba858389980525c16c4b0655ee72af5a44c",
      "tree": "5f8c522b1340e52a94af1d329cf069c74d1bb288",
      "parents": [
        "0e3a330f4a545a6a2d352bd4a803c8387f54e76b"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue Jun 05 20:54:42 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 15 16:37:44 2018 +0100"
      },
      "message": "ART: Make GVN work with BoundType.\n\nSupport BoundType instruction treatment in GVN.\nNote: BoundType must not be a subject to LICM as it must not be\nmoved from more control dependent basic blocks to less control\ndependent (e.g. hoisted out from the loop) due to semantics of\nbounding the type.\n\nTest: 477-checker-bound-type.\nTest: test-art-target, test-art-host.\n\nChange-Id: I64263d6ec7d9ad75d1fb07d3a89e9973be67682b\n"
    },
    {
      "commit": "cf7833edafa2dbf31ec7d29b51874dba6a92ae36",
      "tree": "47b80e86d17768fe2ca0744fe4a5ebff9f1449a6",
      "parents": [
        "45b12e704e158f29877c78bd9a8406db7e361537"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 16:45:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 17:14:45 2018 +0100"
      },
      "message": "Template BitTable based on the accessors.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I96c04e21864009b64cb3177a0e9f0f8782a9b10b\n"
    },
    {
      "commit": "45b12e704e158f29877c78bd9a8406db7e361537",
      "tree": "1bfc21d88a173b4a751a37a223a39d7c12976f95",
      "parents": [
        "c9633c80c2125814a8a7459079c1931a5c201011",
        "e1402125e8363b49e176c6072893d1c110a05d2f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "message": "Merge \"Move some helper methods to DexRegisterLocation.\""
    }
  ],
  "next": "c9633c80c2125814a8a7459079c1931a5c201011"
}
