)]}'
{
  "log": [
    {
      "commit": "b8a55f8a62b1309efe52ec0290dfdcf60f34a550",
      "tree": "1f2a62ba7c4d4e95577414721cc274d0ee82fe7d",
      "parents": [
        "30744106517d64fb218ec5a96edbec797ad5a091"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 16:21:43 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 18:41:25 2017 +0100"
      },
      "message": "ART: Faster PrettyMethod().\n\nRewrite DexFile::PrettyMethod() to avoid copying strings.\nThis improves the performance, especially when requesting\nthe signature.\n\nAvoid code duplication in ArtMethod::PrettyMethod() and\ndelegate to DexFile::PrettyMethod().\n\n10 million invocations of ArtMethod/DexFile::PrettyMethod()\nfor \"void Main.main(java.lang.String[] args)\" with (+) or\nwithout (-) signature, time in ms:\n      host/32-bit  host/64-bit angler/32-bit angler/64-bit\nAM+: 10407-\u003e 5020  6374-\u003e 3302  32413-\u003e13140  17558-\u003e10003\nDF+:  7280-\u003e 4259  3881-\u003e 2828  19287-\u003e 9331  10343-\u003e 7375\nAM-:  2682-\u003e 1599  2025-\u003e 1186   7206-\u003e 4271   7447-\u003e 4166\nDF-:   861-\u003e  871   653-\u003e  640   1574-\u003e 1430   1828-\u003e 1712\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Ifb79abe1a7f4fc6adc10a34f5d49dc6681d06699\n"
    },
    {
      "commit": "fe712a8b9c247d66df013f2b4b6faa6009d745bb",
      "tree": "45897680a8f1897b6d33c3bccfad859bb6d9abe0",
      "parents": [
        "3597f51c4af8d5e32c21789ea7b7cd75dc078120",
        "486dda03900a215650f71a9068759978aa77c699"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 18 08:28:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 18 08:28:15 2017 +0000"
      },
      "message": "Merge \"Add support for registering classpath classes status.\""
    },
    {
      "commit": "7a06e4a826c73ef20e0a9ed3d4642d656137c00d",
      "tree": "d63a723dd468417597ac7e5a54565eea97fdf078",
      "parents": [
        "72e80c66e6ab46859eeff46226dc1bcaf6848aa9",
        "0ae15326456aaab7717c09b07eaf2d766dbaadda"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 15 19:26:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 15 19:26:31 2017 +0000"
      },
      "message": "Merge \"tools: Add new titrace tool to print dynamic instruction counts\""
    },
    {
      "commit": "72e80c66e6ab46859eeff46226dc1bcaf6848aa9",
      "tree": "26a43553284d972ca763c01c48fad90f2a6f5bfa",
      "parents": [
        "c5e7180231f6703925557ffaf8bc64615219e078",
        "41006c6e8c0c5132a22bb7e100b6cd545dbb55a6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 15 18:47:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 15 18:47:46 2017 +0000"
      },
      "message": "Merge changes Ia3f19f0f,I0fe8038e\n\n* changes:\n  Implement JVMTI GetCurrentContendedMonitor\n  Add support for JVMTI monitor events.\n"
    },
    {
      "commit": "c5e7180231f6703925557ffaf8bc64615219e078",
      "tree": "f99e65a2c215fe049edc591d3d441ba1f150a808",
      "parents": [
        "afdab8d7e57f05b7cc4f0babbc1ec04bf91b4867",
        "aa0912c4e91759441ce717f4f2089078e0e2a3d1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 15 18:25:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 15 18:25:56 2017 +0000"
      },
      "message": "Merge \"Do not fill DexCache methods in resolution trampoline.\""
    },
    {
      "commit": "0ae15326456aaab7717c09b07eaf2d766dbaadda",
      "tree": "b323ea082a55dacaf348ad3f687cec536b66997b",
      "parents": [
        "6b411fc9fd94da3c552d8b96cee14f6414e7b734"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Sep 14 13:55:06 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 15 10:22:18 2017 -0700"
      },
      "message": "tools: Add new titrace tool to print dynamic instruction counts\n\nImplemented on top of the Tooling Interface (jvmti.h) and works on both\nRI and ART (host/target). See README.md for more details.\n\nExample usage:\n\n$\u003e make libtitrace\n$\u003e java -agentpath:out/host/linux-x86/lib64/libtitrace.so helloworld\n  Hello\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 TI Trace // Summary\n  ++++++++++++++++++++++++++++++++++++++++++++++++\n     * Single step counter: 405982\n  +++++++++++    Instructions Count   ++++++++++++\n     * aconst_null(op:1), count: 734, % of total: 0.180796\n     * iconst_m1(op:2), count: 470, % of total: 0.115769\n     * iconst_0(op:3), count: 4246, % of total: 1.04586\n     * iconst_1(op:4), count: 3585, % of total: 0.883044\n     * iconst_2(op:5), count: 1068, % of total: 0.263066\n     ............\n\nTest: manual\nChange-Id: I0cd1f4f88e54cf8612641128230b8e93157b48ea\n"
    },
    {
      "commit": "aa0912c4e91759441ce717f4f2089078e0e2a3d1",
      "tree": "4777dcbb7bd5ded78408d487f9302ab73297b02a",
      "parents": [
        "d0e4c9d1137f0680307f5c1b630008aacdcf3da8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 15 13:30:06 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 15 17:17:44 2017 +0100"
      },
      "message": "Do not fill DexCache methods in resolution trampoline.\n\nStoring the methods in DexCache was done for performance\nreasons back when compiled code used the DexCache for method\ncalls. HInvokeStaticOrDirect does not use the DexCache since\nreplacing the kDexCachePcRelative with kBssEntry in\n    https://android-review.googlesource.com/399312 ,\nso we do not need to populate the DexCache for performance\nreasons.\n\nThe storing of the ArtMethod* for invoke-super was also\nerroneous as it may have stored a method in a slot that\nreferences a class not present in the associated ClassTable.\nThis led to crashes when subsequently trying to resolve the\nmethod and check for ICCE from JIT.\n\nTherefore we remove the code that stores the method, both\nfor the crashing invoke-super case and the obsolete\ninvoke-static case (introduced due to bug 19175856).\n\nTest: 164-resolution-trampoline-dex-cache\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 64759619\nChange-Id: Ieee68d3c6a731e61bc8115085c1e027af199fc59\n"
    },
    {
      "commit": "afdab8d7e57f05b7cc4f0babbc1ec04bf91b4867",
      "tree": "17c5ff49e36a43e9f8564b1e7b7b29448d39bf8f",
      "parents": [
        "9e76f430e7b923cfeff7cc2d5baae0266eb5a2f5",
        "05f47743e604e9b3b1de9ec930c6af6d9780c440"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 15 16:09:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 15 16:09:30 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\"\""
    },
    {
      "commit": "486dda03900a215650f71a9068759978aa77c699",
      "tree": "1f2a1331d3ec474c979db5f9a35dd11f453abc25",
      "parents": [
        "b072ec25f8a71420ee77b068a28a2669420f6150"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 11 14:15:52 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 15 12:45:28 2017 +0100"
      },
      "message": "Add support for registering classpath classes status.\n\nBy doing class unloading after each dex file compilation, we are loosing\naway verification done on classpath classes.\n\nThis change introduces a new table for keeping around class status of\nclasspath classes.\n\nMultidex quickening compilation improved by ~5% by not re-verifying classpath\nclasses.\n\nBug: 63467744\n\ntest: test.py\ntest: golem successfully compiles FB\nChange-Id: I629c0a7d86519bbc516f5e59f7cd92ca6ca842eb\n"
    },
    {
      "commit": "44e5efa4ae79cf76c65f37fc41c1fa0ed431ec4a",
      "tree": "7f144c75386ca4584455bfa87c356824f4aadfb9",
      "parents": [
        "c5b215f7004c46a274a54e232f0cd146c7494f9a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 12 00:54:26 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 14 16:29:15 2017 -0700"
      },
      "message": "Add check that classpath is up to date to getDexOptNeeded\n\nExtend getDexOptNeeded to factor into the decision the expected class\nloader context. If the context does not match, oat file assistant and\ndexoptanalyzer will advise kDex2OatFromScratch.\n\nNote that this does not currently extend the java side\nDexFile.getDexOptNeeded. The calls coming from the java side will continue\nto ignore the classpath checks by passing null as the class loader\ncontext.\n\nBug: 62269291\nTest: m test-art-host\nChange-Id: Ia01728c06810e418bbcbfe2a774d1f904d2525ba\n"
    },
    {
      "commit": "c5b215f7004c46a274a54e232f0cd146c7494f9a",
      "tree": "b0e628ec0c22aa1d23c42bc63a323f43358f7eba",
      "parents": [
        "5809417697955005751d60498964f6d4bd4a096f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 12 14:49:37 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 14 16:28:50 2017 -0700"
      },
      "message": "Update the context classpath after the dex files are opened.\n\nThe classpath stored in the context maybe be out of sync with the list of\nopened dex files if any of the dex file is a multidex or cannot be opened.\n\nThis CL ensures that OpenDexFiles updates the classpath with the dex file\nlocations that were open.\n\nThe change does not affect the current use of ClassLoaderContext. It is a\npreparatory step for b/62269291\n\nBug: 62269291\nTest: m test-art-host-gtest-class_loader_context_test\nChange-Id: Ibe675df9b2c06a4df8189f0d72df8b4061603a0e\n"
    },
    {
      "commit": "77fee87b262e969b29a9ac121a8bcbf87b68d9ce",
      "tree": "3280ba8d887045217bfbcb81eb624f571eeee7d0",
      "parents": [
        "ec995142998f6c7371734e6df95b5e2c80b18d27"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 09:57:03 2017 -0700"
      },
      "message": "Add support for JVMTI monitor events.\n\nAdds support for the JVMTI can_generate_monitor_events capability and\nall associated events. This adds support for the\nJVMTI_EVENT_MONITOR_WAIT, JVMTI_EVENT_MONITOR_WAITED,\nJVMTI_EVENT_MONITOR_CONTENDED_ENTER, and\nJVMTI_EVENT_MONITOR_CONTENDED_ENTERED events.\n\nBug: 65558434\nBug: 62821960\nBug: 34415266\n\nTest: ./test.py --host -j50\n\nChange-Id: I0fe8038e6c4249e77d37a67e5056b5d2a94b6f48\n"
    },
    {
      "commit": "05f47743e604e9b3b1de9ec930c6af6d9780c440",
      "tree": "9c4342297a37c3cfe22c69ef9f7d82f722006431",
      "parents": [
        "b2c8fc62f4e7889300da2d26294537194e37b926"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 00:34:44 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 00:34:44 2017 +0000"
      },
      "message": "Revert \"Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\"\n\nForgot to revert this.\n\nThis reverts commit b2c8fc62f4e7889300da2d26294537194e37b926.\n\nReason for revert: Fixed issue with tests\n\nChange-Id: I1fd5a2759c67a906d55137e2b6548726af2c8e4f\nTest: treehugger\n"
    },
    {
      "commit": "d0e4c9d1137f0680307f5c1b630008aacdcf3da8",
      "tree": "b706b76ca9ac5a8c198393df429ea8d1e274acf2",
      "parents": [
        "640a32f7d7ed4f4720282c63e4aa5ab62dbcd9ee",
        "e9691f5ef14de049a1bbffb344049641d7fcd73b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 13 14:24:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 13 14:24:36 2017 +0000"
      },
      "message": "Merge \"ART: Do not add Proxy prototype methods to their dex cache.\""
    },
    {
      "commit": "e9691f5ef14de049a1bbffb344049641d7fcd73b",
      "tree": "ffec6bb7adbd4d01aa8b051f281ef2df9c738a6c",
      "parents": [
        "61add1d9dcd11d86253b218a8feeafa642bc4941"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 13 13:32:12 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 13 13:32:12 2017 +0100"
      },
      "message": "ART: Do not add Proxy prototype methods to their dex cache.\n\nThis work is really unnecessary since\n    https://android-review.googlesource.com/460136 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Id3ac5be338b827dce73cb8f82cf162f976864d54\n"
    },
    {
      "commit": "640a32f7d7ed4f4720282c63e4aa5ab62dbcd9ee",
      "tree": "0acf91737b29f2c4659968478e0946c5d36afe9f",
      "parents": [
        "857a1605b93e85e75f3dcb8cec8446f19dbf9b70",
        "a710d91a57c5c7de0f448c2dbfaa24cac53b52f9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 13 11:28:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 13 11:28:14 2017 +0000"
      },
      "message": "Merge \"ART: Pass current Thread* to Jit::ShouldUsePriorityThreadWeight().\""
    },
    {
      "commit": "a710d91a57c5c7de0f448c2dbfaa24cac53b52f9",
      "tree": "8d987bdd9c971f2dbf2ad30265b17c88a24c9ded",
      "parents": [
        "61add1d9dcd11d86253b218a8feeafa642bc4941"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 12 14:56:07 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 13 10:24:19 2017 +0100"
      },
      "message": "ART: Pass current Thread* to Jit::ShouldUsePriorityThreadWeight().\n\nAnd avoid some instructions from REFRESH_IBASE on x86-64.\n\nTest: testrunner.py --host --interpreter --jit\nTest: testrunner.py --target --interpreter --jit on Nexus 6P\nChange-Id: Id42545d0d8fb8db0659b6c937ed7e8106d1dcfdb\n"
    },
    {
      "commit": "857a1605b93e85e75f3dcb8cec8446f19dbf9b70",
      "tree": "4ee985c97f53e3923e1400fb85194f9dcf32d62a",
      "parents": [
        "89c2f5edb096a82b5271b4671f40e4608a6cb14e",
        "5510c0aac1fa3512d228e10af609a3ad43bbb33b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 13 08:08:47 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 13 08:08:47 2017 +0000"
      },
      "message": "Merge \"Rename debugFlags to runtimeFlags.\""
    },
    {
      "commit": "c4cb7c143d8acdbacf5276991df6f0aa83ab1f35",
      "tree": "096b95eafc2b6f514cfc6d04958bf61fc482b467",
      "parents": [
        "6b411fc9fd94da3c552d8b96cee14f6414e7b734"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 19:57:48 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 12 15:15:31 2017 -0700"
      },
      "message": "ART: Clear JniConstants on shutdown\n\nTo permit a new runtime to repopulate the JniConstants cache,\ncall ClearJniConstantsCache() on shutdown.\n\nBug: 65522645\nTest: m\nTest: m test-art-host\nChange-Id: I340cc2ced6b2e5bcd541f1d7b9741574e37c27eb\n"
    },
    {
      "commit": "6b411fc9fd94da3c552d8b96cee14f6414e7b734",
      "tree": "eaa492fe65b0a9c33b8db54d5f782bf2509d7c9d",
      "parents": [
        "51bee8bf9a0abfe0774c3a4717ac66336572c066",
        "0a5ec3dde72d93111a1cfe229e4f1888f06a9541"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 12 16:24:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 12 16:24:26 2017 +0000"
      },
      "message": "Merge \"Don\u0027t deoptimize everything with can_access_local_variables\""
    },
    {
      "commit": "51bee8bf9a0abfe0774c3a4717ac66336572c066",
      "tree": "7b58b8aefd69f9076461c3792fd2437a3a347fd0",
      "parents": [
        "6c8151ffa3c8f77756aa8d0af898b9302bb2ecab",
        "496b8834b67f44320b4e0446769f110f6febe180"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 12 16:01:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 12 16:01:06 2017 +0000"
      },
      "message": "Merge \"Revert \"ART: additional info SIGILL\"\""
    },
    {
      "commit": "5510c0aac1fa3512d228e10af609a3ad43bbb33b",
      "tree": "8b95b03677f1a89e84dc12e40d8641774ed57b23",
      "parents": [
        "61add1d9dcd11d86253b218a8feeafa642bc4941"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 12 15:11:37 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 12 15:42:52 2017 +0100"
      },
      "message": "Rename debugFlags to runtimeFlags.\n\nbug: 30972906\nbug: 63920015\n\nTest: builds\nChange-Id: Id5cc649276d6b8528a43624d432571063f72f9c1\n"
    },
    {
      "commit": "496b8834b67f44320b4e0446769f110f6febe180",
      "tree": "1fe0d131119041057224969687c9e0eac8c78444",
      "parents": [
        "fe30b3e2815c6140471338df5d903a2c1d242414"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Sep 11 16:54:57 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 12 08:41:05 2017 +0100"
      },
      "message": "Revert \"ART: additional info SIGILL\"\n\nThis reverts commit 0cff0b0956145a192865bef4896c771e164d0a3a.\n\nReason for revert: insufficient coverage for intended purpose per follow-up\ndiscussion on initial CL.\n\nBug: 65312375\nTest: m -j32\nChange-Id: I3cf94207ddd93d6030d80f681613e2a7e8b2fd66\n"
    },
    {
      "commit": "61add1d9dcd11d86253b218a8feeafa642bc4941",
      "tree": "35c1eb13dfc4394a62e4856183f6fef657268e89",
      "parents": [
        "6d525fd408fb9ad914e4b1e28fd16c928175a5f2",
        "d972b427d49d75ba62bd80495ef706771504ac71"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Sep 12 03:48:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 12 03:48:10 2017 +0000"
      },
      "message": "Merge \"Random comment typo fixes\""
    },
    {
      "commit": "d972b427d49d75ba62bd80495ef706771504ac71",
      "tree": "5dd04819ed6d73c76d0f31dc4395083c296c4e4c",
      "parents": [
        "47d00f6c4657af33c3cc29783c0f2eb156aa1449"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Sep 11 12:57:00 2017 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Sep 11 15:40:34 2017 -0700"
      },
      "message": "Random comment typo fixes\n\nDiscovered while trying to understand this code ...\n\nTest: Build platform.\n\nChange-Id: I606bf8b07375513699e12f31f771c2a7677b6766\n"
    },
    {
      "commit": "a49e053faa4a254df1f21e055cb73555de241cfc",
      "tree": "bed0e8f0934550d4329c0aed10f016c884c6750f",
      "parents": [
        "47d00f6c4657af33c3cc29783c0f2eb156aa1449"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Aug 25 08:05:29 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Sep 11 15:31:00 2017 -0700"
      },
      "message": "Show ArtMethods in imgdiag\n\nSince ArtMethods were moved out of mirror:: classes imgdiag does not\nshow information about them.  Diff ArtMethods to facilitate finding\ndirty memory there.\n\nBug: 38173645\nTest: imgdiag --boot-image\u003d/system/framework/boot.art --image-diff-pid\u003d`pid system_server`\nChange-Id: Icd86a9ef14d5177a297026c22c81c080f5c85fc1\n"
    },
    {
      "commit": "47d00f6c4657af33c3cc29783c0f2eb156aa1449",
      "tree": "5e0d77956ffe8fc6b6b3f70f702bf21f32d67f8f",
      "parents": [
        "1ffbc05e2a2bd70fcf34a2acd88c21fdcf3c56ff",
        "a7c83ac563a8f25174ac8826f7fb87bd0a9da9fb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 11 20:50:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 11 20:50:21 2017 +0000"
      },
      "message": "Merge changes I88fd4905,Ib8c0a28c\n\n* changes:\n  ART: Clean up WellKnownClasses include.\n  ART: Clear WellKnownClasses on shutdown\n"
    },
    {
      "commit": "0a5ec3dde72d93111a1cfe229e4f1888f06a9541",
      "tree": "a9fc32ec94da5c1c59c72f083253b8f997611bc3",
      "parents": [
        "82629c9182dffb823f05dec30f7ac72cf8fb3ba5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 25 16:50:26 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 11 11:05:24 2017 -0700"
      },
      "message": "Don\u0027t deoptimize everything with can_access_local_variables\n\nChange the can_access_local_variables setup to not need to deoptimize\neverything immediately. Instead ensure all methods are\nasync-deoptimizable and deoptimize the thread we are examining prior\nto examining the stack.\n\nTest: ./test.py --host -j50\nBug: 33616143\nBug: 34414073\nChange-Id: I312a4865c09e63a8d3fe3b2d201f1c071fb4305f\n"
    },
    {
      "commit": "9d9f2d7782545082a22b3630ec75aa5a7e887582",
      "tree": "1210668cbd5b35a0d1f6c1f83f766979c7a780b2",
      "parents": [
        "fe30b3e2815c6140471338df5d903a2c1d242414",
        "94ec2db21332ee1dcdbbf254b99a9a999a304fe0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 11 16:55:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 11 16:55:32 2017 +0000"
      },
      "message": "Merge \"Use mmapped boot image class table for PIC app HLoadClass.\""
    },
    {
      "commit": "a7c83ac563a8f25174ac8826f7fb87bd0a9da9fb",
      "tree": "23ca6d02cd6fd7054bc4511a3f5ec346c4f9173d",
      "parents": [
        "db48a79e49a900e255c1a472d6436a655016125f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 08:14:23 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 08:14:23 2017 -0700"
      },
      "message": "ART: Clean up WellKnownClasses include.\n\nDelete an unnecessary include propagating the WellKnownClasses\nfar to widely, and instead fix some transitive users.\n\nTest: m\nChange-Id: I88fd49057afe4ddcc548b979baafb8b8682d78ae\n"
    },
    {
      "commit": "db48a79e49a900e255c1a472d6436a655016125f",
      "tree": "76aceef48f11dd471782d73b75d1fe800916eb3d",
      "parents": [
        "fe30b3e2815c6140471338df5d903a2c1d242414"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 08 22:18:30 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 08:14:10 2017 -0700"
      },
      "message": "ART: Clear WellKnownClasses on shutdown\n\nThe members go stale on shutdown, so delete them. This also works\naround a startup bug that is relying on null members.\n\nBug: 65500943\nTest: m test-art-host\nChange-Id: Ib8c0a28c4b6509a0614a12e123b73e7c117db319\n"
    },
    {
      "commit": "94ec2db21332ee1dcdbbf254b99a9a999a304fe0",
      "tree": "6ced7e596731b61f95a3693f336527f55ea3cf3a",
      "parents": [
        "6cfbdbc359ec5414d3e49f70d28f8c0e65b98d63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 06 17:21:03 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 11 15:12:51 2017 +0100"
      },
      "message": "Use mmapped boot image class table for PIC app HLoadClass.\n\nImplement new HLoadClass load kind for boot image classes\nreferenced by PIC-compiled apps (i.e. prebuilts) that uses\nPC-relative load from a boot image ClassTable mmapped into\nthe apps .bss. This reduces the size of the PIC prebuilts\nthat reference boot image classes compared to the kBssEntry\nas we can completely avoid the slow path and stack map\nunless we need to do the class initialization check.\n\nPrebuilt services.odex for aosp_angler-userdebug (arm64):\n  - before: 20312800\n  - after: 19775352 (-525KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --pictest\nTest: testrunner.py --target on Nexus 6P.\nTest: testrunner.py --target --pictest on Nexus 6P.\nTest: Nexus 6P boots.\nBug: 31951624\nChange-Id: I13adb19a1fa7d095a72a41f09daa6101876e77a8\n"
    },
    {
      "commit": "d4d11822e349e7e4af0b43cb3fc69e14f1c95475",
      "tree": "4182e25cf642e9a6e62c24c3d3561220ffbae30a",
      "parents": [
        "f6dcede6568e3fe71da8db8d1414fab98ce4bec6",
        "f26bb6c74a973fde3d2783ac35324d5ce8def814"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Sep 08 21:10:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 08 21:10:45 2017 +0000"
      },
      "message": "Merge \"ARM64: Tune SIMD loop unrolling factor heuristic.\""
    },
    {
      "commit": "86ce50481f91e3be2e5f2686e18e11babde721ae",
      "tree": "3179155108b883d8c0c4bb3dbac0b70db0d7f698",
      "parents": [
        "88f929ce72a5eabdb1ae1b32e5ec157d0e9f1ef8",
        "dd018df8a00e841fe38fabe38520b7d297a885c1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 08 16:16:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 08 16:16:46 2017 +0000"
      },
      "message": "Merge \"optimizing: add block-scoped constructor fence merging pass\""
    },
    {
      "commit": "dd018df8a00e841fe38fabe38520b7d297a885c1",
      "tree": "4974b4f718d9cbb5910df7f476f2581aff1a17e2",
      "parents": [
        "6ef45677305048c2bf0600f1c4b98a11b2cfaffb"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Aug 09 10:38:31 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 08 14:06:32 2017 +0000"
      },
      "message": "optimizing: add block-scoped constructor fence merging pass\n\nIntroduce a new \"Constructor Fence Redundancy Elimination\" pass.\nThe pass currently performs local optimization only, i.e. within instructions\nin the same basic block.\n\nAll constructor fences preceding a publish (e.g. store, invoke) get\nmerged into one instruction.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nOptStat#ConstructorFenceGeneratedNew:   43825\nOptStat#ConstructorFenceGeneratedFinal: 17631  \u003c+++\nOptStat#ConstructorFenceRemovedLSE:     164\nOptStat#ConstructorFenceRemovedPFRA:    9391\nOptStat#ConstructorFenceRemovedCFRE:    16133  \u003c---\n\nRemoves ~91.5% of the \u0027final\u0027 constructor fences in RitzBenchmark:\n\n(We do not distinguish the exact reason that a fence was created, so\nit\u0027s possible some \"new\" fences were also removed.)\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTest: art/test/run-test --host --optimizing 476-checker-ctor-fence-redun-elim\nBug: 36656456\nChange-Id: I8020217b448ad96ce9b7640aa312ae784690ad99\n"
    },
    {
      "commit": "88f929ce72a5eabdb1ae1b32e5ec157d0e9f1ef8",
      "tree": "6e4c293998044975d91596032d9f193dc41bad8f",
      "parents": [
        "c54e4cfa995fcd5a8457b3424fada36c560c9789",
        "6cfbdbc359ec5414d3e49f70d28f8c0e65b98d63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 08 11:27:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 08 11:27:33 2017 +0000"
      },
      "message": "Merge \"Use mmapped boot image intern table for PIC app HLoadString.\""
    },
    {
      "commit": "1f418c1a3605bb2e19a12b2ee0d32bdd51fad650",
      "tree": "d20c007fb5db6594c593a99114642ac628f3e459",
      "parents": [
        "3edbcdf01ebc6858087658d23c110c765a37c5e0",
        "0cff0b0956145a192865bef4896c771e164d0a3a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 08 09:26:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 08 09:26:41 2017 +0000"
      },
      "message": "Merge \"ART: additional info SIGILL\""
    },
    {
      "commit": "3edbcdf01ebc6858087658d23c110c765a37c5e0",
      "tree": "4a2fb9d9a666d26a0cebcb6ddf01ae7fcf08d2c1",
      "parents": [
        "e3f06d54904a8d1f076864e6d11a4f088054b276",
        "cf83aaa468fa1b87746ac2e8ca95e80aa8c29a81"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 08 05:18:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 08 05:18:33 2017 +0000"
      },
      "message": "Merge \"Revert \"mirror: Make Class::Status 64-bit field\"\""
    },
    {
      "commit": "cf83aaa468fa1b87746ac2e8ca95e80aa8c29a81",
      "tree": "2e74a2ac49fab21ce80f5b7e11a7c5e77097d735",
      "parents": [
        "de07216fe9824f68ba76bf4c14158ec4f55af2cb"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 08 03:21:54 2017 +0000"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 08 03:21:54 2017 +0000"
      },
      "message": "Revert \"mirror: Make Class::Status 64-bit field\"\n\nThis reverts commit de07216fe9824f68ba76bf4c14158ec4f55af2cb.\n\nReason for revert: \u003cINSERT REASONING HERE\u003e\n\nChange-Id: Id86866a14ad7caf8e23181be19fc750cb3f46667\n"
    },
    {
      "commit": "e3f06d54904a8d1f076864e6d11a4f088054b276",
      "tree": "b2f9d4559d438b4ef896eaa02e395f517a4557c1",
      "parents": [
        "806e65e8798b51fa5262ceaeb44a8f256fe84b47",
        "de07216fe9824f68ba76bf4c14158ec4f55af2cb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 08 00:08:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 08 00:08:13 2017 +0000"
      },
      "message": "Merge \"mirror: Make Class::Status 64-bit field\""
    },
    {
      "commit": "de07216fe9824f68ba76bf4c14158ec4f55af2cb",
      "tree": "a26c44ab0a2c45b8bcb24976ef74d28ff867d919",
      "parents": [
        "82629c9182dffb823f05dec30f7ac72cf8fb3ba5"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Sep 07 14:42:46 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Sep 07 15:15:44 2017 -0700"
      },
      "message": "mirror: Make Class::Status 64-bit field\n\nTemporarily merge this CL, then revert.\n\nWe need it to submit Zhengkai\u0027s CL to go/lem because of the libcore\nchange.\n\nBug: 64692057\nTest: art/test.py -j32 --host\nChange-Id: If104832c66973e6ffe8baf81ad1b32237ee78a80\n"
    },
    {
      "commit": "d25c91583512fceebc7f865b27387025695aa11f",
      "tree": "fbd0818c72d91668e850ac843a2d1d85af09182a",
      "parents": [
        "e69463a2a0d0a5ea4cdb1ff4d74ba3ae0e41eb3d",
        "1e96a5d58d68909cbc2d6bf2ee08c6c11f7b858e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 07 21:25:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 07 21:25:29 2017 +0000"
      },
      "message": "Merge \"Fix context verification for relative dependencies\""
    },
    {
      "commit": "e69463a2a0d0a5ea4cdb1ff4d74ba3ae0e41eb3d",
      "tree": "4f77597972281ed4621b9f6f4c3f267eb28b51a1",
      "parents": [
        "afd3acdfd02dd027689afcbf19b6bb9252751205",
        "ce56864b347983155a6b810c19eaa8297d77be96"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 07 21:14:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 07 21:14:10 2017 +0000"
      },
      "message": "Merge \"Add support for JVMTI GetObjectMonitorUsage function.\""
    },
    {
      "commit": "f26bb6c74a973fde3d2783ac35324d5ce8def814",
      "tree": "70149908a20503dfaf1276d04d561024f3441c6f",
      "parents": [
        "66e3af9ce5b3aaa43e5ce3bce8233235af139072"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Sep 01 10:59:03 2017 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Sep 07 21:29:41 2017 +0100"
      },
      "message": "ARM64: Tune SIMD loop unrolling factor heuristic.\n\nImprove SIMD loop unrolling factor heuristic for ARM64 by\naccounting for max desired loop size, trip_count, etc. The\nfollowing example shows 21% perf increase:\n\n  for (int i \u003d 0; i \u003c LENGTH; i++) {\n    bc[i] \u003d ba[i];  // Byte arrays\n  }\n\nTest: test-art-host, test-art-target.\nChange-Id: Ic587759c51aa4354df621ffb1c7ce4ebd798dfc1\n"
    },
    {
      "commit": "afd3acdfd02dd027689afcbf19b6bb9252751205",
      "tree": "ff58647dce11efe23dbc53c4bc07753032f73cac",
      "parents": [
        "66e3af9ce5b3aaa43e5ce3bce8233235af139072",
        "a3f78fedfb9f791f849d0daa8b10a43232f09752"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 07 20:25:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 07 20:25:38 2017 +0000"
      },
      "message": "Merge \"ART: Change thread dump order on abort\""
    },
    {
      "commit": "6cfbdbc359ec5414d3e49f70d28f8c0e65b98d63",
      "tree": "f92b309ddc43c2254b6067346a653170fbbf7316",
      "parents": [
        "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 25 13:26:39 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 17:52:35 2017 +0100"
      },
      "message": "Use mmapped boot image intern table for PIC app HLoadString.\n\nImplement new HLoadString load kind for boot image strings\nreferenced by PIC-compiled apps (i.e. prebuilts) that uses\nPC-relative load from a boot image InternTable mmapped into\nthe apps .bss. This reduces the size of the PIC prebuilts\nthat reference boot image strings compared to the kBssEntry\nas we can completely avoid the slow path and stack map.\n\nWe separate the InternedStrings and ClassTable sections of\nthe boot image (.art) file from the rest, aligning the\nstart of the InternedStrings section to a page boundary.\nThis may actually increase the size of the boot image file\nby a page but it also allows mprotecting() these tables as\nread-only. The ClassTable section is included in\nanticipation of a similar load kind for HLoadClass.\n\nPrebuilt services.odex for aosp_angler-userdebug (arm64):\n  - before: 20862776\n  - after: 20308512 (-541KiB)\nNote that 92KiB savings could have been achieved by simply\navoiding the read barrier, similar to the HLoadClass flag\nIsInBootImage(). Such flag is now unnecessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --pictest\nTest: testrunner.py --target on Nexus 6P.\nTest: testrunner.py --target --pictest on Nexus 6P.\nTest: Nexus 6P boots.\nBug: 31951624\nChange-Id: I5f2bf1fc0bb36a8483244317cfdfa69e192ef6c5\n"
    },
    {
      "commit": "66e3af9ce5b3aaa43e5ce3bce8233235af139072",
      "tree": "859b229b42d1d70bff74b3f7d5ddf59a50c16904",
      "parents": [
        "b072ec25f8a71420ee77b068a28a2669420f6150",
        "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 07 16:08:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 07 16:08:28 2017 +0000"
      },
      "message": "Merge \"Remove DexCache arrays from app oat .bss.\""
    },
    {
      "commit": "0cff0b0956145a192865bef4896c771e164d0a3a",
      "tree": "793635217a710d09bf23f7522bc78c4a90fc3ab9",
      "parents": [
        "9af08e64d061f12d486b88c2545d8ddde9d08bf0"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Sep 07 10:15:44 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Sep 07 14:53:38 2017 +0100"
      },
      "message": "ART: additional info SIGILL\n\nBug: 65412375\nTest: art/test/run-test --host --jit 708 \u0026\u0026 killall -SIGILL dalvikvm\nChange-Id: Iaa5f8b6729356f33dfbfe19f11876fe2e99aefdf\n"
    },
    {
      "commit": "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59",
      "tree": "685000aec6754ac7ec361d843df6254786fa33f2",
      "parents": [
        "562086585f002babaaa542488a91bf7dd25e222c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 14:15:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 14:46:19 2017 +0100"
      },
      "message": "Remove DexCache arrays from app oat .bss.\n\nTheir presence in the .bss was no longer necessary and\nit doesn\u0027t really matter for memory usage whether they\nare in the .bss or in the LinearAlloc. This removes\na lot of unnecessary code.\n\nTest: m test-art-host\nTest: testrunner.py --host\nChange-Id: I63ccd4412fcb267341b8b012b7e3b09903f86625\n"
    },
    {
      "commit": "ce56864b347983155a6b810c19eaa8297d77be96",
      "tree": "c572198fee2fe2cc4b2291b7af124c5429e63f7e",
      "parents": [
        "82629c9182dffb823f05dec30f7ac72cf8fb3ba5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 16:54:25 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 06 17:50:27 2017 -0700"
      },
      "message": "Add support for JVMTI GetObjectMonitorUsage function.\n\nAdds support for the can_get_monitor_info capability and all\nassociated functionality. Also fixes a minor bug where monitor info\nincorrectly said that an unlocked monitor had 1 entry in some cases.\n\nTest: ./test.py --host -j50\nTest: art/tools/run-jdwp-tests --mode\u003dhost\n\nBug: 62821960\nBug: 34409230\n\nChange-Id: I9a4817ea309aaf94c56e9c0a694b88c93e7b629c\n"
    },
    {
      "commit": "f598131aeaede9eac05c1399f0dba6f89fda0d7e",
      "tree": "54073e88ac41fc5252b54807b54cb69320f94428",
      "parents": [
        "f56311a966a9e8e476287cd47d615a91a83c1d04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 06 14:17:34 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 06 17:26:51 2017 -0700"
      },
      "message": "Add more logging for b/64759619\n\nAim to get more info about methods that don\u0027t have a resolved\ndeclaring class.\n\nTest: test-art-host\nBug: 64759619\n\n(cherry picked from commit 26c5f9dd5a11012af3327ef3309890f40cb222b0)\n\nChange-Id: I6a2b4b4f1db8cc7771d76deed96dd7f598cd1fdd\n"
    },
    {
      "commit": "a3f78fedfb9f791f849d0daa8b10a43232f09752",
      "tree": "c93cd8ed6c26a630882bf9b1c1a97cb46fbba9a2",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 05 09:31:04 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 06 16:04:13 2017 -0700"
      },
      "message": "ART: Change thread dump order on abort\n\nDump the aborting thread last, in an effort to have it appear in\nthe logcat.\n\nBug: 64689630\nTest: m test-art-host\nChange-Id: Ib9148b542a950545a5873e7ca71d3d3b2cefbd1f\n"
    },
    {
      "commit": "1e96a5d58d68909cbc2d6bf2ee08c6c11f7b858e",
      "tree": "6018dd7f5ecff7e0f7298581546eea8bc9761453",
      "parents": [
        "821a2595e2438554424879d6cb3594810ca8e636"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 05 17:10:48 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Sep 06 11:39:00 2017 -0700"
      },
      "message": "Fix context verification for relative dependencies\n\nIf --classpath-dir is passed, dex2oat encodes the dependencies as relative\npaths in the class loader context.\n\nHowever, at runtime we always get the full apk paths. This means we will\nalways get a context mismatch because even if we have the same file we\nencode its path differently at runtime and compile time.\n\nOnly the split apks are affected by this issue since they will depend on\nthe base apk which will be encoded as a relative location.\n\nThe fix is to propagate the behavior from OatFile::Setup() which resolves\nthe relative locations.\n\nIn fixing this I took a bit more general approach and try to infer the\ncontext locations that should be compared based on the actual context and\nthe expected context.\n\nBug: 65385993\nTest: m test-art-host-gtest\n      manual with split-apks\n\nChange-Id: I4c8e7c4f0a3a18dba8daca752a21da4822cce490\n"
    },
    {
      "commit": "82629c9182dffb823f05dec30f7ac72cf8fb3ba5",
      "tree": "2e74a2ac49fab21ce80f5b7e11a7c5e77097d735",
      "parents": [
        "ac8a2a76e34d0ec0bfc10e067eafbd8a87ea4446",
        "2ee17909eadd7155f4a7751c38398b36fc267f04"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Sep 06 17:20:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 06 17:20:45 2017 +0000"
      },
      "message": "Merge \"Revert^4 \"Allow deoptimization when returning from a runtime method.\"\""
    },
    {
      "commit": "28f53f57265134a9eac2dd3fe7782056357ce4fb",
      "tree": "64ca841bef8f6e030e03548044ebe924d279598f",
      "parents": [
        "901679cbdf4c0179d784313c10285de8c21abc93",
        "d3ea5b3d7f6a829fba5979657ee8af9d8b2a7fdb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 05 23:01:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 05 23:01:02 2017 +0000"
      },
      "message": "Merge changes I66c62317,Id097273a,If3bfe695\n\n* changes:\n  ART: Recognize compile-time soft-fails\n  ART: Change CanAssumeVerified to GetPreviousClassState\n  ART: Move Class::Status to ClassStatus\n"
    },
    {
      "commit": "a2a2e4682f8fa9b89099c6e7f2b7dbdf6cd1fbe2",
      "tree": "1beeb23406ab90d24b3783337d7aaead9fcc6cdb",
      "parents": [
        "61758b9f3afdcbfc06d92a9d887945bbcb4ae8c1",
        "9fb1ab1f6bb58bdaccef78bc81b3202d0121e2ed"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 05 20:48:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 05 20:48:11 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"JVMTI Exception and ExceptionCatch events\"\"\""
    },
    {
      "commit": "2ee17909eadd7155f4a7751c38398b36fc267f04",
      "tree": "2d13de7e9aae9d24ceb4ff1e03f81e46a5aee54b",
      "parents": [
        "1accd636dc90edef2878f0b8e2716b078379842e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Aug 30 11:37:08 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Sep 05 13:22:15 2017 -0700"
      },
      "message": "Revert^4 \"Allow deoptimization when returning from a runtime method.\"\n\nThis reverts commit 07c7028e518b98d3267a77dfe0d149db1adbe858.\n\nNeed some special treatment of string init\u0027s shorty.\n\nTest: run-test/gtest on both host and target\nTest: 597-deopt-busy-loop, 597-deopt-invoke-stub\nBug: 33616143\nChange-Id: Id4c64910acfdd088835b6db6fc503e6ade0218e7\n"
    },
    {
      "commit": "d3ea5b3d7f6a829fba5979657ee8af9d8b2a7fdb",
      "tree": "d2e7d975f6f23e82d9739171b1015f498753c0fd",
      "parents": [
        "5d3b002b9a244b5dc25fe97fedcb92851d9073f7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 04 14:55:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 05 11:09:49 2017 -0700"
      },
      "message": "ART: Recognize compile-time soft-fails\n\nAdd recognition of RetryVerificationAtRuntime to the AoT\nclasslinker. In that case, report a soft failure.\n\nBug: 63467744\nBug: 65318848\nTest: m test-art-host\nChange-Id: I66c623179363db77ce3019233903da96a659ce04\n"
    },
    {
      "commit": "5d3b002b9a244b5dc25fe97fedcb92851d9073f7",
      "tree": "46203949455b1087fe36158da75af3af3db127aa",
      "parents": [
        "ee5303f76ef167714a6a04d3abc502584ac5e103"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 31 10:36:31 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 05 10:57:39 2017 -0700"
      },
      "message": "ART: Change CanAssumeVerified to GetPreviousClassState\n\nReturn any stored class state instead of a bool to allow more\nrecognized states in the future.\n\nBug: 63467744\nBug: 65318848\nTest: m test-art-host\nChange-Id: Id097273a41e09ee77c8d53377ad9beb09104a944\n"
    },
    {
      "commit": "9fb1ab1f6bb58bdaccef78bc81b3202d0121e2ed",
      "tree": "f4ec9bb10a2191f4aa80b1ee40332071bed38bab",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 09:32:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 10:54:05 2017 -0700"
      },
      "message": "Revert \"Revert \"JVMTI Exception and ExceptionCatch events\"\"\n\nFixed error where we were incorrectly not updating a ShadowFrame\ndex_pc causing deoptimization errors.\n\nBug: 62821960\nBug: 65049545\n\nTest: ./test.py --host -j50\nTest: ./art/tools/run-libcore-tests.sh \\\n            --mode\u003dhost --variant-X32 --debug\n\nThis reverts commit 959742483885779f106e000df6dd422fc8657931.\n\nChange-Id: I91ab2bc3e645ddf0359c189b19a59a3ecf0d8921\n"
    },
    {
      "commit": "ee5303f76ef167714a6a04d3abc502584ac5e103",
      "tree": "7f414df9d48dda94872421de4192daf6ec731681",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 31 15:34:42 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 05 10:46:07 2017 -0700"
      },
      "message": "ART: Move Class::Status to ClassStatus\n\nMove the enum to its own file to lower include burden on others.\nThis is an intentionally small and localized change. Users will\nbe cleaned up in a follow-up.\n\nBug: 63467744\nBug: 65318848\nTest: m test-art-host\nChange-Id: If3bfe6953973e24623e78a2a8dcc69b50117aa3c\n"
    },
    {
      "commit": "1accd636dc90edef2878f0b8e2716b078379842e",
      "tree": "d45ed5c6e92f492de1bfd93eecca27694747c14a",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c",
        "cd87c3ee6fefc505010c795284cfc4bca076edf2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 05 17:10:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 05 17:10:45 2017 +0000"
      },
      "message": "Merge \"Clean up ImageHeader section getters.\""
    },
    {
      "commit": "cd87c3ee6fefc505010c795284cfc4bca076edf2",
      "tree": "074c0326206fe4a52dc8ebfa09657ef040d88022",
      "parents": [
        "39d44ba52b512cdfa7a0a2fccc7f77d28a15329e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:11:57 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:26:54 2017 +0100"
      },
      "message": "Clean up ImageHeader section getters.\n\nTest: m art-test-host-gtest\nTest: testrunner.py --host\nChange-Id: Iaea7ce6f9bc3ff3c6d9bb6fb598aa62333ebf30c\n"
    },
    {
      "commit": "c4be2c83907494acc0470647cd1eabed69b95739",
      "tree": "85bebf0fddc9894c54953953c5d8826f221de62a",
      "parents": [
        "c69f6c310b49f2a22b756b318e5d5703ef304f0e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 05 12:40:06 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 05 13:16:43 2017 +0100"
      },
      "message": "Handle the case cwd has a trailing slash.\n\nFixes class_loader_context_test.cc on target.\n\nTest: test-art-target-class_loader_context_text\nChange-Id: I54252c909075e09678bc389cb1f210cb0d55f2d9\n"
    },
    {
      "commit": "c69f6c310b49f2a22b756b318e5d5703ef304f0e",
      "tree": "5a3f318a4dece4cb6bc4d75fbcf1bed5edd41be7",
      "parents": [
        "f415065034013ec8a390b73a2777de6ca2f0fc2b",
        "7252738e5c8aa439e2c98e4b887c5eab20cd38c5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 04 23:31:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 04 23:31:49 2017 +0000"
      },
      "message": "Merge \"ART: Don\u0027t prepend \u0027/\u0027 if classpath_dir is empty\""
    },
    {
      "commit": "f415065034013ec8a390b73a2777de6ca2f0fc2b",
      "tree": "01d397bd6fdf62a9813548e45e0a348d1458a20d",
      "parents": [
        "788b8b27bc3e70ca210537c34d691c8d1fd5aea4",
        "dd309074fd4a6dc0dc275325b19670e24d64951d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 04 22:21:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 04 22:21:18 2017 +0000"
      },
      "message": "Merge \"ART: Enhance comment\""
    },
    {
      "commit": "7252738e5c8aa439e2c98e4b887c5eab20cd38c5",
      "tree": "dcc9bd905ca2035a91c9ede198f88cc48d9be169",
      "parents": [
        "788b8b27bc3e70ca210537c34d691c8d1fd5aea4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Sep 02 16:53:03 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 04 14:23:40 2017 -0700"
      },
      "message": "ART: Don\u0027t prepend \u0027/\u0027 if classpath_dir is empty\n\nWhen no classpath_dir is given, do not prepend \u0027/\u0027 to a relative\ndex location.\n\nAdd tests.\n\nBug: 65318303\nTest: m test-art-host-gtest-class_loader_context_test\nTest: m test-art-host\nChange-Id: Ib374815ce3fa9d67694f3a23037cd3b8eea35173\n"
    },
    {
      "commit": "788b8b27bc3e70ca210537c34d691c8d1fd5aea4",
      "tree": "9e71d900954a29f903eb297b0fb535e7d0b39f86",
      "parents": [
        "972c9a42b5901531129ad3b2be0dd48e1189ddfe",
        "821a2595e2438554424879d6cb3594810ca8e636"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 04 18:45:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 04 18:45:34 2017 +0000"
      },
      "message": "Merge \"Use real locations when opening dex files from the context\""
    },
    {
      "commit": "39d44ba52b512cdfa7a0a2fccc7f77d28a15329e",
      "tree": "25294b0af8bb6ce3ad73de552b59649583dc943d",
      "parents": [
        "0c277f2285621747046e4ca7988208aba5448927",
        "959742483885779f106e000df6dd422fc8657931"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:46:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 04 08:46:11 2017 +0000"
      },
      "message": "Merge \"Revert \"JVMTI Exception and ExceptionCatch events\"\""
    },
    {
      "commit": "959742483885779f106e000df6dd422fc8657931",
      "tree": "413cbb42607eb92012cfc20f7e0d32d0da3e9875",
      "parents": [
        "798eab03120f6189e8f6aa804d67af1b1d9f00b0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:45:51 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:45:51 2017 +0000"
      },
      "message": "Revert \"JVMTI Exception and ExceptionCatch events\"\n\nBreaks tests.\n\nBug: 62821960\nBug: 65049545\n\nThis reverts commit 798eab03120f6189e8f6aa804d67af1b1d9f00b0.\n\nChange-Id: Ie96903df06bbbe41f288f5b75a5114b142998fac\n"
    },
    {
      "commit": "0c277f2285621747046e4ca7988208aba5448927",
      "tree": "17092ada5f766d7b5ebab948eb1c387315480964",
      "parents": [
        "e883ebf05d29b85db2e1f343ee077ddb74eb9ed0",
        "b2c8fc62f4e7889300da2d26294537194e37b926"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:45:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 04 08:45:21 2017 +0000"
      },
      "message": "Merge \"Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\""
    },
    {
      "commit": "b2c8fc62f4e7889300da2d26294537194e37b926",
      "tree": "828a9a896619a8575bcf20a078f193df54354899",
      "parents": [
        "a0e0f103956fab23d1bfb08a69dadb0bc81d1a35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:44:51 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:44:51 2017 +0000"
      },
      "message": "Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\n\nBuilds on top of a change that breaks tests.\n\nThis reverts commit a0e0f103956fab23d1bfb08a69dadb0bc81d1a35.\n\nChange-Id: I6a35fc2f4a099e807b5ed81b93a3f9a8d8beeea2\n"
    },
    {
      "commit": "821a2595e2438554424879d6cb3594810ca8e636",
      "tree": "503ca61e77ef7cf4c115510c617b458a6ad42c95",
      "parents": [
        "3753bcdba6a36824195a749e7776d789714167e3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Aug 11 14:33:38 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 01 18:23:21 2017 -0700"
      },
      "message": "Use real locations when opening dex files from the context\n\nThe oat file assistant uses real locations when opening dex files which\nwill later be checked against the class loader context embedded in the oat\nfile. In order to guarantee a match we need to use real paths in the\ncontext as well.\n\nBug: 64460009\nTest: m test-art-host-gtest\nChange-Id: I1b564baa0c933172891a10a448ce1ef129be5ea2\n"
    },
    {
      "commit": "3753bcdba6a36824195a749e7776d789714167e3",
      "tree": "0e8b5943b044a93dbc50d74ee393d037e347d066",
      "parents": [
        "8db7e62464cb651cc8db5b55de73bf3c3b8b77e3",
        "a0e0f103956fab23d1bfb08a69dadb0bc81d1a35"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 01 19:09:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 01 19:09:45 2017 +0000"
      },
      "message": "Merge \"Make WatchedFramePop instrumentation event pure-virtual\""
    },
    {
      "commit": "a4336b84ba8d34aae7f66bb3d424a554fe03eddc",
      "tree": "17092ada5f766d7b5ebab948eb1c387315480964",
      "parents": [
        "e6c8e3caa4fddf3afb64081d3585cfd2320a632c",
        "798eab03120f6189e8f6aa804d67af1b1d9f00b0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 01 18:48:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 01 18:48:24 2017 +0000"
      },
      "message": "Merge \"JVMTI Exception and ExceptionCatch events\""
    },
    {
      "commit": "a0e0f103956fab23d1bfb08a69dadb0bc81d1a35",
      "tree": "9c4342297a37c3cfe22c69ef9f7d82f722006431",
      "parents": [
        "798eab03120f6189e8f6aa804d67af1b1d9f00b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:33:41 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:33:41 2017 -0700"
      },
      "message": "Make WatchedFramePop instrumentation event pure-virtual\n\nAll the other events are pure virtual but this one had an (empty)\ndefault implementation. Change the event to make it consistent with\nall the others.\n\nTest: Builds\nTest: Treehugger\nChange-Id: I3d81914d067b305f09d4072c443e5ac9027af443\n"
    },
    {
      "commit": "798eab03120f6189e8f6aa804d67af1b1d9f00b0",
      "tree": "828a9a896619a8575bcf20a078f193df54354899",
      "parents": [
        "9c4feaa082d8e8c00611a0657c3f80b1c1179a6f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 12:54:53 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:10:14 2017 -0700"
      },
      "message": "JVMTI Exception and ExceptionCatch events\n\nAdd support for the JVMTI can_generate_exception_events capability.\nThis includes the Exception and ExceptionCatch events and all their\nassociated behaviors.\n\nTest: ./test.py --host -j50\nBug: 62821960\nBug: 65049545\n\nChange-Id: I21cc8522c01033cdeb47bf34fa433bf04bf7ca5c\n"
    },
    {
      "commit": "dd309074fd4a6dc0dc275325b19670e24d64951d",
      "tree": "4d5c7222041fa52a99e6d43ecdb42cbcc83e6467",
      "parents": [
        "82a63734d3067ea0c96f8ba15bc40caaf798c625"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 31 07:47:37 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 31 07:47:37 2017 -0700"
      },
      "message": "ART: Enhance comment\n\nEnhance comment about ResolveClass instantation.\n\nAddresses comment for commit ae0b1f48ea9c65f946968cd99e34313cd2d43124.\n\nTest: m\nChange-Id: I6d2a2ad5eb938480b83a174a9f589e79ba6a0f52\n"
    },
    {
      "commit": "82a63734d3067ea0c96f8ba15bc40caaf798c625",
      "tree": "7e65d03a4533f21286cf68e66696bd0a7a54ef54",
      "parents": [
        "612c1f60befdef312c8d7b45c723ad350eee9529",
        "5c3e9d1f60607420bb52fa8c9230967b9d9ea248"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 31 12:44:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 31 12:44:54 2017 +0000"
      },
      "message": "Merge \"ART: Clean up checks in CheckProxyMethod().\""
    },
    {
      "commit": "612c1f60befdef312c8d7b45c723ad350eee9529",
      "tree": "edddf71c0d91d46bdff6970ce92f2d459e385309",
      "parents": [
        "80f2a3577ab09fa31f71d898ddc5d79d76bfb6dd",
        "ae0b1f48ea9c65f946968cd99e34313cd2d43124"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 31 04:02:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 31 04:02:52 2017 +0000"
      },
      "message": "Merge \"ART: Instantiate templated functions\""
    },
    {
      "commit": "80f2a3577ab09fa31f71d898ddc5d79d76bfb6dd",
      "tree": "9a3e89ecf06cb43fdcbf017f6e1c0f2e5f2413bb",
      "parents": [
        "d317442147bd004b899a1d2f70365c7cd5615ebd",
        "61200a0b32ab6ad93b5cbfb36a3aab599781ac94"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 31 02:21:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 31 02:21:33 2017 +0000"
      },
      "message": "Merge \"Verify the checksum before DCHECKS in  ProfileCompilationInfo::GetOrAddDexFileData\""
    },
    {
      "commit": "ae0b1f48ea9c65f946968cd99e34313cd2d43124",
      "tree": "25ad4c1cd09e9a9abc7c04e787ef47f6cb960419",
      "parents": [
        "fa830aa33e767420dcf705beb18c458df702502b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 17:36:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 17:39:16 2017 -0700"
      },
      "message": "ART: Instantiate templated functions\n\nFollow-up to commit 98be1a9d7280f82e533bc02d2df564da4c8f73a0.\nHopefully fixes the Mac build.\n\nTest: m\nChange-Id: Id92ce77fa452bb7da1e84f9d7ef151702da86a23\n"
    },
    {
      "commit": "61200a0b32ab6ad93b5cbfb36a3aab599781ac94",
      "tree": "2510e5c640510d07c3be60ccbd206a5a0f1343a3",
      "parents": [
        "cdf659e4b282b78f7f497545a7f16fcfa5c89f28"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Aug 30 16:29:41 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Aug 30 16:29:41 2017 -0700"
      },
      "message": "Verify the checksum before DCHECKS in  ProfileCompilationInfo::GetOrAddDexFileData\n\nTest: Succefully booted a sailfish device with libartd\nBug: 63631414\nChange-Id: If649fe95437860a937bb625945b0f5115a18c7a5\n"
    },
    {
      "commit": "9c4feaa082d8e8c00611a0657c3f80b1c1179a6f",
      "tree": "413cbb42607eb92012cfc20f7e0d32d0da3e9875",
      "parents": [
        "cdb15e45ce283104a801b6ade0a5a3c4aca9c667",
        "629be51a9d4c2be648adb509af24091f314bbc33"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 30 22:45:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 22:45:56 2017 +0000"
      },
      "message": "Merge changes I36396394,I00aa37f5,Ibc14b003\n\n* changes:\n  ART: Redo verification on class resolution failure\n  ART: Don\u0027t check access for method parameters\n  ART: Redo verification on field resolution failure\n"
    },
    {
      "commit": "d0b08252a508ad86780e494462cbf005718f1c2b",
      "tree": "287a875ee7b67dad162c67db51b97ba1fb8de6b3",
      "parents": [
        "cdf659e4b282b78f7f497545a7f16fcfa5c89f28",
        "d704f0b4414fc1bd4f0be4ac615386ae9ed8bfd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 30 19:58:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 19:58:56 2017 +0000"
      },
      "message": "Merge \"Profman: Use method_percentage and class_percentage values passed for generating profiles\""
    },
    {
      "commit": "629be51a9d4c2be648adb509af24091f314bbc33",
      "tree": "857f95a7d140e3eb7d8145e42935c29edec53b1f",
      "parents": [
        "98be1a9d7280f82e533bc02d2df564da4c8f73a0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 25 17:09:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 11:37:16 2017 -0700"
      },
      "message": "ART: Redo verification on class resolution failure\n\nDuring compile-time verification, when a class needs to be resolved\nand access to that class checked, if we can\u0027t resolve the class,\ndo a conservative access check and post an ACCESS_CLASS failure, if\nnecessary. This will trigger a re-verification at runtime, when the\nclass should be available.\n\nFix an invoke-polymorphic test to not trigger dead code. Fix method\nexpectations in verifier_deps_test.\n\nBug: 64681719\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: I3639639476f6938e10df1b0dac4545fe841a6ad2\n"
    },
    {
      "commit": "98be1a9d7280f82e533bc02d2df564da4c8f73a0",
      "tree": "5e9e0ad0e721023742fe3433e413023bee583953",
      "parents": [
        "7da4c401614344e3274434a242b8231126b17981"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 28 08:25:45 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 11:37:16 2017 -0700"
      },
      "message": "ART: Don\u0027t check access for method parameters\n\nRename ResolveClassAndCheckAccess to ResolveClass and add a CheckAccess\ntemplate parameter. Do not check access when checking the signature of\nthe method to be verified. A parameter itself is not an access and would\nnot trigger an IllegalAccessError. So only check on actual usage.\n\nBug: 64681719\nTest: m test-art-host\nChange-Id: I00aa37f5fb097b37e267bd4332638fa3092b4fe9\n"
    },
    {
      "commit": "7da4c401614344e3274434a242b8231126b17981",
      "tree": "d06f9db0b42bb2d9f4886cf15f418af341dbe212",
      "parents": [
        "8ef4b6121ea496d38c0b8aeebad3f1227f819b17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 25 11:30:48 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 11:35:19 2017 -0700"
      },
      "message": "ART: Redo verification on field resolution failure\n\nWhen compile-time verifying a field PUT and the field cannot be resolved,\nthe verification must be redone at runtime to ensure the field is not\nfinal. Post an ACCESS_FIELD error.\n\nAn example is\n\n  dex file A:\n    class A {\n      {\n         B b \u003d new B();\n         B.final_field \u003d 12345; // illegally modify final-after-new\n       }\n    }\n\n  dex file B:\n    class B {\n      final int final_field \u003d 0;\n    }\n\nwhen A is compiled without B.\n\nBug: 34966607\nBug: 64681719\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: Ibc14b003288f7acf3c865fcdef54a6d9ed4ac867\n"
    },
    {
      "commit": "cdf659e4b282b78f7f497545a7f16fcfa5c89f28",
      "tree": "6f6363b6dcd931e3f800a2fa7bdd9a2e92d095e1",
      "parents": [
        "fadbbe67898214d105945ec242d7f22ffdd8548b",
        "afbbf18c769324a8b2b4644cd7d3fbee43f472e6"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Aug 30 18:16:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 18:16:20 2017 +0000"
      },
      "message": "Merge \"Merge profiles without needing to creating profile_compilation_info object\""
    },
    {
      "commit": "5c3e9d1f60607420bb52fa8c9230967b9d9ea248",
      "tree": "896d3480f1fb992f78c3ecba8f221e2c94eb6fbf",
      "parents": [
        "80be041454871a9b72c39790a10954595d721a63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 30 16:43:54 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 30 18:31:06 2017 +0100"
      },
      "message": "ART: Clean up checks in CheckProxyMethod().\n\nThe non-proxy method, `np`, is always the same as the\n`prototype`, so it\u0027s not really worth comparing their\nmembers. That\u0027s been the case since\n    https://android-review.googlesource.com/148090 .\n\nWe\u0027ve see the comparison of the return type hit a CHECK()\nfailure for ObjPtr\u003c\u003e cookie. This can happen since\n    https://android-review.googlesource.com/431679\nif the return type is evicted from the DexCache and we go\nthrough the slow path.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 30627598\nChange-Id: I11f9ea86326be6ef9043ac5f170d74165ac11343\n"
    },
    {
      "commit": "80be041454871a9b72c39790a10954595d721a63",
      "tree": "19e23b45ff88c0b9639b873eba959c1cfec5e34a",
      "parents": [
        "8ef4b6121ea496d38c0b8aeebad3f1227f819b17",
        "5122e6ba34d46851cd89f2ad55bf6bb067e038d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 30 13:47:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 13:47:46 2017 +0000"
      },
      "message": "Merge \"ART: Remove ArtMethod::dex_cache_resolved_methods_.\""
    },
    {
      "commit": "8ef4b6121ea496d38c0b8aeebad3f1227f819b17",
      "tree": "37847d1e1637ecf43cc11017c03f6cd626769311",
      "parents": [
        "8ee58600c368b7b00e54aff09c575d4e2904316e",
        "07c7028e518b98d3267a77dfe0d149db1adbe858"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 30 09:49:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 09:49:52 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\"\""
    },
    {
      "commit": "07c7028e518b98d3267a77dfe0d149db1adbe858",
      "tree": "71fbc9572541cdf08c21c88e3a1d5ff92f1d9885",
      "parents": [
        "047abb20d02546d3dd6e8630befc31e5568fa90e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 30 08:09:42 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 30 08:09:42 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\"\n\nBug: 33616143\n\ndeopt string test still failing on occasion.\n\nThis reverts commit 047abb20d02546d3dd6e8630befc31e5568fa90e.\n\nChange-Id: I89fc28696290da52317d0e3dd07ecf0d1bdac823\n"
    },
    {
      "commit": "afbbf18c769324a8b2b4644cd7d3fbee43f472e6",
      "tree": "8ef5db82731ee396c8538447852f655a37524e7b",
      "parents": [
        "70f94cace70be42861ba0a433cfe4bdf6c892f7c"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Aug 04 14:33:34 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Aug 29 17:38:08 2017 -0700"
      },
      "message": "Merge profiles without needing to creating profile_compilation_info object\n\nTest: profile_compilation_info_test, profile_assistant_test\nBug: 62040955\nChange-Id: I4c4df10e0d69877fd72da94211091d749fb3a8e8\n"
    },
    {
      "commit": "8877f4cc9a0dcfd08eef259bafea7e5b08fd1fc7",
      "tree": "9c4ae2153c70c0089e2ceda3a1816df658d7232d",
      "parents": [
        "31a8a8988d8461dd88fe2071732f84107bc68a97",
        "e814f9d09c0fb1b678e610780d11ce3577db3599"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 29 23:58:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 29 23:58:56 2017 +0000"
      },
      "message": "Merge \"JVMTI NotifyFramePop support\""
    },
    {
      "commit": "e814f9d09c0fb1b678e610780d11ce3577db3599",
      "tree": "fd0aeecb079c0e2383d73907410c831f3e172779",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 31 16:14:39 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 29 14:52:11 2017 -0700"
      },
      "message": "JVMTI NotifyFramePop support\n\nAdds support for the JVMTI can_generate_frame_pop_events capability.\nThis includes the NotifyFramePop function and the FramePop event.\n\nWe mark the interpreter shadowframes directly to get the events. This\nrelies on the fact that we never replace extant shadow-frames on the\ninterpreter stack to ensure that we can distinguish which jvmti-envs\nrequested the frame pops.\n\nTest: ./test.py --host -j50\nBug: 34414072\nBug: 62821960\nBug: 65129403\n\nChange-Id: I6e79e39f62fdf79268540c5c1be6311df704cff7\n"
    },
    {
      "commit": "150d25df5d75d55735b0ec49305784e5dc83cce6",
      "tree": "2eb311a83cb101620c0acc08901e114d8a5835e3",
      "parents": [
        "8920835161a359ce45250d04890bb054a3832977"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 28 09:52:55 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 29 13:17:09 2017 -0700"
      },
      "message": "Enable dex madvise hints for low ram devices\n\nEnable layout based madvise hints for low ram devices.\n\nReduces flash reads by 40% for AUPT use cases on low ram devices.\n\nTest: build and flash\nBug: 63178181\n\n(cherry picked from commit 63199d75a146cbcac1cbcac944cf054524ca8848)\n\nChange-Id: Ica0abc10b8356fbd7ab38a71df91c2da74bf505b\n"
    },
    {
      "commit": "5122e6ba34d46851cd89f2ad55bf6bb067e038d6",
      "tree": "e96ba37b6451be7a06d930b0274251cac35ce05e",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 16:10:09 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 29 11:29:31 2017 +0100"
      },
      "message": "ART: Remove ArtMethod::dex_cache_resolved_methods_.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Repeat the above tests with ART_HEAP_POISONING\u003dtrue\nTest: Build aosp_mips64-eng\nChange-Id: I9cd0b8aa5001542b0863cccfca4f9c1cd4d25396\n"
    },
    {
      "commit": "02cb397857c979dffae95e2db2678a72ec407cf0",
      "tree": "61d5102c24412f9057a9b45dbfb14605268e692e",
      "parents": [
        "0b5cb35e40901303a4d4283722025d20f2e68e17",
        "4ec507da329e2ca148e01f19306b12e8a95571bc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 28 18:21:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 28 18:21:21 2017 +0000"
      },
      "message": "Merge \"Only MADV_RANDOM for low RAM devices\""
    },
    {
      "commit": "4ec507da329e2ca148e01f19306b12e8a95571bc",
      "tree": "4a234065794ad56652314578fae08329f11e42e0",
      "parents": [
        "5575513f1529ea43371a6d4d9a495b57e7d68409"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 15 15:21:40 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 28 09:49:02 2017 -0700"
      },
      "message": "Only MADV_RANDOM for low RAM devices\n\nAdded logic to do MADV_RANDOM only for low ram devices since this\nhurts performance on high end devices.\n\nTest: build and flash\nBug: 63178181\n\n(cherry picked from commit 72662a63a7fe2ff2e096017628af1a89fdd7a5ca)\n\nChange-Id: I8f73a9b3d0133963fb709b1fa6491931f535a1b5\n"
    }
  ],
  "next": "0b5cb35e40901303a4d4283722025d20f2e68e17"
}
