)]}'
{
  "log": [
    {
      "commit": "a2cbb2b0723a3fa05cc44e13cbe90543b3236883",
      "tree": "1db9efcd8bcece516b6f5cbb48cf5f00ba7c1796",
      "parents": [
        "62540e3cc58abde95e147210d584614651d858b5",
        "e5179ce0ca8becf34ba6e7b2f3988874fe647c26"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 31 22:29:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 31 22:29:21 2017 +0000"
      },
      "message": "Merge \"Revert \"Prevent races with GC when transferring objects between threads\"\""
    },
    {
      "commit": "e5179ce0ca8becf34ba6e7b2f3988874fe647c26",
      "tree": "6d1bad18374493e2e85f715a575dea65f1725317",
      "parents": [
        "7585b91bfc77b8e4b821ccfa716fa86e46455275"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 31 22:28:11 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 31 22:28:11 2017 +0000"
      },
      "message": "Revert \"Prevent races with GC when transferring objects between threads\"\n\nThis reverts commit 7585b91bfc77b8e4b821ccfa716fa86e46455275.\n\nReason for revert: Seems to be causing fatal error: \n  Checkpoint flag set without pending checkpoint\n\nChange-Id: I98ea653e629d73e854907115583afed3ed5ac68e\nTest: None.\nBug: 67838964\n"
    },
    {
      "commit": "62540e3cc58abde95e147210d584614651d858b5",
      "tree": "1ceacf74b8aa3980d8c0b03a757c9eb9d3b94330",
      "parents": [
        "a877fa31eadeebb481122bbd444f9c3816a35369",
        "7585b91bfc77b8e4b821ccfa716fa86e46455275"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 31 15:43:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 31 15:43:09 2017 +0000"
      },
      "message": "Merge \"Prevent races with GC when transferring objects between threads\""
    },
    {
      "commit": "7585b91bfc77b8e4b821ccfa716fa86e46455275",
      "tree": "b37517925ac9ab701cbae7f446dc8bb624ddd492",
      "parents": [
        "0d2b2ad6cd9ca650d7a3f85a42afaf518cbfa4e0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 30 15:33:58 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 30 16:16:41 2017 -0700"
      },
      "message": "Prevent races with GC when transferring objects between threads\n\nWe could have races with the GC when JVMTI code transfers a local\nreference from one thread to another. This race would happen if a GC\nwas currently underway causing an unmoved reference to be transferred\nto a thread that has already fixed up all of its references. This\nmeant that the receiving thread would now have a reference belonging\nto the from-space on its stack.\n\nThis could cause memory errors and CHECK failures.\n\nTo fix this we make sure to run all checkpoints where local references\nmight be transferred in a GC-critical-section.\n\nWe also needed to fix a too-strict check in the method verifier where\nwe were incorrectly asserting that suspension be allowable when in\nfact it was not necessary in all cases.\n\nTest: ./test.py --host -j50\nBug: 67838964\n\nChange-Id: Ib9166cc233d3c1b488864c0aff33246a3f99e436\n"
    },
    {
      "commit": "af7c9028905ccc0bb876e07dbe06921a80be9ebd",
      "tree": "53d7b80fb299e0a34b9951610740935f6f3ca802",
      "parents": [
        "460e09c5a5a09937825fe101d260d5c917144369"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 27 09:42:46 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 30 16:12:55 2017 -0700"
      },
      "message": "Fix DexInstructionIterator overrun bug\n\nHandle cases where the dex instructions can go past the end of the\ncode item in dexlayout.\n\nSince dexlayout runs before method verification, we need to be\ncareful to not go past the end of the code item.\n\nAdded test.\n\nBug: 67104794\nTest: test-art-host\n\nChange-Id: Idf7d51344659b2c75207bdf444e39f271feb8d3a\n"
    },
    {
      "commit": "69d310e0317e2fce97bf8c9c133c5c2c0332e61d",
      "tree": "fba05a1530e6fc4a2e6950303c1f7c6b0ffbb936",
      "parents": [
        "e764d2e50c544c2cb98ee61a15d613161ac6bd17"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 09 14:12:23 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 11 09:44:26 2017 +0100"
      },
      "message": "Use ScopedArenaAllocator for building HGraph.\n\nMemory needed to compile the two most expensive methods for\naosp_angler-userdebug boot image:\n  BatteryStats.dumpCheckinLocked() : 21.1MiB -\u003e 20.2MiB\n  BatteryStats.dumpLocked(): 42.0MiB -\u003e 40.3MiB\nThis is because all the memory previously used by the graph\nbuilder is reused by later passes.\n\nAnd finish the \"arena\"-\u003e\"allocator\" renaming; make renamed\nallocator pointers that are members of classes const when\nappropriate (and make a few more members around them const).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 64312607\nChange-Id: Ia50aafc80c05941ae5b96984ba4f31ed4c78255e\n"
    },
    {
      "commit": "e764d2e50c544c2cb98ee61a15d613161ac6bd17",
      "tree": "112aa7ca459d2edb4f800897060a2407fcc622c7",
      "parents": [
        "ca6fff898afcb62491458ae8bcd428bfb3043da1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 05 14:35:55 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 09 10:39:22 2017 +0100"
      },
      "message": "Use ScopedArenaAllocator for register allocation.\n\nMemory needed to compile the two most expensive methods for\naosp_angler-userdebug boot image:\n  BatteryStats.dumpCheckinLocked() : 25.1MiB -\u003e 21.1MiB\n  BatteryStats.dumpLocked(): 49.6MiB -\u003e 42.0MiB\nThis is because all the memory previously used by Scheduler\nis reused by the register allocator; the register allocator\nhas a higher peak usage of the ArenaStack.\n\nAnd continue the \"arena\"-\u003e\"allocator\" renaming.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 64312607\nChange-Id: Idfd79a9901552b5147ec0bf591cb38120de86b01\n"
    },
    {
      "commit": "ca6fff898afcb62491458ae8bcd428bfb3043da1",
      "tree": "195a6b16d3a4b34acc2faf91ce56f448efb15e07",
      "parents": [
        "aa7273e56fbafc2692c8d20a31b50d2f4bdd2aa1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 03 14:49:14 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 06 17:53:50 2017 +0100"
      },
      "message": "ART: Use ScopedArenaAllocator for pass-local data.\n\nPasses using local ArenaAllocator were hiding their memory\nusage from the allocation counting, making it difficult to\ntrack down where memory was used. Using ScopedArenaAllocator\nreveals the memory usage.\n\nThis changes the HGraph constructor which requires a lot of\nchanges in tests. Refactor these tests to limit the amount\nof work needed the next time we change that constructor.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Build with kArenaAllocatorCountAllocations \u003d true.\nBug: 64312607\nChange-Id: I34939e4086b500d6e827ff3ef2211d1a421ac91a\n"
    },
    {
      "commit": "2e59994c3c586d8b753e4b14a94c81bce3dba1a9",
      "tree": "ab749ce709732821c7c00c81eb76afef032fd888",
      "parents": [
        "865a0503515f78611dce103bd04b7c66c051d304"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 22 16:17:41 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 02 16:08:18 2017 +0100"
      },
      "message": "ART: support for const-method-{handle,type}\n\nAdds support for const-method-handle and const-method-type bytecodes.\n\nBug: 66562269\nTest: art/test/run-test --host 979\nTest: art/test/dexdump/run-all-tests\nChange-Id: I812eaf0f2439d6126b4287483fe2348366cacf90\n"
    },
    {
      "commit": "cfcc9cfb44bab79f7381bcc4bfd9bf2d4435f734",
      "tree": "6637daf0cde4f14afd02793ad268f22f9257bd4c",
      "parents": [
        "f67f115423c9ef5aa62a33c12670cd8f89457c9c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 29 15:07:27 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Oct 01 12:08:08 2017 +0100"
      },
      "message": "ART: Increase the number of potential instrinsics\n\nThe new limit is 256 intrinsics.\n\nAdds additional sanity checks.\n\nAvoids setting the kAccPreviouslyWarm bit for intrinics (defaults to\ntrue).\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I33ea67c9b6b8500b3ceb8a085358f075f6fcbb82\n"
    },
    {
      "commit": "d7559b7b9da5ee839b8f21fc8d6e3e9ae5c573f7",
      "tree": "f8cabe1440bd9910932ea73a1df7a35be343f909",
      "parents": [
        "6e7e0ddf1dda35570cd9ed23751d9306f7353d7f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 28 13:50:37 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 28 14:06:53 2017 +0100"
      },
      "message": "Clean up DexInstuctionIterator.\n\nFollow-up to\n    https://android-review.googlesource.com/493297 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 63756964\nChange-Id: I454a748858e54f7ddfc54f631d7cd97d63557aff\n"
    },
    {
      "commit": "1d2d4ff8570bb88d9d2d4633706fd7f6fb18d75e",
      "tree": "cbe67e8e9214828656314117121e8ce906a762ab",
      "parents": [
        "e5b35ed787fbfb388d162361310bae5b0e7682a7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Sep 23 16:11:06 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 27 11:51:53 2017 -0700"
      },
      "message": "Add DexInstructionIterator and use it a few places\n\nMotivation:\nWant to start abstracting away dex specific functionality to enable\nCompactDex. Adding an iterator will enable CompactDex iteration to\nwork differently than normal dex iteration.\n\nWill eventually replace CodeItemIterator.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I90e67c1a994b7698aaac0523a82816b0a003fbdc\n"
    },
    {
      "commit": "3c683150bcf2f1cabbe2e5f9d10d8c670b67fb7e",
      "tree": "c895af9e725c3b20a195cf7009f5e3e52a09854a",
      "parents": [
        "b92384853a8203b5936694c056515576e06fc435",
        "1cda7c2126d655cc9936c782f9dd33ec37b7f196"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 20 08:59:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 20 08:59:24 2017 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Remove workaround in verifer after Jack update.\"\""
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\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": "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": "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": "1cda7c2126d655cc9936c782f9dd33ec37b7f196",
      "tree": "24ed20c4687f3d92d3f990d688c70b781f18d706",
      "parents": [
        "1d2d8b1b6b359f5f476ef78662baa4b8782be530"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Aug 10 13:06:45 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Aug 10 13:06:45 2017 +0100"
      },
      "message": "Revert^2 \"ART: Remove workaround in verifer after Jack update.\"\n\nThis reverts commit 7f7a074875114d0376923460948eb94eabaffe29.\n\nBug: 33099829\nTest: art/test.py --host\n"
    },
    {
      "commit": "9a19be9c170e094c3e5ef991d018b476008112c5",
      "tree": "ae06eca8b9d612108cd1aad8004ab903f0db35ea",
      "parents": [
        "f95d95ef0bff7f19640716d5a7895f7571ef0d55",
        "afb664701734c6edbea07431382ee33f1677d42b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 03 15:11:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 03 15:11:36 2017 +0000"
      },
      "message": "Merge \"Fix verifier checks on interface methods.\""
    },
    {
      "commit": "afb664701734c6edbea07431382ee33f1677d42b",
      "tree": "bd67954a08efb59e7bee75dfe46d1230abe4443b",
      "parents": [
        "7f14c2ec37c70010d99cab6806d85018df56c555"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 01 09:54:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 02 14:58:10 2017 -0700"
      },
      "message": "Fix verifier checks on interface methods.\n\nWe were disallowing interfaces in the IsInheritedMethod even though\nthe function can be called with them. This could cause some failing\nDCHECKS if the verifier cannot find methods in some situations.\n\nWe also fixed a small issue in the verifier where we allowed\nnon-public java.lang.Object methods to be considered valid for\ninterface dispatch.\n\nTest: ./test.py --host -j50\nTest: Compile an app with bad bytecodes (See bug)\nBug: 64158483\nBug: 64274113\nChange-Id: Ia79f25be0001efc4069a411a0b34476bd0871803\n"
    },
    {
      "commit": "bf755fefbfcfbb2677a519c12efe7890f3879854",
      "tree": "b8554c85e812d38a49f93fcbc1c760c35a5cbbff",
      "parents": [
        "951853a68554d1bc5f50980194f1686cb5f41d83"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 01 13:42:56 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 02 09:35:21 2017 -0700"
      },
      "message": "Fix verifier deps determinism\n\nPreviously, the unverified_classes were not deterministic since\nthey were represented as a vector. This CL moves it to a set and adds\na regression test.\n\nBug: 63467744\nTest: test-art-host\n\nChange-Id: I891254a927228b1dc4d8e1c65d5e99ae58b854ea\n"
    },
    {
      "commit": "72041a0dcb5b7c133b79a1d6783a23039f2136bd",
      "tree": "8de4326eff202726c1ab893c536190aba87334be",
      "parents": [
        "9ce960ab2b4c789ad364ad96ec5c660c60e4f90c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 14 18:23:25 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 28 17:09:39 2017 -0700"
      },
      "message": "Use class unloading in dex2oat for verify and extract\n\nUnload the main classloader in between each dex file compilation to\nreduce RAM. This frees the whole java heap and associated linear\nallocs. This is only used for quickening since filters that do\ncompilation may require loaded classes in the compiler and oat\nwriter.\n\nThis reduces dex2oat peak PSS for compiling a large app from 196MB\nto 135MB.\n\nOnly works for verify and extract since the current approach is\nincompatible with oat writer patching. b/63911263\n\nAdded a verification override that reads the compiled class status\nto avoid ever verifying classes that were quickened (since this\nis not supported and causes failures).\n\nThere is still some duplicated verification for some class with\nsuperclasses in other dex files.\n\nSupport for quicken will be added in a follow up CL.\n\nBug: 63467744\nTest: test-art-host\nTest: test/testrunner/testrunner.py --interpreter --host -j40\nChange-Id: Id0e4f84eb5db91d6143f752b498f4832a5b25b6e\n"
    },
    {
      "commit": "b45528c1f1b83ca8c970f439b54fbfcfda6908ea",
      "tree": "e8f493a7b21064d353d112ea1378d7819db385aa",
      "parents": [
        "2c2e13ec24bff70db6e49270b9d4d787add9925e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 14:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 15:30:47 2017 +0100"
      },
      "message": "ART: Refactor retrieval of types through ArtMethod.\n\nSplit Get*() functions that take a \"bool resolve\"\nargument into Lookup*() and Resolve*() functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I0b7eaa1fadc2ffa8c0168203790467f91a126963\n"
    },
    {
      "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": "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": "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": "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": "631827d9b200c93f24816c6869d72426f9fed8e3",
      "tree": "9d5d768df39e21a2678d4b9148c5ec4d1c016911",
      "parents": [
        "d64fbfa3471c47d6628d6014bc4a3ac780abd26a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 10 14:53:47 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 04 11:57:13 2017 +0100"
      },
      "message": "Fixes for constant method handles\n\nAdd support for constant direct and interface method handles in the\nDEX file.\n\nAdd error handling for field and method resolution failures in\nClassLinker::ResolveMethodHandle().\n\nBug: 36957105\nTest: art/test/run-test --host 952-invoke-custom-kinds\nChange-Id: I91a2a23ba3365310eccb8cadd193b62f57e5811c\n"
    },
    {
      "commit": "e17cf243978ca7f5356e746ee460f0fcf04e04a6",
      "tree": "e8ad423bf1dee5756fec451ba22db749ed4f5472",
      "parents": [
        "2bc159ebd1115f71d80639e47fc38663aa84ba4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:05:51 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:11:12 2017 -0700"
      },
      "message": "Add field/method skipping helper functions to DexFile\n\nSpecifically added SkipStaticFields, SkipInstanceFields,\nSkipAllFields, SkipStaticMethods, and SkipVirtualMethods.\n\nAlso applied the helpers to the code base.\n\nTest: test-art-host\nChange-Id: Idda77f9a6e2564c2e588d2bbe11cc320063fdb32\n"
    },
    {
      "commit": "5678db5b3a0275d04bc610236f89fac9f76b5b1e",
      "tree": "efc4ffe5d59a0c6c5f4c15a886459962d24de4aa",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "message": "ART: Refactor bit_utils and stl_util\n\nMove iterator code from bit_utils.h into bit_utils_iterator.h. Move\nIdentity into stl_util_identity.h. Remove now unnecessary includes,\nand fix up transitive users.\n\nTest: m\nChange-Id: Id1ce9cda66827c5d00584f39ed310b6b37629906\n"
    },
    {
      "commit": "57cf00bde719ddc84a6015b107b90a20169e3099",
      "tree": "1522952470490e6b107d07649f511ef09f9abd32",
      "parents": [
        "40c6710dfa0d10d34dcca8ed92c214faba36c833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:15:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 18:29:04 2017 -0700"
      },
      "message": "ART: Remove old object_callbacks.h includes\n\nRemove unused includes.\n\nTest: m\nChange-Id: I70c227d32c6900904e186b975d1f2131b718d93d\n"
    },
    {
      "commit": "542bbf760b4f0b94e1e93ddad3e4d8d318705ab6",
      "tree": "40db8c70268c6eb6cfcc10a0bc16a65e8d0b7b28",
      "parents": [
        "0fd04a8b3ccde0c0bc17d8845a336207ec19c66e",
        "bf1cb77aa155d53808b4f65bac34deb3ce4bbf6d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 02 23:21:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 23:21:19 2017 +0000"
      },
      "message": "Merge \"ART: Use templates for VerifyInstruction\""
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "726e1793d3f54470705e5b84e7860074e029b0ed",
      "tree": "858cbf9048dff655b878a8f17d8640bbd22c757b",
      "parents": [
        "b28f07bf1058f9138322d9391d914c5763ce53a1",
        "2af99028f508071d5cd056e4ea42e988e0b83e79"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 31 00:58:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 31 00:58:07 2017 +0000"
      },
      "message": "Merge changes I282b25a3,I297f0ad4,I052ac9f7\n\n* changes:\n  ART: More header cleanup - class_linker.h\n  ART: More header cleanup - runtime.h\n  ART: More header cleanup - jni_internal.h\n"
    },
    {
      "commit": "413d0bec8015525ec15b57ced821b4aa049cf067",
      "tree": "abb9d571d2c0c911133f982517ba255445c5fd06",
      "parents": [
        "667ce5f52ec77021b3891501c352e43dec4bc06e",
        "29e814295e363bebd155a51d5bfdc9281099bdff"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 30 23:30:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 30 23:30:55 2017 +0000"
      },
      "message": "Merge \"ART: Add some UNLIKELY in the verifier\""
    },
    {
      "commit": "d482e73fe26cb9161511a80e3db39e08b9808ab6",
      "tree": "0b8c874f24c211e4e3d87083f8017580aa23ff63",
      "parents": [
        "a14100ccf51cc63a5c472188d1e2d337627e49eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 17:59:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 16:26:35 2017 -0700"
      },
      "message": "ART: More header cleanup - runtime.h\n\nRemove unnecessary runtime.h includes. Refactor other headers\n(move to forward declarations) to make this possible.\n\nTest: mmma art\nChange-Id: I297f0ad444ba92169edd16d8c7cbe95bb6dbb800\n"
    },
    {
      "commit": "bf1cb77aa155d53808b4f65bac34deb3ce4bbf6d",
      "tree": "bc134f3cc9117314ea87557d4e5c7ca44dc470da",
      "parents": [
        "29e814295e363bebd155a51d5bfdc9281099bdff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 15:39:00 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:29:54 2017 -0700"
      },
      "message": "ART: Use templates for VerifyInstruction\n\nUse a template parameter instead of an explicit one.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: If0c21a8b902428456e445728afd443f0c88588df\n"
    },
    {
      "commit": "29e814295e363bebd155a51d5bfdc9281099bdff",
      "tree": "b55b96e92a44fe75586fa01f536c9a06316aa376",
      "parents": [
        "1171deea4cb2f2db67a310ea8797d06206b2bdea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 16:29:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:29:54 2017 -0700"
      },
      "message": "ART: Add some UNLIKELY in the verifier\n\nHint to the compiler that we assume that dex code is well-formed.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: If04a8392c7160747cd57da38ca785cdc18212d55\n"
    },
    {
      "commit": "deae7db5864fa50c5a1cd6c232a17aeb986b36e1",
      "tree": "cdedad3d0f921e4f82fa7b65d55820455b7ac0ea",
      "parents": [
        "8d01c3708c4becb186979ed9377aed0fc2954d06"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 09:56:41 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:15:50 2017 -0700"
      },
      "message": "ART: Add missing namespace comments\n\nAdd closing namespace comments.\n\nBug: 32619234\nTest: m\nChange-Id: I1f50e09dcd1038c4b540b87e5c19e319c1f592e4\n"
    },
    {
      "commit": "42ae05ad52179089674f7373b9e7de1244240b48",
      "tree": "05f790bc369ea04f4f88c87af65d16a99b181895",
      "parents": [
        "536e54a6af85127d7f17037360deb08e0a7dc4eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 16 09:31:37 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 16 18:25:31 2017 -0700"
      },
      "message": "ART: Improve RegType::IsAssignableFrom\n\nChange the chained if-else-if to a switch by introducing an\nAssignmentType enum and corresponding getter in RegType.\n\nReduces instruction count from 39.4B to 39.3B and branch count\nfrom 9.6B to 9.5B when compiling a well-known large app with\nthe verify compiler filter.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: I2d72df78f281715015829ff555a3c4c2446c03be\n"
    },
    {
      "commit": "74979b1a78a6d66fbdcf0545f17004cced69f196",
      "tree": "59d2f91930470998f20021378da903587570217b",
      "parents": [
        "b3937e31102538baf27a6e9088638c5e3ff1ca34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 16 09:28:06 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 16 09:54:22 2017 -0700"
      },
      "message": "ART: Add UNLIKELY in verifier\n\nINVOKE_POLYMORPHIC is unlikely, at this point. Perf shows compiler\noptimizations assuming the branch is taken.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: I161327d5c0399de75ff3fc79fa4d762cadbffe20\n"
    },
    {
      "commit": "1189516011d310c3d1aed469dd592ad2535f4921",
      "tree": "d819e8e8565aff6702c749d9a80861f96f6d5d35",
      "parents": [
        "ae08cc2c29f40d5028303390325d991b28a50d8a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:25:02 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:58:01 2017 -0700"
      },
      "message": "ART: Cache AoT state in verifier\n\nCache the runtime-only-instruction flag instead of computing it for\nevery single instruction.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: I417260ddf73ac714083609b292f036c28227a0b2\n"
    },
    {
      "commit": "e05cc662505e13f0c29e777bd99b7f49db9c670b",
      "tree": "fa094ed3b9e8340fc1bf48538b49be343e5c66c7",
      "parents": [
        "6fb693a39b263af3e62b97f8d9f2c2289cab3c1a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:17:30 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:57:33 2017 -0700"
      },
      "message": "ART: Add experimental constexpr\n\nAdd a constexpr flag to bypass a branch in the verifier when there\nare no experimental dex instructions. Guarantee the value with\nstatic_asserts.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: Ib77b6142c4d2debe4b4d4fec60c02d92b1e7349f\n"
    },
    {
      "commit": "6fb693a39b263af3e62b97f8d9f2c2289cab3c1a",
      "tree": "59487355e5e81ae552c0f00ab36f8eb16bac25a6",
      "parents": [
        "ed00ddb614d68559931d831cb74d3ba8f01599c9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 08:49:45 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:25:32 2017 -0700"
      },
      "message": "ART: Delete dex_instruction_visitor\n\nUnused visitor and test.\n\nTest: m test-art-host\nChange-Id: Idb9403a1d41b6b2142b1e10cd9172a1771d6c5be\n"
    },
    {
      "commit": "4e868fa7b8c47600695ff92deeb373674956a67d",
      "tree": "acdb92a2b765cc87a08459267e430a8866e608cf",
      "parents": [
        "4dc06e2ef900132d8395539842c35533da8b912a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 17:16:44 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 27 16:04:13 2017 +0100"
      },
      "message": "Make vdex and dexlayout compatible.\n\nUnquicken the vdex before dexlayout, to keep the dex integrity.\n\nbug: 37558732\nTest: run-test with speed-profile\n\nChange-Id: Ifcd5c2e4378ccb0df0a66d07f68df31d94b83220\n"
    },
    {
      "commit": "6d7abbd2324f544c6b6da42bb6b9b531df0ce3cd",
      "tree": "669705a042bbc77c7963c117a9bf6f7a2308f9c8",
      "parents": [
        "0dfc315a096bf5678cb5182771e3fdcca8ea4433"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 13:19:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 14:18:45 2017 -0700"
      },
      "message": "ART: More header cleanup - method_verifier.h\n\nMove enumerations to own header. Move the compiler interface (of what\nthe compiler can tolerate) into its own header. Replace or remove\nmethod_verifier.h where possible.\n\nTest: mmma art\nChange-Id: I075fcb10b02b6c1c760daad31cb18eaa42067b6d\n"
    },
    {
      "commit": "5a0336dd8926e1ddee517f7bf39fd6ed3c68f656",
      "tree": "d04da8c615716cabac429319a124b013ff0a39e4",
      "parents": [
        "7b96e726420f56e489dc1da929737171cf008986",
        "3a842f5adcbdeb3fd3db4206006a784ccabfc865"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 08:03:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 24 08:03:44 2017 +0000"
      },
      "message": "Merge \"ART: Add method verifier check for call site id\""
    },
    {
      "commit": "a1d2f957a21319d1110bebb9a52f46fd1c67ffaf",
      "tree": "db9b6eda7cd4764e13c07256df14a7c14888ee75",
      "parents": [
        "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 20 22:53:58 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:41:28 2017 -0700"
      },
      "message": "ART: Clean up art_field.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit.\n\nTest: m\nChange-Id: I6ff2d6f89b741d8188e19426eccf4743fec688fc\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\n"
    },
    {
      "commit": "3a842f5adcbdeb3fd3db4206006a784ccabfc865",
      "tree": "3aaa5a0d63cd1c588c4a381db0b9c3ab7e0b68c5",
      "parents": [
        "6d3c61d8c6d2f96dec8345263c948fae3caa4e1a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Apr 21 15:24:10 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Apr 21 15:24:10 2017 +0100"
      },
      "message": "ART: Add method verifier check for call site id\n\nBug: 37248626\nTest: dex2oat on bug data\nChange-Id: Iaccd39ae9d4b3ab5134f7b5a9063a7efa2cab498\n"
    },
    {
      "commit": "9cb0c46402117e5fa83680289c8c097041296fb6",
      "tree": "e315160be2ee9052e460d6b4b2f9b825057ff0f4",
      "parents": [
        "38870a8a2717ccf1bcd3faddc53b1999985bb29f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 21 13:31:41 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 21 13:54:00 2017 +0100"
      },
      "message": "Fix verifier crash on abstract final class.\n\nRemove a check for erroneous class. It should not matter to\nthe verifier whether the class is just resolved, initialized\nor resolved erroneous. The check was also inherently racy\nand could yield different behavior based on the timing of\nthe verification.\n\nTest: 161-final-abstract-class\nTest: testrunner.py --host\nBug: 37248840\nChange-Id: Ic4d964050bbe52e3de4438ada9e75676956cb6b4\n"
    },
    {
      "commit": "bdb540dc8d09c48ee19cf035f418bcae0f00660e",
      "tree": "59a1d36ca6d626c827da70db758751e33a76cb60",
      "parents": [
        "aebc6870db9c1c4df78512732f11325740550663"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 19 13:50:34 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 20 10:37:31 2017 +0100"
      },
      "message": "Vdex: Workaround arrays with erroneous component type.\n\nThe assignability DCHECK is only reliable when classes are not\nerroneous. For arrays whose component type could be erroneous,\nthe verifier can join types even if they\u0027re not assignable.\n\nbug:33770646\nTest: verifier_deps_test\nChange-Id: I4ec1b12b2e2c7d5b57b51a64aea381f951a38dcd\n"
    },
    {
      "commit": "fc38e919bad23670e38a484d4728f300406415c3",
      "tree": "ec249a6773e571244d30c980263e32c750fb4c96",
      "parents": [
        "f83f3f6ecb1153d96cc8007e8a0d1e35af4d3f38"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 16 16:51:59 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 17 08:59:25 2017 +0000"
      },
      "message": "Do not assume type relationship when recording \"not assignable\"\n\nThe verifier may record that an interface I does not extend a\nclass A. If A is not j.l.Object, this is always true, but\nA might change after a system update from a class to an interface.\n\nbug: 34849974\ntest: verifier_deps_test\nChange-Id: Ic2876edce9a2a6f7b402420a5e01763aba2b39a4\n"
    },
    {
      "commit": "bdaa613753b1ead0a49a1aaa653e88995a8764b0",
      "tree": "37e5bda41a0e7df7c4e48a0179c6acf4815bc3dc",
      "parents": [
        "ba05290bb69e6bc9750d2485cd3dbfb013e61412",
        "a22a656c7a641243f1ea989d32231d1962331d29"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 15 17:27:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 15 17:27:16 2017 +0000"
      },
      "message": "Merge \"Fix RegType invariant checks.\""
    },
    {
      "commit": "6e54f78c7c1e01c1a91a458c6e51cca1c7d13ad4",
      "tree": "49f291aa374928e368ea5cdb05ea54ab62f5d003",
      "parents": [
        "0a1f0798176250853c1fb83f00a436a183d2bfc1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 15:27:09 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 15 12:45:05 2017 +0000"
      },
      "message": "Only look at vdex related access flags for class/fields/methods.\n\nclass/fields/methods can have a lot of flags, but only a handful\nof them affect verification.\n\nbug: 35913145\ntest: verifier_deps_test\nChange-Id: I5c374b50e811b5e134cdb868a2cc674900a1bdec\n"
    },
    {
      "commit": "a22a656c7a641243f1ea989d32231d1962331d29",
      "tree": "fa25fb8ff611aad39838efeb900485082c948bb6",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 15:44:22 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 15 10:25:52 2017 +0000"
      },
      "message": "Fix RegType invariant checks.\n\nMove the checks from the base constructor to constructors of\nthe most derived classes. While in the base constructor, the\nvtable points to the base class implementations of virtual\nfunction, so we were not checking what we intended. And when\nthe check failed, we tried to call a pure virtual function\nRegType::Dump() and crashed while constructing an abort\nmessage.\n\nAlso, avoid an unnecessary std::string construction in\nRegType::CheckInvariants() as StringPiece can be compared\nwith const char* directly.\n\nTest: testrunner.py --host\nBug: 32548008\nChange-Id: Ice7ca298132f87f8b1671b6578aeec221f0e7930\n"
    },
    {
      "commit": "8d6768d47b66a688d35399d524ad5a5450e9d9d4",
      "tree": "0b8733baef378d9e060c8e74319a3846489590b2",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 10:13:21 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 13:55:13 2017 +0000"
      },
      "message": "Revert^6 \"Hash-based dex cache type array.\"\n\nFixed ImageWriter to write class table also if it contains\nonly boot class loader classes. Added a regression test and\nadded extra checks for debug-build to verify that dex cache\ntypes from app image are also in the class table. Removed\nsome unnecessary debug output.\n\nTest: 158-app-image-class-table\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f.\n\nChange-Id: I6a747904940c6ebc297f4946feef99dc0adf930c\n"
    },
    {
      "commit": "0b66d6174bf1f6023f9d36dda8538490b79c2e9f",
      "tree": "1cc4d2ae868745a65fd0489a6fb2f5f2fc9e880f",
      "parents": [
        "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:50:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 16:08:01 2017 +0000"
      },
      "message": "Revert^5 \"Hash-based dex cache type array.\"\n\nFor app images, ImageWriter does not add boot image\nclasses to the app image class table even though it\nkeeps them in the dex caches. The reason for that is\nunknown, the code looks OK.\n\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nAlso reverts \"Improve debugging output for a crash.\"\n\nThis reverts commits\n    bfb80d25eaeb7a604d5dd25a370e3869e96a33ab,\n    8dd56fcb3196f466ecaffd445397cb11ef85f89f.\n\nTest: testrunner.py --host\nChange-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84\n"
    },
    {
      "commit": "bfb80d25eaeb7a604d5dd25a370e3869e96a33ab",
      "tree": "96068dd9b9b3bc2e1bcc25d38bbd2420d5b0f1bb",
      "parents": [
        "7a49d93ee265b978ab29cae659e46d41da78459a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 14 14:08:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:13:14 2017 +0000"
      },
      "message": "Revert^4 \"Hash-based dex cache type array.\"\n\nAdded extra output to the abort message to collect more data\nwhen we hit the crash. Added extra check when loading an app\nimage to verify that the class table isn\u0027t already broken.\n\nTest: testrunner.py --host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5.\n\nChange-Id: I9bb442a184c236dcb75b3e42a095f39cd6bee59d\n"
    },
    {
      "commit": "fe35fe172a7d3469ebf1dae9cca7e1ac8aefcba7",
      "tree": "3bf964f7786227f8104eeba08fe2e1768109a764",
      "parents": [
        "a0637543dc82dfd54feda7c80da017bd39b1d2d5",
        "fa4333dcb481e564f54726b4e6f8153612df835e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 22:11:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 22:11:35 2017 +0000"
      },
      "message": "Merge \"ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\""
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "c069a30d42aefd902c20e8bc09dfad1683f07ded",
      "tree": "8bbf72bea7ea5d243b57f8e0ab64b687a9f60e4b",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 18 09:23:12 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 14:04:33 2017 +0000"
      },
      "message": "ART: invoke-custom support\n\nAdds invoke-custom instruction to the interpreter.\n\nBug: 33191717,30550796\nTest: art/test/run-test --host 952\nChange-Id: I3b754128649a8b3a00ade79ba2518d0e377f3a1e\n"
    },
    {
      "commit": "5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5",
      "tree": "be0e9fdeb90bcbad76b17b3aae4e746d977d80ee",
      "parents": [
        "518f373324f355f8e58440dfbc3f5a1f2244bde7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 18:32:04 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 19:34:54 2017 -0800"
      },
      "message": "Revert^3 \"Hash-based dex cache type array.\"\n\nAssert failing for \"earchbox:search\":\nF zygote64: class_linker.cc:4612] Check failed: handle_scope_iface.Get() !\u003d nullptr\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 85c0f2ac03417f5125bc2ff1dab8109859c67d5c.\n\nChange-Id: I39846c20295af5875b0f945be7035c73ded23135\n"
    },
    {
      "commit": "85c0f2ac03417f5125bc2ff1dab8109859c67d5c",
      "tree": "844952d237e35faa5c5a2357ab037366c8397115",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 02 16:42:38 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 10 11:23:11 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based dex cache type array.\"\n\nThe reason for the revert was fixed by\n    https://android-review.googlesource.com/332666 .\nWe now enable clearing dex cache types in test 155 from that\nCL. Also avoid an unnecessary store in LookupResolvedTypes()\nand prevent verifier from messing up the dex cache types.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit d16363a93053de0f32252c7897d839a46aff14ae.\n\nChange-Id: Ie8603cfa772e78e648d005b0b6eae59062ae729d\n"
    },
    {
      "commit": "fcbafb36eff1facdd4c2b60e5f56dd986c558901",
      "tree": "443a55d0ac3698e7eaf82395d6f3567b35d8474d",
      "parents": [
        "406402baa4900c36b3fe27b03bf9e04e978e50be"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 02 15:09:54 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 02 15:32:25 2017 -0800"
      },
      "message": "Ensure we don\u0027t attempt to compile obsolete methods.\n\nWe would run into issues if we tried to compile an obsolete method\nsince some of the information needed to do so is lost as we redefine\nthe declaring class. Since compiling these methods is unlikely to have\na major effect on the performance of the program we simply tell the\nJIT not to bother with them.\n\nAlso update all places to use the new SetDontCompile helper.\n\nTest: mma -j40 test-art-host\nTest: stress --cpu 60 \u0026; \\\n    while ./test/run-test --host --jit --gcstress --64 942; do ; done\n\nChange-Id: Ie70fee6f503818e7589571facf28ccc5e7ca79f8\n"
    },
    {
      "commit": "d16363a93053de0f32252c7897d839a46aff14ae",
      "tree": "8823c6dd4641eae333aa7001203460757a515010",
      "parents": [
        "ac240396125911b52437a460a400c8b38be43a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 14:09:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 15:27:37 2017 +0000"
      },
      "message": "Revert \"Hash-based dex cache type array.\"\n\nReverting to work around some programs crashing with\n    Check failed: handle_scope_iface.Get() !\u003d nullptr.\nthough the reason for the failure not yet understood.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\nBug: 30419309\n\nThis reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8.\n\nChange-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82\n"
    },
    {
      "commit": "ec7862283dd49f5a58d0ac45960ce27c2f7671b8",
      "tree": "26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6",
      "parents": [
        "c01d49091f4588777db5bf45345f388058caa99f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 20 16:24:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 10:21:16 2017 +0000"
      },
      "message": "Hash-based dex cache type array.\n\nTest: m test-art-host (Interpreter, Optimizing, JIT)\nTest: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT)\nTest: Nexus 6P boots\nTest: m valgrind-test-art-host\nBug: 30627598\nBug: 34659969\nBug: 30419309\nChange-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1\n"
    },
    {
      "commit": "865cf901e9f16680ca3594a5ab8d8e17b0b6f9d4",
      "tree": "db540e1ed15f55491344c7399fbe46b13a21eb9a",
      "parents": [
        "4507fdcb70bd570d5f3968061bf991f0a1233a93"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 14:34:48 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 11:34:51 2017 +0000"
      },
      "message": "vdex optimization: avoid doing application type resolution.\n\nWhen looking up for methods/fields, we can take the class\nthat was originally found as holding the method. If a subclass\nof that class ends up redefining it after an OTA, it cannot\nalter the expected flags anyways (eg a public method cannot be\noverridden with a non-public method).\n\nbug: 30937355\ntest: test-art-host\nChange-Id: Ie3fbe0e829a27db61c534c4a49e945cc1afed9b9\n"
    },
    {
      "commit": "942fd3130254d8276cbfe8e6201825e9c49e9b2c",
      "tree": "62dbcd85ab150604e2d72a3c2d0c3639a28c9b7a",
      "parents": [
        "8bd59a0fd46db83616785168231e09fb95ed2ead"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 20:52:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 17 16:12:15 2017 +0000"
      },
      "message": "Reduce using ArtMethod\u0027s dex_cache_resolved_types_.\n\nAvoid using the ArtMethod\u0027s dex cache type array shortcut\nin runtime, preparing for its removal. We do not completely\nremove the shortcut yet because it is still used by array\nallocation entrypoints.\n\nFix ArgArray::BuildArgArrayFromObjectArray in reflection.cc\nto not ask for the parameter type to be resolved. It should\nhave been previously resolved when retrieving the Method.\n\nAlso partially revert\n    https://android-review.googlesource.com/310717\nbecause it relied on the removed AIOOBE check in the removed\nArtMethod::GetDexCacheResolvedType(). The removed check was\nsimply defensive but it could not be triggered without some\nmemory corruption.\n\nTest: m test-art-host\nBug: 30627598\nChange-Id: Ic45a5ff8c66b79429e440cbc08d67bf22a083682\n"
    },
    {
      "commit": "ac141397dc29189ad2b2df41f8d4312246beec60",
      "tree": "a2f481463a14695bf9327fd2f549878ecf30c77b",
      "parents": [
        "5c9f90c5ecf2ff6f93ada0f7b18b46d866c59ea1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 13 11:53:47 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Jan 15 15:18:07 2017 +0000"
      },
      "message": "Revert \"Revert \"ART: Compiler support for invoke-polymorphic.\"\"\n\nThis reverts commit 0fb5af1c8287b1ec85c55c306a1c43820c38a337.\n\nThis takes us back to the original change and attempts to fix the\nissues encountered:\n\n- Adds transition record push/pop around artInvokePolymorphic.\n- Changes X86/X64 relocations for MacSDK.\n- Implements MIPS entrypoint for art_quick_invoke_polymorphic.\n- Corrects size of returned reference in art_quick_invoke_polymorphic\n  on ARM.\n\nBug: 30550796,33191393\nTest: art/test/run-test 953\nTest: m test-art-run-test\n\nChange-Id: Ib6b93e00b37b9d4ab743a3470ab3d77fe857cda8\n"
    },
    {
      "commit": "0fb5af1c8287b1ec85c55c306a1c43820c38a337",
      "tree": "66239e7f745fae54e1630e91fb44a859bff615d6",
      "parents": [
        "02e3092f8d98f339588e48691db77f227b48ac1e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 18:58:15 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 19:17:33 2017 +0000"
      },
      "message": "Revert \"ART: Compiler support for invoke-polymorphic.\"\n\nThis reverts commit 02e3092f8d98f339588e48691db77f227b48ac1e.\n\nReasons for revert:\n\n- Breaks MIPS/MIPS64 build.\n- Fails under GCStress test on x64.\n- Different x64 build configuration doesn\u0027t like relocation.\n\nChange-Id: I512555b38165d05f8a07e8aed528f00302061001\n"
    },
    {
      "commit": "02e3092f8d98f339588e48691db77f227b48ac1e",
      "tree": "127dd23346206b0547b7c6453a776253252b3c6e",
      "parents": [
        "bc7d0deda4549f314e68ee3e0e6afd68c4a8fd06"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 01 10:33:51 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 16:26:43 2017 +0000"
      },
      "message": "ART: Compiler support for invoke-polymorphic.\n\nAdds basic support to invoke method handles in compiled code.\n\nEnables method verification for methods containing invoke-polymorphic.\n\nAdds k45cc/k45rc output to Instruction::DumpString() which\nwas found to be missing when enabling verification.\n\nInclude stack traces in test 957-methodhandle-transforms for\nfailures so they can be easily identified.\n\nBug: 30550796,33191393\nTest: art/test/run-test 953\nTest: m test-art-run-test\nChange-Id: Ic9a96ea24906087597d96ad8159a5bc349d06950\n"
    },
    {
      "commit": "0e2fe0ff28a89721bcf225027093ac693d568a5c",
      "tree": "556c3024dfe13b23292138851022e8b7ea49a246",
      "parents": [
        "6d2741f18be435c686bd774eecb7359c17ae2132"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 16:54:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 07 13:18:24 2017 +0000"
      },
      "message": "Find the classpath boundary for being assignable to an interface.\n\nTest: verifier_deps_test, test-art-host\n\nChange-Id: Icab3a5a9f94f6a38fa8ef320f93ac14691a732d3\n"
    },
    {
      "commit": "0f1cb17d23b664b96b6966e5d0f280df5925f56f",
      "tree": "2f93076ee34cd1754806a653a1119a5ec81e2c9e",
      "parents": [
        "77e9bddee965b1cefdc77264e4ed3a19e90cc2ac"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 05 15:23:19 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 05 15:23:19 2017 +0000"
      },
      "message": "Actually record arrays in classpath.\n\nWith https://android-review.googlesource.com/#/c/316151/,\nI was under the wrong impression arrays all have the same\naccess flags. They actually have the visibility of the inner\nmost component type.\n\nTherefore, we still need to record visibility of array types whose\ninnermost component type is in the classpath.\n\nTest: verifier_deps_test\nChange-Id: If7b1004efb679e320330258f42ced83b8eedae87\n"
    },
    {
      "commit": "2709b5fc91e9b151f0c48c52b3401d49e1e3c4ba",
      "tree": "ece570d778e53e58f2b7f21097524dbea771f3dc",
      "parents": [
        "cb2ce333ee2d1053919fe0acc390369bea3ad77e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 15:06:46 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 16:03:14 2016 +0000"
      },
      "message": "Do not record dependencies on arrays.\n\nWe do not record dependencies on arrays with component types in\nthe compiled DEX files, as the only thing that might change is their\naccess flags. If we were to change these flags in a breaking way, we would\nneed to enforce full verification again anyways.\n\nSaves on doing type resolution during vdex update.\n\nTest: test-art-host\nChange-Id: Ib85e172a5cb99c2999eed8b6b37390aa6b5cac37\n"
    },
    {
      "commit": "119e846b04c7c12c5b332122e71e9365b4a462f0",
      "tree": "d7d90b97e75e7427062ad8d3036921beb3192445",
      "parents": [
        "0239c439e4e493de9b6af1f04ace326c8210cb28"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 10:29:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 12:04:00 2016 +0000"
      },
      "message": "Point optimizations for vdex.\n\n- Do not record assignability due to not optimized CHECKCAST.\n- Do not record that j.l.Object must not be assignable to other types.\n- Chase the super class boundary to avoid recording a dependency\n  on a local class. This avoids doing type resolution of that class when\n  verifying the VerifierDeps.\n\nTest: test-art-host\nbug: 30937355\nChange-Id: Ibcee205451f23958c759ddcca7f88fe9003d37a9\n"
    },
    {
      "commit": "857f058d4b7bd07c5c99eda416ad91516a10b4da",
      "tree": "aafff6fc7ac9578955661366e779c858945ae71c",
      "parents": [
        "0966558b075b9b454e1a7864306eb206bf0c0094"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 20 14:36:59 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 20 16:15:24 2016 +0000"
      },
      "message": "Fix JIT crash due to unverified dead code\n\nThe JIT compiler assumes that it only gets completely verified code. To\nwork around potential unverified dead code it uses kAccDontBotherCompile\nflag set during runtime verification. However, if a class is verified\nduring a prior dex2oat the flag is not persisted and JIT happily things\nthat everything is ok.\n\nThe simplest fix is to mark classes with potential unverified dex code\nas verify at runtime. We only do this for apps and assume that\neverything in the boot image is well formed.\n\nTest: m test-art-host\nBug: 31000839\nChange-Id: I092d2e9553cd1c577036d78e8563a7a39d6cb7b9\n"
    },
    {
      "commit": "ad0c8bdc2c2e4d2a469455bcde7aeb5fc7482875",
      "tree": "fe5fe711a574386472408bda17b13a2ca2668c7e",
      "parents": [
        "132eb43396bdb0b9bdacf069289f019d85d358fc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 19:31:26 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 19:31:26 2016 +0000"
      },
      "message": "Revert \"Fix JIT crash due to unverified dead code\"\n\nBroke method_verifier_test and image_test.\n\nBug: 31000839\n\nThis reverts commit 132eb43396bdb0b9bdacf069289f019d85d358fc.\n\nChange-Id: I85923e6bdb3e76f54978658aad816d4c79fc339e\n"
    },
    {
      "commit": "132eb43396bdb0b9bdacf069289f019d85d358fc",
      "tree": "097ad8979e90555fd46e49eda32fe4b0c579acfd",
      "parents": [
        "71464a10a434e5b8aac75998d08b2cdcbce57bab"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 28 20:09:56 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 19 15:36:41 2016 +0000"
      },
      "message": "Fix JIT crash due to unverified dead code\n\nThe JIT compiler assumes that it only gets completely verified code. To\nwork around potential unverified dead code it uses kAccDontBotherCompile\nflag set during runtime verification. However, if a class is verified\nduring a prior dex2oat the flag is not persisted and JIT happily things\nthat everything is ok.\n\nThe simplest fix is to mark classes with potential unverified dex code\nas verify at runtime. We only do this for apps and assume that\neverything in the boot image is well formed.\n\nTest: m test-art-host-706-jit-skip-compilation\nBug: 31000839\n\nChange-Id: Ib73de1888581bb7202474cfd7aca70af4cc2cc00\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "dfc453b2abe793ba9664a9ecfeb118e365a55de8",
      "tree": "edd7c10f7c571541b0506154e58d62abb5b7bd50",
      "parents": [
        "a248587487ad23eaccd6a5877d97c7735120118e",
        "d1665a03ddad0e19f71e186efd8b5d2c217f1b40"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 14 09:15:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 14 09:15:05 2016 +0000"
      },
      "message": "Merge \"Handle primitive types in VerifierTypes::AddAssignability.\""
    },
    {
      "commit": "9186ced255f2e7402646b5b286deebb540640734",
      "tree": "833c25fd3bbb47749265947705b4fc0f0c1ba796",
      "parents": [
        "aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 14:28:21 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 11:43:48 2016 -0800"
      },
      "message": "ART: Clean up utils.h\n\nRemove functionality provided by libbase. Move some single-use\nfunctions to their respective users.\n\nTest: m test-art-host\nChange-Id: I75594035fa975200d638cc29bb9f31bc6e6cb29f\n"
    },
    {
      "commit": "d1665a03ddad0e19f71e186efd8b5d2c217f1b40",
      "tree": "83189b994176f3190b1ace52d66a0da4b2f993cd",
      "parents": [
        "c836b5a8a5ea00b0cd332d5e60c9ec10ae1e74fb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 13:07:07 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 13 14:28:01 2016 +0000"
      },
      "message": "Handle primitive types in VerifierTypes::AddAssignability.\n\nThe dex2dex compiler might indirectly call it with arrays\nof primitives.\n\nAlso remove dead APUT_OBJECT optimization in VerifiedMethod.\nIt was added for optimizing Quick:\nhttps://googleplex-android-review.googlesource.com/#/c/371193\n\nCommit hash:\na9a8254c920ce8e22210abfc16c9842ce0aea28f\n\nBut Quick is gone.\n\nTest: 630-safecast-array\nbug: 33498750, 32546807, 32546608\n\nChange-Id: Icfd3f8d915bfe225f05dbec42f9ba25dc1243fdc\n"
    },
    {
      "commit": "7f7a074875114d0376923460948eb94eabaffe29",
      "tree": "b14d2cda6829419fae548584d07d962968271d80",
      "parents": [
        "1aab04df52529d3cabe28fd9f0cb008bf8180a56"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 14:15:25 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 14:15:25 2016 +0000"
      },
      "message": "Revert \"ART: Remove workaround in verifer after Jack update.\"\n\nThis reverts commit 1aab04df52529d3cabe28fd9f0cb008bf8180a56.\n\nChange-Id: Ifecad6a16f2c6dfeea99adcdca7da05fb71592a8\n"
    },
    {
      "commit": "1aab04df52529d3cabe28fd9f0cb008bf8180a56",
      "tree": "ac1ac451752b8e22934877a1083919fd3e0c2051",
      "parents": [
        "0bdba6c3017f2b3602b1e6fe5c9b8717d800791c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 10:29:53 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 10:29:53 2016 +0000"
      },
      "message": "ART: Remove workaround in verifer after Jack update.\n\nBug: 33099829,30550796\nTest: m test-art-host\nChange-Id: I812809e7f043ec2a9651f22e970312e094b78966\n"
    },
    {
      "commit": "c571e73e21202cff0a8ec3bcfecb7d326e8648ef",
      "tree": "905cb5252b8bc8c335f569c869dfb8529301f40c",
      "parents": [
        "edcd7929e2bf521316fa5305109c330d563d87db",
        "cfa325e4ca65603fdb03a836a6cb394d23ed511f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 02 11:52:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 02 11:52:15 2016 +0000"
      },
      "message": "Merge \"ART: Add verifier support for invoke-polymorphic.\""
    },
    {
      "commit": "cfa325e4ca65603fdb03a836a6cb394d23ed511f",
      "tree": "f14e628cc90f7b03f8f227a30361993f3f594f11",
      "parents": [
        "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Oct 13 10:25:54 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Dec 02 10:09:40 2016 +0000"
      },
      "message": "ART: Add verifier support for invoke-polymorphic.\n\nChange-Id: I1e1860cad80db46320c3ef5a9eaceb7529ea68d7\nBug: 30550796,33099829,33191712\nTest: make test-art-host\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "fc2dd6110c7ce5fc272836d1a7e48f3b40612c2d",
      "tree": "c61e6b98d487e4dccf4c66d755982cc9160ca345",
      "parents": [
        "0e5e9fd33521d0f9a2cc6551cb77b4b196e82082"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 21 15:05:23 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 16:49:21 2016 -0800"
      },
      "message": "Speed up verified methods\n\nSwitch to an array of atomic pointers instead of a map. Removes lock\nand map lookup. Also address comments from previous CL.\n\nGetVerifiedMethod: 1.59% -\u003e 0.18% of compilation time.\n\nInstall time seems to goes down by around 1%.\n\nAlso has significant RAM savings (FB host compile):\ndex2oat native alloc: 84695472B -\u003e 71268736B\n\nFor the JIT case, the old method is used to prevent any increase in\nRAM usage.\n\nBug: 32641252\n\nTest: test-art-host\nChange-Id: I47b4b8a4a3cb3f8ef23e36a888b8885e12168787\n"
    },
    {
      "commit": "340dafabc8e88378e395cda9027cf17726910e91",
      "tree": "f742cfc9b9eb3fdf0245a66491d39fb841da7c01",
      "parents": [
        "71d15102b52af67e8fe1193192aa2b4cd1956ae0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 18 16:03:10 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 13:08:29 2016 +0000"
      },
      "message": "Use a per-thread VerifierDeps.\n\nAvoid lock contention on a singleton VerifierDeps by allocating\ntemporary per-thread VerifierDeps that get merged after verification.\n\nThis saves around ~35% compile-times on interpret-only.\n\nOnly the creation of extra strings is guarded by a lock, for simplicity.\n\nTest: test-art-host, test-art-target\nbug: 32641252\nbug: 30937355\n\nChange-Id: I11a2367da882b58e39afa7b42cba2e74a209b75d\n"
    },
    {
      "commit": "32b50302d9826430013e008b45d5c71e6b7a2469",
      "tree": "210a7c575cc246787afdbbd988a45c8f38b8b169",
      "parents": [
        "a598b869b255b4daeaa34d1dd0939222a3a791b7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 17 13:08:35 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 21 13:28:23 2016 -0800"
      },
      "message": "Check same dex file for finding class descriptor string id\n\nUse ClassDef for finding same dex file class descriptor string id\nfor vdex. Removes some calls to FindStringId, the remaining calls to\nFindStringId are due to multidex or referring to types in the boot\nclass path.\n\nAlso check method index slot to see if we get lucky.\n\nHost perf:\nDexFile::FindStringId: 2.57% -\u003e 0.94%\n\nNot done for fields since these do not seem to reach the FindStringId\ncase accordingto perf. The remaining calls to FindStringId come from:\n100.00% verifier::VerifierDeps::GetClassDescriptorStringId\n-\u003e 66.62% verifier::VerifierDeps::AddAssignability\n-\u003e 33.38% verifier::VerifierDeps::AddMethodResolution\n\nFB install time: 35.54s -\u003e 34.41s (avg of 40 samples at 960MHZ N6P).\n\nBug: 32641252\n\nTest: test-art-host\n\nChange-Id: If50408cf1be5c2d2127140780b8d5af66306939c\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "f8f36c246ee46522a7446e6f3a155e0fc5c7b859",
      "tree": "f202c1fe8aa1ae1a8b4f3d609ad4a011f7ffca4b",
      "parents": [
        "320ba91911c840528893e07b0af43d317cd4c9aa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 19 14:51:52 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 19 14:57:56 2016 -0800"
      },
      "message": "ART: Do not DCHECK in verifier when already aborting\n\nOnly log an error in FailOrAbort in the debug build when the\nruntime is already aborting.\n\nTest: m test-art-host\nChange-Id: I240f8bb7695e42d60b5805ebae2ab9dc72e5fdb1\n"
    },
    {
      "commit": "d4ede93561597f248cdd5687fcbf41a42ca4f824",
      "tree": "0cc5dc2634650dc62f87da76c7959d3815580d08",
      "parents": [
        "f4130b9da6f588cf049664f32533dc3cb130bf80",
        "6bb7f1b60f4b6b2214457d19d66d2b7b50685feb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 04 11:03:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 04 11:03:19 2016 +0000"
      },
      "message": "Merge \"Integrate VerifierDeps in compiler driver.\""
    },
    {
      "commit": "47b6bdb2a06cc4c296762c7461281f4390e17c2d",
      "tree": "eea19f00e50741e2e3dc00fc96f077f83f9ec6fb",
      "parents": [
        "878d1889f7273cbfd48035762b67ce634503d55e",
        "4c481a4245aebe6821914237249f11d03e687bf9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 03 20:43:06 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 03 20:43:06 2016 +0000"
      },
      "message": "Merge changes I86bc206d,If20a34e7,I6ee6c826,I240341a0\n\n* changes:\n  ART: Make some variables references\n  ART: Put macro parameters into parentheses\n  ART: Add \"explicit\" to constructors\n  ART: Change iterator value type to match\n"
    }
  ],
  "next": "1eeb00c7499c520159a38af4be3835aee7ee7b38"
}
