)]}'
{
  "log": [
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "b67d0c0fcef5e76e579246d48ec005fe31e64f97",
      "tree": "343117b8181faeed565ff244c5dedc9d0a8d1775",
      "parents": [
        "2ae4bc9f5b620bc768e4ae2ecab641a06a488a70",
        "cade5c3c75588da6d873df727acdaf3378a66efa"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 21:00:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 21:00:39 2017 +0000"
      },
      "message": "Merge changes I87b3fcb3,I971edf31,I5218a57c\n\n* changes:\n  Track class initializing in transaction\n  Move transaction creation to runtime\n  Test case for clinit support in app image\n"
    },
    {
      "commit": "2ae4bc9f5b620bc768e4ae2ecab641a06a488a70",
      "tree": "071b002a76308f0a2830aa73c251970735ecb513",
      "parents": [
        "8bf4fece8a4cecc869f8684d52e91ade630f84df",
        "e4e812a917345a3cb9ac955c8a84f64dfc26b5d9"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Jul 24 19:11:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 19:11:28 2017 +0000"
      },
      "message": "Merge \"Allow DexFile#getDexOptNeeded to check case when downgrading is required\""
    },
    {
      "commit": "8bf4fece8a4cecc869f8684d52e91ade630f84df",
      "tree": "fbc018fe9522fec2d923fed4f0c909a0fd3e4d98",
      "parents": [
        "194cf5f7db9762c17a0f2c91308cb060db08f571",
        "279cfba1f6086c25d6737471bc4f66ae79f4e681"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 24 18:44:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 18:44:05 2017 +0000"
      },
      "message": "Merge \"MIPS: Follow-up to hash-based DexCache methods array\""
    },
    {
      "commit": "279cfba1f6086c25d6737471bc4f66ae79f4e681",
      "tree": "e9ee9c1fb1180c89734ad57b3ee601a5545d9c9e",
      "parents": [
        "62432ae776aa618082865b40b111dbff75aedeb6"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sat Jul 22 00:24:43 2017 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Mon Jul 24 09:43:09 2017 -0700"
      },
      "message": "MIPS: Follow-up to hash-based DexCache methods array\n\nThis is a MIPS-specific follow-up to\nhttps://android-review.googlesource.com/#/c/431679/.\n\nTest: booted MIPS32R2 in QEMU\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\n\nChange-Id: Ib16cf6613ae3b6537e7fbae1aff9a3316c9fd540\n"
    },
    {
      "commit": "df9224cefd7ef21103f5f0da46139d5afedd204e",
      "tree": "d10524bc258a050fba499e0a5790ca829e36c83b",
      "parents": [
        "d41f79bdb353beaff6021ffcf59a60518c5a4923",
        "4f342b01a9d6661261a233d2221ae4a3c4e6ac4b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 16:35:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 16:35:03 2017 +0000"
      },
      "message": "Merge \"Move logic to get profile class descriptors to profile info\""
    },
    {
      "commit": "4f342b01a9d6661261a233d2221ae4a3c4e6ac4b",
      "tree": "62d76d0784c86a48f2140c708bff0502514a2491",
      "parents": [
        "2727d7ca49eea03fc1cd4cf81447e1c2bb7027e7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 21 17:12:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 16:31:40 2017 +0000"
      },
      "message": "Move logic to get profile class descriptors to profile info\n\nMove and simplify logic used to get a descriptor set for app image\ncreation. Code is covered by TestLayoutAppImage in dex2oat_test.\n\nMotivation:\nIf we are class unloading in dex2oat, we won\u0027t have all the dex files\nregistered at once.\n\nBug: 63467744\nTest: test-art-host\nChange-Id: I1e3616ee0a731061c347677713dba07e603eaa08\n"
    },
    {
      "commit": "d41f79bdb353beaff6021ffcf59a60518c5a4923",
      "tree": "7ac3d12b75af1e1692966b248a0964bcc091db78",
      "parents": [
        "a3aa6db876c6e588210b064e358a56ee85d70504",
        "b43b2d8b8ad78bc02924b65f5463418c7aa76881"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 24 15:58:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 15:58:27 2017 +0000"
      },
      "message": "Merge \"Throw VerifyError when trying to extend a final class.\""
    },
    {
      "commit": "a3aa6db876c6e588210b064e358a56ee85d70504",
      "tree": "1637337b2179220babdab507e12dbdaf18a2a211",
      "parents": [
        "f40efd14aa032cef948f1fdc2ceea771faf4a9df",
        "17272ab679c9b5f5dac8754ac070b78b15271c27"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 24 15:49:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 15:49:52 2017 +0000"
      },
      "message": "Merge \"ARM64: More JIT Code Cache maintenace\""
    },
    {
      "commit": "17272ab679c9b5f5dac8754ac070b78b15271c27",
      "tree": "bb7e52a01a6a28e4906c4f1238079b4478087a7e",
      "parents": [
        "84b65e977302e1cf16d188636c22c164c7793554"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 21 14:32:52 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jul 24 13:11:35 2017 +0100"
      },
      "message": "ARM64: More JIT Code Cache maintenace\n\nMove implementation closer to ARM\u0027s sample code.\n\nTest: art/test.py --target\nChange-Id: Ic205c700528f45afc281fb20e9336c9737d5f409\n"
    },
    {
      "commit": "78627e4e4df5481e41836eed2e0fd8d5aa54841d",
      "tree": "a078f294a0f80a5a227bd4ce03d566feca157d37",
      "parents": [
        "62432ae776aa618082865b40b111dbff75aedeb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Jul 23 14:46:03 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Jul 23 14:46:03 2017 -0700"
      },
      "message": "ART: Disable part of reg_type_test for CMS\n\nDisable the test for investigation. Figure out why FillHeap leaves\nenough heap space available to allocate new array classes.\n\nTest: ART_USE_READ_BARRIER\u003dfalse m test-art-host-gtest-reg_type_test\nChange-Id: I486651ae4bb2d96a7cc80583bc6557b88da3d9c1\n"
    },
    {
      "commit": "cade5c3c75588da6d873df727acdaf3378a66efa",
      "tree": "126fc494a05e39d0b2566a608f15e140e5eb915f",
      "parents": [
        "16d1dd86dca33520b44d9802695e19d3b658af3e"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 17:56:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 22 16:33:20 2017 -0700"
      },
      "message": "Track class initializing in transaction\n\nAdd a field and a corresponding constructor to transaction which keeps\ntrack of the class that the transaction is initializing.\n\nTo implement constraints for \u003cclinit\u003e behaviors, the transaction needs\nto know which class it is initializing.\n\nTest: make test-art-host -j64\nChange-Id: I87b3fcb3ef15914c79c6687ec8a87058265eaead\n"
    },
    {
      "commit": "16d1dd86dca33520b44d9802695e19d3b658af3e",
      "tree": "c273a6256e2b8ea49e9e1935830fe9d1748ebcf4",
      "parents": [
        "3a3abd08ca92636a706c0efa777c0410258ebd5f"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 17:56:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 22 16:07:03 2017 -0700"
      },
      "message": "Move transaction creation to runtime\n\nMove the transaction creation to runtime instead of passing a pointer to\nruntime when EnterTransactionMode. Because later there will be more\nplaces to create transaction so this makes the code cleaner and more\ncompact.\n\nTest: make test-art-host -j64\nChange-Id: I971edf3110eb6634b6e0f7f56256be04517a5281\n"
    },
    {
      "commit": "26761f758aff822b1204e05ce37687d0a1557399",
      "tree": "72bb419ea1209724c370eaa297c7ec3f77ca641c",
      "parents": [
        "64d2d3e9c7d935dfe879f68019970983fee7189d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 20 18:00:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 21 10:38:36 2017 -0700"
      },
      "message": "ART: Move FillHeap to CommonRuntimeTest\n\nRefactor common functionality. Clean up the code.\n\nTest: m test-art-host-gtest-monitor_test\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: Ia8b678ab0a84ac76ee162dbc202d3363e9e9c02f\n"
    },
    {
      "commit": "64d2d3e9c7d935dfe879f68019970983fee7189d",
      "tree": "962b71ab236eef1c54080617addc4a44e7686c25",
      "parents": [
        "2727d7ca49eea03fc1cd4cf81447e1c2bb7027e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 23:13:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 21 09:45:08 2017 -0700"
      },
      "message": "ART: Account for OOME during array merging\n\nWhen joining class types, in the case of arrays it is possible that\na join type cannot be created (e.g., there\u0027s no Java heap to actually\ncreate the class). In that case report an unresolved reference. For\nAoT this will lead to re-verification at runtime. At runtime, this\nwill most likely fail the class.\n\nHowever, have a special cutout that aborts for AoT on the host, to\nprotect determinism of preopting.\n\nThe decision for an unresolved reference type was made as we do not\nwant to propagate the underlying exception out of verification. This\nwould require significant work along all call edges, violating the\ncurrent design and invariants of the verifier.\n\nExtend reg_type_test.\n\nBug: 63822536\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: I823201e3c401b2c2a46a46fad3327a28e049c181\n"
    },
    {
      "commit": "2727d7ca49eea03fc1cd4cf81447e1c2bb7027e7",
      "tree": "570104d8a0e670fca44dfee36fde452bc3311842",
      "parents": [
        "1a83a66413df15b9d63d62b442ce3c8f7715ea35",
        "6ee332cc58d602bb7f16513795dc32568b176efa"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 21 15:38:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 21 15:38:35 2017 +0000"
      },
      "message": "Merge \"Ensure that we don\u0027t overwrite suspension target thread\""
    },
    {
      "commit": "753d613704b86d37e9e2286dde22ab3452908f66",
      "tree": "1de1336786add03acb4be78462bf5806395a7fb9",
      "parents": [
        "c73753f70ab4fc9a166637bee514b292f0fa0109"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 12:43:24 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 14:32:05 2017 +0100"
      },
      "message": "Update VMRuntime.preloadDexCaches() for hash-based arrays.\n\nDo not try to fill entries that already contain some\nresolved item to avoid unnecessary work. We do not know\nwhich of the conflicting items may be needed later.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boot.\nBug: 30627598\nBug: 63892794\nChange-Id: Ie52f4455da544c1a3d2a61660c14c13c488c3fd7\n"
    },
    {
      "commit": "c73753f70ab4fc9a166637bee514b292f0fa0109",
      "tree": "a464e300d44b5a3eca10cb00cc42be7c1ab9da96",
      "parents": [
        "530a6b6902b50db43659757a6270b7d111d93a2c",
        "07bfbace6f835e6c748fd68ec7624992478b16c1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "message": "Merge \"Hash-based DexCache methods array.\""
    },
    {
      "commit": "918dcea8eaa0af96c2e2c09f3aa940ac9e3b109d",
      "tree": "858805b6c3faa55761a34137295473c3e4ee80fe",
      "parents": [
        "79ad831d82f78494caa2f1b44ba24ad6f712565e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 21 07:58:14 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 21 07:58:14 2017 +0000"
      },
      "message": "Revert \"Avoid recording CHA class status for dex2oat\"\n\nTests fail\n\nBug: 63905544\nBug: 63467744\n\nThis reverts commit 79ad831d82f78494caa2f1b44ba24ad6f712565e.\n\nChange-Id: I14c4c4e857498c02dc5c15f4bd3248728ecf5ad5\n"
    },
    {
      "commit": "79ad831d82f78494caa2f1b44ba24ad6f712565e",
      "tree": "c01e8562ab8b73c6d91a6de7697623ae73e88799",
      "parents": [
        "5f2d800175df712f4a1a584575a5a913b8e22704"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 20 13:20:00 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 20 16:36:19 2017 -0700"
      },
      "message": "Avoid recording CHA class status for dex2oat\n\nIn case dex2oat does class unloading, the CHA dependency map may have\ndangling ArtMethod pointers.\n\nTemporary fix until CHA supports class unloading when JIT is\ndisabled.\n\nBug: 63905544\nBug: 63467744\nTest: test-art-host\n\nChange-Id: I883d46273a7a9ecad5d5708122876cc3b177ecad\n"
    },
    {
      "commit": "e1f602e58f9d2b0bc0c97e651df474c001e40dab",
      "tree": "56720f1d04e69aceb9285183bd14b7326ae37826",
      "parents": [
        "a9894d24088ed066aa534ba7c157ab2f1e11cd71",
        "5354af9d047429b989bf42a4db2f8390cc3467e8"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 20 19:07:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 19:07:46 2017 +0000"
      },
      "message": "Merge \"Refined HasAtLeast() for x86 and x86_64.\""
    },
    {
      "commit": "6ee332cc58d602bb7f16513795dc32568b176efa",
      "tree": "60bd28decf56445fff6bdf0bdff4e25b84bb7237",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 20 10:04:11 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 20 10:31:41 2017 -0700"
      },
      "message": "Ensure that we don\u0027t overwrite suspension target thread\n\nThanks to Ivan Maidanski for noticing this issue.\n\nContributed-By: Ivan Maidanski \u003ci.maidanski@samsung.com\u003e\nTest: ./test.py --host -j40\nChange-Id: I826e3770645ecaedd8a4c5e5201747010ddcf550\n"
    },
    {
      "commit": "2f1d924e9cd34d081d6c37332e4e8f0f0d191b85",
      "tree": "55aa28335f4056eb0d09871517e02682d398c93a",
      "parents": [
        "331f4c4e287791611733120c1a1c2afd55ecdd65",
        "3ecac070ad55d433bbcbe11e21f4b44ab178effe"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 17:11:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 17:11:37 2017 +0000"
      },
      "message": "Merge \"ARM64: JIT Code Cache maintenance\""
    },
    {
      "commit": "07bfbace6f835e6c748fd68ec7624992478b16c1",
      "tree": "5d094a00fbc90455bd9b53e042cf8b4fe8433462",
      "parents": [
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 14:55:02 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 16:33:00 2017 +0100"
      },
      "message": "Hash-based DexCache methods array.\n\nTotal boot*.art size for aosp_angler-userdebug:\n  - arm64:\n    - before: 11603968\n    - after: 10129408 (-1.4MiB, -12.7%)\n  - arm:\n    - before: 8626176\n    - after: 7888896 (-0.7MiB, -8.5%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nTest: Build aosp_mips64-eng\nBug: 30627598\nChange-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f\n"
    },
    {
      "commit": "3ecac070ad55d433bbcbe11e21f4b44ab178effe",
      "tree": "565803b40b7f8be3483c502e1bc6809974c4afee",
      "parents": [
        "24f4f7956edeffb1ae41809e09f14b6d5e7875c8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 15:28:44 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 16:22:47 2017 +0100"
      },
      "message": "ARM64: JIT Code Cache maintenance\n\nCache maintenance operations on ARM64 can cause segmentation faults if\naddresses are not backed by physical RAM. Some Linux kernel verions\nhave a bug that exposes these faults to user-land which crashes\nART. Some of the test devices used by the ART buildbots have this\nissue.\n\nThis CL explicitly faults in memory relevant addresses before\nperforming cache maintenance operations.\n\nTest: art/test.py --target --64 --r\nChange-Id: Id7390c14f75c13b3fbbbbb742afeb9ffef9a3801\n"
    },
    {
      "commit": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
      "tree": "c71c2e5775fe82242034c00d0a5c69c4116169bd",
      "parents": [
        "3579eb29f88a9fe4040e4d212e0acaa2e0690946",
        "4147fcc43c2ee019a06e55384985e3eaf82dcb8c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 11:32:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 11:32:20 2017 +0000"
      },
      "message": "Merge \"MIPS: Reduce Baker read barrier code size overhead\""
    },
    {
      "commit": "b43b2d8b8ad78bc02924b65f5463418c7aa76881",
      "tree": "7712cf16e48c5b300655b9759710677b40850cfe",
      "parents": [
        "d44c0d8c7f96644f8176e493de2fbde3eb198bb4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 18 17:46:38 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 10:53:01 2017 +0100"
      },
      "message": "Throw VerifyError when trying to extend a final class.\n\nComply with JLS 13.4.2. Previously we were throwing ICCE.\n\nTest: Added another test to 066-mismatched-super.\nTest: testrunner.py --host\nBug: 63754965\nChange-Id: I5ceb9c67df99c5135436f6facb387fdb8f252b81\n"
    },
    {
      "commit": "24f4f7956edeffb1ae41809e09f14b6d5e7875c8",
      "tree": "f6d3a32a33dadef02fc5e9b2b61c83399889f0e2",
      "parents": [
        "4d0371a271ff5ae9d0edb317898b2b85cd10fae5",
        "f88b5c0bdf829cba1b3d30d2e428ba165522efeb"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jul 20 03:45:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 03:45:05 2017 +0000"
      },
      "message": "Merge \"Use the rel_pc instead of computing it.\""
    },
    {
      "commit": "4d0371a271ff5ae9d0edb317898b2b85cd10fae5",
      "tree": "c44a13ae97e6511a11cffc5bb21652abbaf4acd0",
      "parents": [
        "ffb6d49090846d2e71c755f01c7ce8a15ef0a634",
        "00e475ca4dd6697d323f2c2f96d74c7ea9dff861"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 03:21:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 03:21:35 2017 +0000"
      },
      "message": "Merge \"Only update declared methods during class redefinition.\""
    },
    {
      "commit": "00e475ca4dd6697d323f2c2f96d74c7ea9dff861",
      "tree": "36fb992769d17d9a8cc2ec3246363ab4529ad484",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 19 16:36:23 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 19 17:50:20 2017 -0700"
      },
      "message": "Only update declared methods during class redefinition.\n\nWe were attempting to update the dex file indexes of copied methods\nduring class redefinition. Since these methods are not in the\nredefined (or even original, necessarily) dex file this causes CHECK\nfailures.\n\nBug: 63864937\nTest: ./test.py --host -j50\nChange-Id: Ieb3a7bde42ef9da651810094e7b8143e2dba9f61\n"
    },
    {
      "commit": "7897cecf822babe9dd1f379b73a7387c30d31db8",
      "tree": "7ed2963c4b048fe27725acd6b16f77d530b189e3",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 16:28:59 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 17:30:51 2017 -0700"
      },
      "message": "ART: Refactor JIT stress mode a runtime debug flag\n\nDo not use a constexpr default compilation threshold for the JIT.\nInstead use a tri-state that distinguishes non-debug, fast-debug\nand slow-debug modes.\n\nBug: 35644369\nTest: m test-art-host\nChange-Id: I3f8d71126af6b7f6b6aaa7a59cf0a42e5ee3fe01\n"
    },
    {
      "commit": "4147fcc43c2ee019a06e55384985e3eaf82dcb8c",
      "tree": "11ec92efbfddf7736bbc74ed35fcfb3756bfcfb0",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sat Jun 17 19:57:27 2017 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Wed Jul 19 15:03:10 2017 -0700"
      },
      "message": "MIPS: Reduce Baker read barrier code size overhead\n\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\nTest: test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: same tests as above on CI20\nTest: booted MIPS32 and MIPS64 in QEMU with poisoning\n      in configurations:\n      - with Baker read barrier thunks\n      - without Baker read barrier thunks\n      - ART_READ_BARRIER_TYPE\u003dTABLELOOKUP\n\nChange-Id: I79f320bf8862a04215c76cfeff3118ebc87f7ef2\n"
    },
    {
      "commit": "f88b5c0bdf829cba1b3d30d2e428ba165522efeb",
      "tree": "2b503d6bdd5cfc6f705c00296a5284d6dde9a22c",
      "parents": [
        "6c13ce8b4ccdb6127c4428cf8b2c8261dccced20"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 19 14:18:33 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 19 14:18:33 2017 -0700"
      },
      "message": "Use the rel_pc instead of computing it.\n\nBug: 23762183\n\nTest: Compiles.\nChange-Id: I5fe96c444bed89b4b9d3e96ffc37555678428be1\n"
    },
    {
      "commit": "e8f48da635c4d07bbe431e5819da8e1fad91a8ef",
      "tree": "144e5b35cfc54ec7b745ef71439ba505b13789f3",
      "parents": [
        "187ff4576847ab54db7e2eea6e6a55ccf7d1c40a",
        "a308a327884920cbb1e3e62964c4b5a01c29af8c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 19 21:12:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 21:12:18 2017 +0000"
      },
      "message": "Merge \"Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\""
    },
    {
      "commit": "187ff4576847ab54db7e2eea6e6a55ccf7d1c40a",
      "tree": "7fecc1f7d9c662d32233a2399516072c23ec0392",
      "parents": [
        "6c13ce8b4ccdb6127c4428cf8b2c8261dccced20",
        "1a088d440a3fac4e477a11af68adae9dcd3afd00"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 19 20:50:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 20:50:23 2017 +0000"
      },
      "message": "Merge \"Use AtomicDexRefMap for compiled classes\""
    },
    {
      "commit": "5354af9d047429b989bf42a4db2f8390cc3467e8",
      "tree": "25e0aaa3dcf4da018ad9bff7113ce6d66af6e937",
      "parents": [
        "6f7b23acfccd7ec0f13ad51747bd60c682655025"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 19 11:13:27 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 19 11:17:20 2017 -0700"
      },
      "message": "Refined HasAtLeast() for x86 and x86_64.\n\nRationale:\nThis refinement is needed once we start passing in more\narchitecture specific flags on x86_* builds. This CL\nalso makes the arm version a bit more readable.\n\nTest: instruction_set_features_test\nBug: 63585550\n\nChange-Id: Ia6fe47654141feaf1899da225abaee8a5ea8249a\n"
    },
    {
      "commit": "6c13ce8b4ccdb6127c4428cf8b2c8261dccced20",
      "tree": "8ab864e63e3c3a0a0b82bd3c67f3144bff231539",
      "parents": [
        "dcc6617d48692ba7bf19426d767e9d094050fdb4",
        "79400aa5124f89daec47d3cf7c6c38030547a770"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 19 17:24:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 17:24:23 2017 +0000"
      },
      "message": "Merge \"Whitelist user_code_suspension_lock_ for ConditionVariable wait\""
    },
    {
      "commit": "1a088d440a3fac4e477a11af68adae9dcd3afd00",
      "tree": "fbec331c6c0274af132bb2df38b209477ee9224f",
      "parents": [
        "57fe2725629681c8a68f6ba5b58d87304ca3f0b1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 18 11:43:57 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 19 09:55:34 2017 -0700"
      },
      "message": "Use AtomicDexRefMap for compiled classes\n\nChanged compiled_classes_ to use an AtomicDexRefMap and deleted\nthe lock since it was no longer necessary.\n\nThis map is more compact than a SafeMap. RAM numbers for verify\nfilter on a large app (host arm compile):\n\nMaximum resident set size (kbytes): 250012-\u003e243472\nnative alloc: 19284128B-\u003e13951600B\n\nBug: 6346774\nTest: test-art-host\nChange-Id: Iace66945b49433f353603a713593c53be6893cc5\n"
    },
    {
      "commit": "dcc6617d48692ba7bf19426d767e9d094050fdb4",
      "tree": "d14aee12364040ff79acec4f92693863a47cb226",
      "parents": [
        "57fe2725629681c8a68f6ba5b58d87304ca3f0b1",
        "520dadff2190a5bcdb48838dbcccddc8fbbf0c97"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 19 16:41:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 16:41:41 2017 +0000"
      },
      "message": "Merge \"Unbreak Odroid measurements.\""
    },
    {
      "commit": "79400aa5124f89daec47d3cf7c6c38030547a770",
      "tree": "280b6f2c77ce4a76bd8f196579499064fc19d711",
      "parents": [
        "527f18fcebb8f5799bad483b8164fe35ce3688f2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 18 15:34:21 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 19 08:35:34 2017 -0700"
      },
      "message": "Whitelist user_code_suspension_lock_ for ConditionVariable wait\n\nConditionVariable::Wait checks to make sure the current lock status is\nsane. We need to whitelist the user_code_suspension_lock_ for being\nheld through the wait when it is a threads resume_cond_ since this\nlock needs to be held through the entirety of user-code suspension.\n\nWe also add a check to make sure the thread will not deadlock.\n\nBug: 63813338\nTest: stress --cpu 64 \u0026 \\\n      while ./test/run-test --host --jit 1904; do; done\n\nChange-Id: I24577b66629279106de328aad1afd191725c94fb\n"
    },
    {
      "commit": "520dadff2190a5bcdb48838dbcccddc8fbbf0c97",
      "tree": "6e4eda47f0e258bf807b5ce0a62cb063b9f0407c",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:33:11 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:34:09 2017 +0100"
      },
      "message": "Unbreak Odroid measurements.\n\nOdroid run Linux/target, which doesn\u0027t support ashmem.\n\nTest: test.py\nChange-Id: Icd92d2a87ea9987c9580037ef195f6e63641283d\n"
    },
    {
      "commit": "43ce5f82dae4dc5eebcf40e54b81ccd96eb5fba3",
      "tree": "32775c9d2c16b91a2899dab318d54d9ad6e3c5b9",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 19 10:34:27 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 19 13:26:02 2017 +0100"
      },
      "message": "Change flush order in JIT code cache\n\nFlush the data cache before flushing the instruction when dual mapped.\n\nBug: 62356545\nTest: art/test.py -j4 --jit --64 -r --verbose -t test-art-target-run-test-debug-prebuild-jit-no-relocate-ntrace-gcstress-checkjni-picimage-npictest-ndebuggable-no-jvmti-916-obsolete-jit64\nTest: Using an Android N image and testing on device from master-art\nChange-Id: Ia73da7449cc3a40be0128825233086924eca90a5\n"
    },
    {
      "commit": "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5",
      "tree": "09f04931241192a82e8a63893e9619d7195d6c8b",
      "parents": [
        "4ce0f9a270b4c5bceb805f396daafe0a68e20e39",
        "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 19 06:12:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 06:12:57 2017 +0000"
      },
      "message": "Merge \"art: use proper nativehelper headers\""
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "41acdc1df1bceaa462d134b8ce30419d301e76d7",
      "tree": "4e8978a1550d57c48803ad7bbc5c5a207986d4cb",
      "parents": [
        "bacafb19fa654fb6c7ad610305bed45c2e4682e8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:45:32 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:48:36 2017 -0700"
      },
      "message": "Fix the default ownership of dex files in ClassLoaderContext\n\nBy default the context should have the ownership.\n\nTest: valgrind --leak-check\u003dfull\n../out/host/linux-x86/nativetest/art_runtime_tests/class_loader_context_test\nBug: 38138251\n\nChange-Id: I21ff048018abba61999b6025281c73fc9899cae0\n"
    },
    {
      "commit": "e4e812a917345a3cb9ac955c8a84f64dfc26b5d9",
      "tree": "bf830d83f8d7ade1d875903ed5d8529d706d3b11",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu May 25 20:09:58 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Jul 19 00:15:56 2017 +0000"
      },
      "message": "Allow DexFile#getDexOptNeeded to check case when downgrading is required\n\nThe change in the API will allow comparison of compiler filter in case when\ndowngrade is required. Previously, it used to only consider cases of compiler\nfilter upgrades.\n\nTest: make \u0026 boot\nBug: 36598475\n(cherry-picked from commit cf3d122a9234414b7cd2aab340d1450f3e9da213)\n\nChange-Id: Ice292ef4f16c373297821c40e39987f3de914c67\n"
    },
    {
      "commit": "a308a327884920cbb1e3e62964c4b5a01c29af8c",
      "tree": "4bd09065c52f18685dc9e10d9eabdcdb29a51539",
      "parents": [
        "bacafb19fa654fb6c7ad610305bed45c2e4682e8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 16:51:51 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:02:27 2017 -0700"
      },
      "message": "Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\n\nThe \u0027:\u0027 separator is commonly used to separate class path elements. That\nmeans that we cannot easily encode multidex location in a classpath\nwithout complicating the parsing logic unnecessarily (e.g. when encoding\nclasspaths in the oat file).\n\nFor easy parsing and understanding kMultiDexSeparator and\nkClassPathSeparator should have different values. \u0027:\u0027 is a wide spread\nclasspath separator so this CL changes the value of kMultiDexSeparator to\n\u0027!\u0027 which is also commonly used to denote an object inside a given\ncontainer.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I30995c553d9131478c6c071b27327df6d2de06a7\n"
    },
    {
      "commit": "6f7b23acfccd7ec0f13ad51747bd60c682655025",
      "tree": "024c0e0021768590996bb5c19d296126ba7394be",
      "parents": [
        "527f18fcebb8f5799bad483b8164fe35ce3688f2",
        "d1dbb74e5946fe6c6098a541012932e1e9dd3115"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 18 21:39:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 21:39:38 2017 +0000"
      },
      "message": "Merge \"Separate rw from rx views of jit code cache\""
    },
    {
      "commit": "527f18fcebb8f5799bad483b8164fe35ce3688f2",
      "tree": "92c86a781f6730e8ce27e0f9fe2ec8f192f7d5f4",
      "parents": [
        "774beea7dd475a3ec5089d891ab8de79a5a9fbc2",
        "c79470dd970dd30cf3b383c635543e8af3761478"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 20:57:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 20:57:13 2017 +0000"
      },
      "message": "Merge \"Allow dex2oat to create a full class loader context\""
    },
    {
      "commit": "774beea7dd475a3ec5089d891ab8de79a5a9fbc2",
      "tree": "fba4c0e8105c762327c4a0625c34f9e4f89b7f6b",
      "parents": [
        "3d931dc76aa3cd9787bfc7d3f42bc819b57cdcc0",
        "3f9186446faa01636475596335240f39472ba9f4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 20:57:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 20:57:09 2017 +0000"
      },
      "message": "Merge \"Verify the class loader context when loading oat files\""
    },
    {
      "commit": "3d931dc76aa3cd9787bfc7d3f42bc819b57cdcc0",
      "tree": "a0691610e70d9fbc5755a93dcb7cd1e5add13160",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372",
        "57d0accc081c1779edb604ab86e5a4c0cfba16eb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 20:57:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 20:57:03 2017 +0000"
      },
      "message": "Merge \"Create a class loader context starting from an existing ClassLoader\""
    },
    {
      "commit": "c79470dd970dd30cf3b383c635543e8af3761478",
      "tree": "fd017fa725bb05a9ff0d66dc64f9a6657a09d7c3",
      "parents": [
        "3f9186446faa01636475596335240f39472ba9f4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 12 17:37:42 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:36 2017 -0700"
      },
      "message": "Allow dex2oat to create a full class loader context\n\nWe previously checked that dex2oat sees only a single class loader. This\nCL removes the restriction and enables dex2oat to create and compile with\na full class loader context.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I03e75a75757995ce8ce3addf0bc0a708e18ac050\n"
    },
    {
      "commit": "3f9186446faa01636475596335240f39472ba9f4",
      "tree": "ac0320e73671d11551ba65867a51d74b5dc69aee",
      "parents": [
        "57d0accc081c1779edb604ab86e5a4c0cfba16eb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 11 19:04:20 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:36 2017 -0700"
      },
      "message": "Verify the class loader context when loading oat files\n\nPreviously, the oat_file_manager would expect and perform validation on a\nsimple classpath: a list of dex files separated by \u0027:\u0027.\n\nThis is no longer enough since the oat file may encode a chain of class\nloaders now. The CL moves the validation logic in ClassLoaderContext and\nextends it to verify the complete chain of class loaders.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I8ac9c65db1a14909aaecb04fa7a7115ddedc673f\n"
    },
    {
      "commit": "57d0accc081c1779edb604ab86e5a4c0cfba16eb",
      "tree": "15af07023c0576e36e4fcfb78dd6e29890edcfd2",
      "parents": [
        "7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 11 17:41:30 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:33 2017 -0700"
      },
      "message": "Create a class loader context starting from an existing ClassLoader\n\nExtend ClassLoaderContext to be able to generate a context from an\nexisting class loader.\n\nThis will be used in extending the duplicate class check to cover\nDelegateLastClassLoaders.\n\nMost of the functionality is migrated from OatFileManager with some\ncleanups consisting of extra docs and more conservative checks on the\nintegrity of the class loader chain.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: If7c18cb75bfc9e6784676f96a666bf13b04c8b8b\n"
    },
    {
      "commit": "d1dbb74e5946fe6c6098a541012932e1e9dd3115",
      "tree": "7c3ad5ffd888ea97ee24e255bccb7c1a7acf4466",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jul 17 11:20:38 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 18 11:38:13 2017 -0700"
      },
      "message": "Separate rw from rx views of jit code cache\n\nCreate two separate mappings of the ashmem region used for the JIT code\ncache.  These two mappings have unrelated addresses.\n\nBug: 62356545\nTest: make -j test-art-target\nChange-Id: If176552e6d72ef71e17c96994901f3f3baac44f6\n"
    },
    {
      "commit": "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3",
      "tree": "5f9665e7b3299f911a2a305e17c5e678cdd51c49",
      "parents": [
        "9fb4e85d6e42b3f060ddcefcbf39bdfec656fc52",
        "2bff9ca67a3e945f7c2ca7e8a075e2d91637b01b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 15:45:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 15:45:12 2017 +0000"
      },
      "message": "Merge changes I01b45c86,I10307aea,Iefccd6ff,Ibbda8e9a,I71a7f59b\n\n* changes:\n  ART: Remove more object_callbacks.h includes\n  ART: Replace or remove some ObjectCallback Walk functions\n  ART: Remove old visit functions\n  ART: Use VisitObjects visitor functions\n  ART: Add templated VisitObjects\n"
    },
    {
      "commit": "b02ba93fb8089ae70229c4e3e90478cb4a9e4668",
      "tree": "dee702cd8570b7993a13d34789ed5b819913ccc8",
      "parents": [
        "24ff0235ab631baccd49fb491197d86d1ef97279"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 15:53:54 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 18 13:28:00 2017 +0100"
      },
      "message": "Don\u0027t encode OatQuickMethodHeader for non-compiled methods.\n\nRequires changes to the quickening info format stored in vdex.\n\nLarge app:\n\nBefore\nodex size: 5.5MB\nvdex size: 48MB (49308168 bytes)\n\nAfter:\nodex size: 1.2MB -78%\nvdex size: 48MB (49701846 bytes) +1%\n\nbug: 62120170\nTest: test.py\nChange-Id: I5ae0b103dc57bdd17aa772f4e43db954d109fd44\n"
    },
    {
      "commit": "2bff9ca67a3e945f7c2ca7e8a075e2d91637b01b",
      "tree": "8ee2735745df6eb35367893d72bee9379d94fcee",
      "parents": [
        "0c18338ebae6b3597c882887f8354b64abb5e90f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 14 17:54:11 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:09:02 2017 -0700"
      },
      "message": "ART: Remove more object_callbacks.h includes\n\nTest: m\nChange-Id: I01b45c86c37d952b15028f2177246611f02da887\n"
    },
    {
      "commit": "0c18338ebae6b3597c882887f8354b64abb5e90f",
      "tree": "fde8624a51b99ef7338784c863a9edf55dc2d08b",
      "parents": [
        "10d39085d5e064ae0afdc898eb32741a660c4b9d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 22:26:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:09:01 2017 -0700"
      },
      "message": "ART: Replace or remove some ObjectCallback Walk functions\n\nReplace with visitor functions in RegionSpace and SpaceBitmap. Remove\nold ObjectCallback version in HeapBitmap. Fix up users. Move some\nthread-safety annotations.\n\nMove ObjectCallback definition to the only remaining user (ModUnionTable).\n\nTest: m\nChange-Id: I10307aeacad0c60d21fbade2081ec040d6a6ac4c\n"
    },
    {
      "commit": "10d39085d5e064ae0afdc898eb32741a660c4b9d",
      "tree": "dc3af243e9220a78420399fecc3ec0c2c7dd7e3e",
      "parents": [
        "1c158a07ac7bac301af9d2921207d66730d1ac0a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 20:46:35 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:09:01 2017 -0700"
      },
      "message": "ART: Remove old visit functions\n\nRemove now-unused ObjectCallback-based VisitObjects functions.\n\nTest: m\nChange-Id: Iefccd6ff28654d86f5254a411e7c30263a85b9aa\n"
    },
    {
      "commit": "1c158a07ac7bac301af9d2921207d66730d1ac0a",
      "tree": "db42f2bef50c3a2393e4f8e09b64a43af75bd15c",
      "parents": [
        "351c44765279142d15333e2ae02b8a423d195b1b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 17:26:19 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:08:53 2017 -0700"
      },
      "message": "ART: Use VisitObjects visitor functions\n\nMove users to VisitObjects with templated visitors. Clean\nup the code a bit.\n\nTest: m\nChange-Id: Ibbda8e9aa17e895cee559080c1e4158744cbbbf6\n"
    },
    {
      "commit": "351c44765279142d15333e2ae02b8a423d195b1b",
      "tree": "6c926a887efe27e9f11934d34fdf3b53bc0952ca",
      "parents": [
        "1847704d0422dcc75ac30ae0d3caaf210c05a755"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 12 19:32:55 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:08:52 2017 -0700"
      },
      "message": "ART: Add templated VisitObjects\n\nAdd templated versions of VisitObjects that accept visitors. This\nallows to use more modern lambdas.\n\nTest: m\nChange-Id: I71a7f59bcae02090b9493bf8b477bb8b6ba649de\n"
    },
    {
      "commit": "d317295ed07384c69d5890d6b17b80d57139a082",
      "tree": "7ef48ea60165f89c852bf957207c65c155d49026",
      "parents": [
        "71a8e5b25f0be5ab5bf0e1c73a9e5aabc3a23488",
        "0cb172874481f736c6b7c491dd621166cc25561b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 00:12:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 00:12:13 2017 +0000"
      },
      "message": "Merge \"Do superclass validation at compile time and log with new class status.\""
    },
    {
      "commit": "0cb172874481f736c6b7c491dd621166cc25561b",
      "tree": "2408750b6e08c686b89cee5df0ddae736a775092",
      "parents": [
        "890045e5a768257d8def42827a09a516ebe3e07e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jul 12 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 17 14:09:56 2017 -0700"
      },
      "message": "Do superclass validation at compile time and log with new class status.\n\nTries to perform superclass validation for classes that are resolved,\nbut not initialized at runtime. If successful, saves the result in the\noat file with a new class status. At runtime, the superclass validation\ncan be skipped during class initialization, saving some time and\nreducing string accesses.\n\nResults show savings of 50kB PSS in maps on startup, with slight\ndecrease in startup time.\n\nMaps (average of 100 runs)\nBefore: dex 9941.3 odex 15159.8 total 25101.1 launch 908\nAfter: dex 9897.4 odex 15155.7 total 25053.1 launch 906.6\n\nBug: 63456114\nTest: mm test-art-host\nChange-Id: If67a4a49d61781b6d561c26118d7e0c6b9cc0d6f\n"
    },
    {
      "commit": "1f0a22f486873063246e64ec6bb38238987ae23e",
      "tree": "e0fbdeb27165305e8e4946f916a2acd3aba03dfa",
      "parents": [
        "890045e5a768257d8def42827a09a516ebe3e07e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 17 12:55:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 17 13:34:28 2017 -0700"
      },
      "message": "Ensure GetThreadState only counts user-code suspensions\n\nPreviously we would set the JVMTI_THREAD_STATE_SUSPENDED bit\nregardless of the actual cause of suspension. We changed it to follow\nthe spec so that only user-code suspensions are counted.\n\nBug: 63743122\nBug: 34415266\nTest: ./test.py --host -j50\nChange-Id: I65d337cbfed8768f18005721d41e646a815d1ef7\n"
    },
    {
      "commit": "23cdebe60049850200b30869c6970193f5e7ecea",
      "tree": "bf6eab054e2595f3dbf269a0cc4f4190799f0528",
      "parents": [
        "d4472455580db696d0f211f8e6f7d99d78b3fa79",
        "854df416f12c48b52239fe163ab8a7fcac4cddd3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 17 13:13:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 17 13:13:41 2017 +0000"
      },
      "message": "Merge \"MIPS: TLAB allocation entrypoints\""
    },
    {
      "commit": "731af335f4e15e82b8972d63b6424d5228f06eec",
      "tree": "efdc7ace875bf268c3c4e67962090026b7aff366",
      "parents": [
        "bd1f04373c1d0e0f7b2ac9d6a01bc45c562a1a27",
        "092a4046ff7bd3d7e24bc77cecf3d1bb0aa52107"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 14 23:35:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 23:35:11 2017 +0000"
      },
      "message": "Merge \"Ensure jvmti agents don\u0027t share ThreadLocalStorage\""
    },
    {
      "commit": "092a4046ff7bd3d7e24bc77cecf3d1bb0aa52107",
      "tree": "966086d6f9b69f1a677110f2d3cd3b9f0491bc3d",
      "parents": [
        "5e7eb2faccf8f4a28e9fcda26053a5b388f2190a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 12 08:46:44 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 14 14:52:23 2017 -0700"
      },
      "message": "Ensure jvmti agents don\u0027t share ThreadLocalStorage\n\nBug: 63665647\nTest: ./test.py --host -j40\n\nChange-Id: Iea33cca5b708f60390b8c79462ca991363ad33a2\n"
    },
    {
      "commit": "c69e8d68efbcef274351c614278d3ad7222fb68a",
      "tree": "2f9fad4e38f3193ed8717ccda93767c8fa8501a4",
      "parents": [
        "2d0fe4ca6906b4215646f1db99b06f927791f2c6",
        "6f54cf2a63bdd46b97c834f3af89bdc918740f23"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 14 19:06:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 19:06:57 2017 +0000"
      },
      "message": "Merge \"Fix ReadBarrier misuse when relocating the image.\""
    },
    {
      "commit": "6f54cf2a63bdd46b97c834f3af89bdc918740f23",
      "tree": "2a77eecf39cc85fa396eb0ffbaa1be87ceda1ef1",
      "parents": [
        "469a27f535a7f57444690fa8f5f5ded824fe2caa"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri Jul 14 09:59:01 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri Jul 14 10:08:37 2017 -0700"
      },
      "message": "Fix ReadBarrier misuse when relocating the image.\n\nSpecify not to use ReadBarrier when calling to GetSuperClass during\nrelocation.\n\nBug: 63691502\nTest: test/testrunner/testrunner.py -b --host -t \\\n      test-art-host-run-test-debug-prebuild-optimizing-no-relocate-\\\n      ntrace-gcstress-checkjni-picimage-npictest-ndebuggable-no-jvmti-\\\n      626-const-class-linking64\n\nChange-Id: I9fbfdd4ffa2c7489da2e3c62af4f196ec07e562e\n"
    },
    {
      "commit": "5e7eb2faccf8f4a28e9fcda26053a5b388f2190a",
      "tree": "12b2936d445607d1bd7294d3f4a6ba19c27d8951",
      "parents": [
        "6e875347976b1f332731be775dfd066fda730085",
        "88fd720b6799184c8ad61e766a6d37af33ed30ef"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 14 15:13:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 15:13:41 2017 +0000"
      },
      "message": "Merge \"Add Jvmti Suspend/ResumeThread functions\""
    },
    {
      "commit": "6e875347976b1f332731be775dfd066fda730085",
      "tree": "2d7678f2350e322c710a49df70c59660569ab568",
      "parents": [
        "bac2bd1c2fbdd94f4d4dfe83d8451f655e875e36",
        "f8db2c3945e746fcbf307832ac2f7826d5ec178a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 14 14:03:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 14:03:40 2017 +0000"
      },
      "message": "Merge \"ART: Add support for constructor method handles\""
    },
    {
      "commit": "f8db2c3945e746fcbf307832ac2f7826d5ec178a",
      "tree": "fc579f67f17b2ccbb218889f2484ef6f5013da1c",
      "parents": [
        "c5515fd96887f70101640fddf9a3189ff936c08b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 07 20:07:12 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 14 13:04:30 2017 +0100"
      },
      "message": "ART: Add support for constructor method handles\n\nAdd well known methods for MethodHandles.lookup() and\nMethodHandles.Lookup.findConstructor(). These are used to call the\nJava code that create a constructor transform.\n\nSeparate method handle resolution paths for fields and methods in the\nclass linker.\n\nUpdate test 952-invoke-custom-kinds to include a constructor method\nhandle. The test classes now match dx/tests/135-invoke-custom.\n\nBug: 62774190\nTest: Update 952-invoke-custom-kinds\nChange-Id: I9a007254a856422c24397c4df3ef3dfbf6bdd840\n"
    },
    {
      "commit": "bac2bd1c2fbdd94f4d4dfe83d8451f655e875e36",
      "tree": "58ba3b1d28348da478a44234820ab6c485f5ed37",
      "parents": [
        "06410c093de2b8a21bdbd7dfd9ce324fd4e95c3f",
        "6d729a789d3d7771e13d9445ee0be1d9d48a81b5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 14 10:28:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 10:28:42 2017 +0000"
      },
      "message": "Merge \"Introduce a Marking Register in ARM code generation.\""
    },
    {
      "commit": "48a951ba629fa374e36a48cde016db10eecd6a88",
      "tree": "a4e2955d7beb65559573001e26e9d33231681bb1",
      "parents": [
        "06bed3009b94b392ce6be43d72f4b10803565c72"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 13 17:04:02 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 13 17:04:02 2017 -0700"
      },
      "message": "Revert \"Revert \"Relax HasSeenMethod check\"\"\n\nTest: test-art-target\n\nThis reverts commit c2b6a63880463f4448ba721d11888d8310a4061f.\n"
    },
    {
      "commit": "06bed3009b94b392ce6be43d72f4b10803565c72",
      "tree": "63acb06a7ad44782c588cafb21c5c2eb1665409c",
      "parents": [
        "99d50e80f3d186c9ae19736b9b224ee319d936f9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 13 13:23:18 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 13 16:59:18 2017 -0700"
      },
      "message": "Revert \"Revert \"Record post startup methods in profile\"\"\n\nTest: test/run-test 595-profile-saving\n\nThis reverts commit a867f7ab437dd6c1458088964986d0fe7275625c.\n\nChange-Id: I2826bdddda446925856991de4b0b786c8c05831e\n"
    },
    {
      "commit": "d0b3ab2411a13f4d6bc1a4280145a44946046020",
      "tree": "0a70013c4cea8d4061317db6414d3fb67e56ad2a",
      "parents": [
        "7de725b25df1a5aab8aa224a8420c845e7873403",
        "a44c44549c8688b0e7257571601625e9eb88cea8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 13 19:49:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 13 19:49:50 2017 +0000"
      },
      "message": "Merge \"Fix compressible string check for ctors with `hibyte`.\""
    },
    {
      "commit": "7de725b25df1a5aab8aa224a8420c845e7873403",
      "tree": "32699cef39971f4dcd48ddc40812feba02d94f0f",
      "parents": [
        "469a27f535a7f57444690fa8f5f5ded824fe2caa",
        "a55e2682af7fdf43082bd83c78b016f9aa129294"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 13 18:26:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 13 18:26:15 2017 +0000"
      },
      "message": "Merge \"Clarify unquickening comment.\""
    },
    {
      "commit": "a44c44549c8688b0e7257571601625e9eb88cea8",
      "tree": "994f1496175b29559f2a06c1bc125d7af809300a",
      "parents": [
        "f6a122c2cdbd871c0073ee5f90449be4fad34dea"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 13 18:49:35 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 13 18:49:35 2017 +0100"
      },
      "message": "Fix compressible string check for ctors with `hibyte`.\n\nOnly the low 8 bits of the `hibyte` are relevant but we\nwere checking the whole `hibyte`, erroneously creating\nan uncompressed string when the low bits are zero but\nhigh bits are non-zero. String.equals() depends on all\ncompressible Strings being actually compressed.\n\nTest: Added regression test to 021-string2.\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31040547\nBug: 63661357\nChange-Id: I31690b544de928ce9c6f39f3d144d3e2029f38f6\n"
    },
    {
      "commit": "469a27f535a7f57444690fa8f5f5ded824fe2caa",
      "tree": "5b1c9204ef562b0e0cce2ab107ab74e7f3727d2e",
      "parents": [
        "eea16040d69511984f5f399f251c12bf69c9c6bf",
        "f2e2af8d5548fbb373e52b4cd79a891e46fa9918"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 13 16:42:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 13 16:42:02 2017 +0000"
      },
      "message": "Merge \"Only enforce profile size limits on target builds\""
    },
    {
      "commit": "88fd720b6799184c8ad61e766a6d37af33ed30ef",
      "tree": "80e49456eafd44b0ad8790be456ae06949fcc506",
      "parents": [
        "1cba8d219331e4d6994359e8f9104e5db2c8f8a9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 08:31:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 13 09:11:03 2017 -0700"
      },
      "message": "Add Jvmti Suspend/ResumeThread functions\n\nEnable the can_suspend jvmti capability and implement all required\nfunctionality associated with it.\n\nTest: ./test.py --host -j40\nBug: 34415266\nBug: 62821960\nBug: 63579748\n\nChange-Id: I83b92de7f81622e1658114b034918e8295805b6e\n"
    },
    {
      "commit": "6d729a789d3d7771e13d9445ee0be1d9d48a81b5",
      "tree": "360b9af68920f411be5fe6753aaf7ab4976385ea",
      "parents": [
        "8cfbbb826a3ab7bb680cfcd8a8148570b165d620"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jun 30 18:34:01 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 13 16:41:07 2017 +0100"
      },
      "message": "Introduce a Marking Register in ARM code generation.\n\nWhen generating code for ARM, maintain the status of\nThread::Current()-\u003eGetIsGcMarking() in register R8,\ndubbed MR (Marking Register), and check the value of that\nregister (instead of loading and checking a read barrier\nmarking entrypoint) in read barriers.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: m test-art-host-gtest\nTest: ARM device boot test\nBug: 37707231\nChange-Id: I30b44254460d0bbb9f1b2adc65eca52ca3de3f53\n"
    },
    {
      "commit": "f6a122c2cdbd871c0073ee5f90449be4fad34dea",
      "tree": "a49b1f1889e600f88b3d9c158732132ee8655d42",
      "parents": [
        "e63a91111d13f33028c2988ded53a4659140ca2e",
        "62c20d1c2ec15d6faa175b108e7839e78133e5dd"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 13 10:25:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 13 10:25:10 2017 +0000"
      },
      "message": "Merge \"Add missing CFI directives to ARM Quick entrypoints.\""
    },
    {
      "commit": "a55e2682af7fdf43082bd83c78b016f9aa129294",
      "tree": "1c0f0d79426c2481c23bf988d77c6f12a4b6760e",
      "parents": [
        "e63a91111d13f33028c2988ded53a4659140ca2e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 09:22:59 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 09:22:59 2017 +0100"
      },
      "message": "Clarify unquickening comment.\n\nTest: test.py\nChange-Id: I0445b76d95dbe81f6fb4dbbf49965231ec2f81e4\n"
    },
    {
      "commit": "854df416f12c48b52239fe163ab8a7fcac4cddd3",
      "tree": "f5cf247f1e71a5242c797b8fab99ded21839267d",
      "parents": [
        "e63a91111d13f33028c2988ded53a4659140ca2e"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Jun 27 14:41:39 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Jul 13 10:17:07 2017 +0200"
      },
      "message": "MIPS: TLAB allocation entrypoints\n\nAdd fast paths for TLAB allocation entrypoints for MIPS32 and MIPS64.\nAlso improve rosalloc entrypoints.\n\nNote: All tests are executed on CI20 (MIPS32R2) and in QEMU (MIPS32R6\n      and MIPS64R6), with and without ART_TEST_DEBUG_GC\u003dtrue.\n\nTest: ./testrunner.py --optimizing --target\nTest: mma test-art-target-gtest\nTest: mma test-art-host-gtest\n\nChange-Id: I92195d2d318b26a19afc5ac46a1844b13b2d5191\n"
    },
    {
      "commit": "a867f7ab437dd6c1458088964986d0fe7275625c",
      "tree": "e575d817d4cdc79626d4c70b87d1e09b02a78d81",
      "parents": [
        "9f3a7c5e59a0a0caec950970fe5c636973d0421c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 07:57:57 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 07:59:23 2017 +0000"
      },
      "message": "Revert \"Record post startup methods in profile\"\n\nBreaks target tests.\n\nThis reverts commit 5594f11fa8a8a1efc24d1b258592f68cf462eec8.\n\nChange-Id: I5ff4aab14bb241e287f042a9a90458e61306985e\n"
    },
    {
      "commit": "9f3a7c5e59a0a0caec950970fe5c636973d0421c",
      "tree": "329b98e0afd872c2d1fc0f84819fa9748ce44741",
      "parents": [
        "5f2614f8183c9ad6ea85519dbdcb25f9fa8c78f1",
        "c2b6a63880463f4448ba721d11888d8310a4061f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 07:59:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 13 07:59:12 2017 +0000"
      },
      "message": "Merge \"Revert \"Relax HasSeenMethod check\"\""
    },
    {
      "commit": "c2b6a63880463f4448ba721d11888d8310a4061f",
      "tree": "1fa740c0248f976fa5cdc29405e7b9e109f7aceb",
      "parents": [
        "80e6d7376d10edcc6e0abbb5d34e7cfaff3d55c1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 07:58:55 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 07:58:55 2017 +0000"
      },
      "message": "Revert \"Relax HasSeenMethod check\"\n\nParent change breaks target tests.\n\nThis reverts commit 80e6d7376d10edcc6e0abbb5d34e7cfaff3d55c1.\n\nChange-Id: Ic6510e2d6f05df88364f0f27836ac30e60064bf8\n"
    },
    {
      "commit": "36f549e31aabbe83b3577cf28dbd0313fa7cd75d",
      "tree": "0173ee2da81d72ecc52358cfca0569ac6017f2a1",
      "parents": [
        "da914e73c251a9fe30134d955508db2882add15c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 21:43:37 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 21:44:44 2017 -0700"
      },
      "message": "Avoid decompiling NOPs for 0 count case\n\nIf we try to decompile a dex that isn\u0027t quickened, attempting to\ndecompile NOPs will cause aborts.\n\nTest: test-art-host\nChange-Id: I820d7bd67d05a749c70346de214ba86b51286964\n"
    },
    {
      "commit": "f2e2af8d5548fbb373e52b4cd79a891e46fa9918",
      "tree": "fb2619128998a22a50ca3ddd7b625dbcfa8004e7",
      "parents": [
        "da914e73c251a9fe30134d955508db2882add15c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 21:09:57 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 21:20:45 2017 -0700"
      },
      "message": "Only enforce profile size limits on target builds\n\nAllow large profiles for non target builds for the case where we are\nmerging many profiles to generate a boot image profile.\n\nTest: run profman boot image profile on a large set of profiles\nChange-Id: Iaacd15d8f0822b419b054b3404dea0d52876abfe\n"
    },
    {
      "commit": "de4b08ff24c330d5b36b5c4dc8664ed4848eeca6",
      "tree": "79835478b8b631bbf006b5e023704f3cf53bda7c",
      "parents": [
        "c9267c48979698a9217760c914aba13ea20b5990"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 10 14:13:41 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 17:54:49 2017 -0700"
      },
      "message": "Reduce quicken info size\n\nMove the quicken info from using a map of \u003cdex pc, index\u003e to an array\nof indices. Removed leb encoding since it is harmful for 16 bit\nindices. The map is indexed by the dequickenable instruction index\nfrom the start of the code item.\n\nNumbers for a certain large app compiled with quicken filter:\ndex2oat native alloc: 85345936B -\u003e 81527072B\noat file size: 9068968B -\u003e 8659368B\nvdex file size: 90479120B -\u003e 86321184B\n\nBug: 63467744\nBug: 36457259\nTest: test-art-host\n\n(cherry picked from commit 959f348acabc48efbb18c547dad6300c0f610c1c)\n\nChange-Id: I85546d8cd409cbf96140cbdddabd7e228797b9e3\n"
    },
    {
      "commit": "c9267c48979698a9217760c914aba13ea20b5990",
      "tree": "e63d8305586c3a9a688c27aa501cb56dc18b8ae4",
      "parents": [
        "fc79ef9425d2708578f799bfd42445d1412135f2",
        "80e6d7376d10edcc6e0abbb5d34e7cfaff3d55c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 22:31:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 22:31:21 2017 +0000"
      },
      "message": "Merge \"Relax HasSeenMethod check\""
    },
    {
      "commit": "80e6d7376d10edcc6e0abbb5d34e7cfaff3d55c1",
      "tree": "699dc6781d90a21eca889b85de8770f6f2b09fb2",
      "parents": [
        "817498dfe4c4a64ddb330c1195f54d12f63f4fd7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 15:17:51 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 15:24:08 2017 -0700"
      },
      "message": "Relax HasSeenMethod check\n\nIgnore hot parameter for now and see if this fixes the flaky test.\n\nTest: m\nBug: 63635729\nChange-Id: I23c2894b08d3a55af2a7a536e7964c4dd52a4f75\n"
    },
    {
      "commit": "fc79ef9425d2708578f799bfd42445d1412135f2",
      "tree": "d99e7c7120b2303a8e2755cbbc1a37f01f358070",
      "parents": [
        "817498dfe4c4a64ddb330c1195f54d12f63f4fd7",
        "7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 12 21:49:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 21:49:30 2017 +0000"
      },
      "message": "Merge \"Move dex files dependencies (en/de)coding to ClassLoaderContext\""
    },
    {
      "commit": "7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7",
      "tree": "e588dee4a455cb248ec9a1830ee7d1a7c12acfbc",
      "parents": [
        "1ce7085831316272f071a01d14eea8048264a7bf"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jul 07 18:40:50 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 12 13:02:19 2017 -0700"
      },
      "message": "Move dex files dependencies (en/de)coding to ClassLoaderContext\n\nEncode the full class loader context in the oat file (rather than just a\nlist of dex files).\n\nThe context encoding matches the format used by dex2oat with the addition\nof checksums.\n\nTemporarily assert that at decoding time we are operating on a\nPathClassLoader until the checking logic covers all supported cases.\n\nAlso, bump the version of the oat file because the format of the classpath\nkey has changed.\n\nThis is a transition step to minimize the size of follow up changes.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I9ec0cfe092ce1afccb741a36e737896880d5f1d2\n"
    },
    {
      "commit": "8cfbbb826a3ab7bb680cfcd8a8148570b165d620",
      "tree": "eedd8dc17fd2cc9784824151a154d077242024ac",
      "parents": [
        "5dcf650c18c2314f861e62e6cc0309fe75056379",
        "6d3e76884710e639e79a46d505395bc83ad5ec7d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 12 17:44:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 17:44:10 2017 +0000"
      },
      "message": "Merge \"Abstract SetField functions with Transaction check\""
    },
    {
      "commit": "8d174b5863ac4eec9d2315a5af3bdbfb4e4332e3",
      "tree": "e9123747e0d807078c188bbafcb2f2b0f787f0db",
      "parents": [
        "9d87d7cc71d565d6f55781cef6906751df622855",
        "4be3e9ba3a7d9193163db7447cf4b01ff61eab06"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 12 17:32:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 17:32:10 2017 +0000"
      },
      "message": "Merge \"Check ClassClass\u0027s dependencies in ImageSpace\""
    },
    {
      "commit": "62c20d1c2ec15d6faa175b108e7839e78133e5dd",
      "tree": "78d187940899296fdd3bc5941da97c2af2f27c82",
      "parents": [
        "4bbbe4006bb06386f2419bcc36ec5e6784781f6b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 17:41:39 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 17:44:01 2017 +0100"
      },
      "message": "Add missing CFI directives to ARM Quick entrypoints.\n\nTest: Build ART\nChange-Id: I16ef638b255fd4f6b084df67ef9462170c3c3548\n"
    }
  ],
  "next": "4bbbe4006bb06386f2419bcc36ec5e6784781f6b"
}
