)]}'
{
  "log": [
    {
      "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": "edcd7929e2bf521316fa5305109c330d563d87db",
      "tree": "932f787a9c4f7fb9dbf9cd0325cd4eef521bdf95",
      "parents": [
        "141c6f68d47e9312e3c27aa6dcd3ae510e7e19c7",
        "b12be8c68853b1347fdeaaf72ec3ca2e0d72c54d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 02 00:51:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 02 00:51:49 2016 +0000"
      },
      "message": "Merge \"Fix PACKED for jvalue\""
    },
    {
      "commit": "141c6f68d47e9312e3c27aa6dcd3ae510e7e19c7",
      "tree": "727e5e4976b8ad53a536c3ca32b04f97359d8e90",
      "parents": [
        "e20fe27a2846d13a1893ee8e1cbc9d950148c27d",
        "063fc772b5b8aed7d769cd7cccb6ddc7619326ee"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 23:28:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 23:28:54 2016 +0000"
      },
      "message": "Merge \"Class Hierarchy Analysis (CHA)\""
    },
    {
      "commit": "b12be8c68853b1347fdeaaf72ec3ca2e0d72c54d",
      "tree": "7dde8313671fbea35e7e7d17a715c3b0f2d3a7e3",
      "parents": [
        "5eb1e1e7341f4e7febf77c04f8649a9566b31c03"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 01 14:54:38 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 01 15:14:40 2016 -0800"
      },
      "message": "Fix PACKED for jvalue\n\nMake it only as packed as alignof(mirror::Object*).\n\nBug: 31532493\n\nTest: mm test-art-host\n\nChange-Id: I242c549bcc9203d3173f204264b0dc2f2f8e3441\n"
    },
    {
      "commit": "e20fe27a2846d13a1893ee8e1cbc9d950148c27d",
      "tree": "d057e5f635aeb13e7efae86c6d1e587bb75c1134",
      "parents": [
        "5eb1e1e7341f4e7febf77c04f8649a9566b31c03",
        "0793becb2340f54e7ed9d3d61d156c6285895433"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 01 23:00:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 23:00:44 2016 +0000"
      },
      "message": "Merge \"ART: Cache sections for sanity check\""
    },
    {
      "commit": "0793becb2340f54e7ed9d3d61d156c6285895433",
      "tree": "06f7ab9970cb9f96ea99932420e26facd96c4e21",
      "parents": [
        "6afaa42f50157095a3cdc742afdbc3d58b833eea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 01 11:37:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 01 11:39:09 2016 -0800"
      },
      "message": "ART: Cache sections for sanity check\n\nCache image sections for ArtMethod image sanity checks. Reduces\nexecuted instructions in debug builds.\n\n$ perf stat -e instructions:u -B dex2oatd ... HelloWorld.dex\nBefore: 36,024,262,237      instructions:u\nAfter:  20,351,917,735      instructions:u\n\nTest: m test-art-host\nChange-Id: I96e5c04483cf40800f0f336a49d7d33e7b967f07\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": "48d08a4233ee4450b0d5073d41445f9dd1f17191",
      "tree": "0655c5ee28c54ad99b30eba3e324fc2f27c922cf",
      "parents": [
        "75d564e45061e1a9d28a89d3c8fa60af04ef28a8",
        "41fba6aefbbd42a66b24582da7304e96b52bbab4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 01 19:09:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 19:09:15 2016 +0000"
      },
      "message": "Merge \"Change Dex2oatLayoutTest to generate profile itself.\""
    },
    {
      "commit": "2c8c6b63da6ecb2ac701cc30f9b4fa4a8eea5cc8",
      "tree": "7b5e29f66a840e5e83c02df0b23d05501b0d63c5",
      "parents": [
        "6afaa42f50157095a3cdc742afdbc3d58b833eea"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 17:42:00 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 17:43:09 2016 +0000"
      },
      "message": "Revert \"Make sure that const-class linkage is preserved, try again.\"\n\nReverting due to test failures as expected.\n\nBug: 30627598\nBug: 33231647\n\nThis reverts commit cb5ab35980a86b05586c402924d2e7ca9df25758.\nSquashed revert \"Additional debug logging for bug 33231647.\"\n    This reverts commit 00a441033db28d243fc33692d30eb2755fa81728.\n\nChange-Id: I0c0ee1f70d47540fec99f8a797ce13571c16147c\n"
    },
    {
      "commit": "4e1a19b2e2191c27c45cac373ad9db2d61ed7fc9",
      "tree": "4694e18e1ee50029a1506aae85630ee6d030efcd",
      "parents": [
        "903691455319f72219853a46340b59c9b89b7553",
        "112aa1088cf283d57c533be17d79c4b638665651"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 14:53:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 14:53:55 2016 +0000"
      },
      "message": "Merge \"Mterp/arm64: Add CFI directives.\""
    },
    {
      "commit": "112aa1088cf283d57c533be17d79c4b638665651",
      "tree": "7b6f8338d9f574efdacdeaf1144cd538306335c5",
      "parents": [
        "626b839f881f09a1481377a76712d08580c47a16"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 11:53:54 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 12:43:38 2016 +0000"
      },
      "message": "Mterp/arm64: Add CFI directives.\n\nAlso add two bug 31975598 workarounds to arm64 entrypoints.\n\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-target\nBug: 31456348\nBug: 31975598\nChange-Id: Ibf64160cf3b3f1ef644ff8f051ab7dc89643acf3\n"
    },
    {
      "commit": "903691455319f72219853a46340b59c9b89b7553",
      "tree": "42f33b1e3b949fcd8246f34877b46a304bb36dfe",
      "parents": [
        "982e0bf9ed2b00ef85b328de674e28342eb0b2dd",
        "cb5ab35980a86b05586c402924d2e7ca9df25758"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 01 12:11:07 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 12:11:07 2016 +0000"
      },
      "message": "Merge \"Make sure that const-class linkage is preserved, try again.\""
    },
    {
      "commit": "cb5ab35980a86b05586c402924d2e7ca9df25758",
      "tree": "acf33ce7ac7627682aaf822489247ca1804b60d0",
      "parents": [
        "07e6a7947f3279f66f14f7af045065b5297294c2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 30 15:31:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 10:13:19 2016 +0000"
      },
      "message": "Make sure that const-class linkage is preserved, try again.\n\nThis CL causes occasional test failures on the build servers\nwhich we were not able to reproduce locally. So we add some\nsome additional debug output to help pinpoint the cause.\n\nBug: 30627598\nBug: 33231647\nTest: m test-art-host\n\nThis reverts commit 171cf811a1cdf8b1cbc5151505d8630741ce4cf3.\n\nChange-Id: Id56a3f0e86e8212fd547e09c61794401bff47fb0\n"
    },
    {
      "commit": "85b38bd1fdf4a3aaf073e0aa1f901271b7bab338",
      "tree": "c63fe08ec17c5682bdb86824d3a99905390cf30f",
      "parents": [
        "2ba0c377ec9e6cb9d59dbafdacc363b8a44e46c4",
        "fbc75db230ff393ea1d0f2dcacd7a6fb71556cce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 01 09:07:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 09:07:36 2016 +0000"
      },
      "message": "Merge \"Remove the fast path in art_quick_resolve_string.\""
    },
    {
      "commit": "679ba8d5d53b5577f571b51af17e263abd05e760",
      "tree": "0c13819fc3eccfba307d5a642e1260685d5626bf",
      "parents": [
        "0fd9a7d67878d1d88a74895c0d02c556b5de8e72",
        "71bf7b43380eb445973f32a7f789d9670f8cc97d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 01 00:45:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 00:45:28 2016 +0000"
      },
      "message": "Merge \"Optimizations around escape analysis. With tests.\""
    },
    {
      "commit": "0fd9a7d67878d1d88a74895c0d02c556b5de8e72",
      "tree": "1e10e3ad67ae8477db93e7bc9c35aaaa4ee9fa77",
      "parents": [
        "07ab8831ff6025f91f927cc9e60c04801583666c",
        "a01de59eef990c07df9815376cd3c675e3acd481"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 23:01:31 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 23:01:32 2016 +0000"
      },
      "message": "Merge \"Infrastructure for obsolete methods\""
    },
    {
      "commit": "71bf7b43380eb445973f32a7f789d9670f8cc97d",
      "tree": "76425f8578b247a845fe61724d71efc63059760f",
      "parents": [
        "52f52361c2ea37941fbda71e3c653bb8096bf516"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Nov 16 10:17:46 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Nov 30 13:21:21 2016 -0800"
      },
      "message": "Optimizations around escape analysis. With tests.\n\nDetails:\n(1) added new intrinsics\n(2) implemented optimizations\n      more !can be null information\n      more null check removals\n      replace return-this uses with incoming parameter\n      remove dead StringBuffer/Builder calls (with escape analysis)\n(3) Fixed exposed bug in CanBeMoved()\n\nPerformance gain:\nThis improves CafeineString by about 360%\n(removes null check from first loop, eliminates second loop completely)\n\nTest: test-art-host\n\nChange-Id: Iaf16a1b9cab6a7386f43d71c6b51dd59600e81c1\n"
    },
    {
      "commit": "07ab8831ff6025f91f927cc9e60c04801583666c",
      "tree": "908a6ea9f01c47f11cb9fb7d9cd78e107ea15493",
      "parents": [
        "7874c0c9265b827393f49201d003fd6e6fcef9c0",
        "5ace201d84adb7753680bf4c7877b3b71558da82"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 21:02:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 21:02:26 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert CC related changes.\"\""
    },
    {
      "commit": "7874c0c9265b827393f49201d003fd6e6fcef9c0",
      "tree": "f63a40fb486336ceed3a54df5183876942abeef3",
      "parents": [
        "392fb010a71b99fdb6a67929cb97171e97523b13",
        "a8131266b8371667f2412fb2d1c9864f038411b9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 20:44:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 20:44:42 2016 +0000"
      },
      "message": "Merge \"Add release fence after copying object\""
    },
    {
      "commit": "5ace201d84adb7753680bf4c7877b3b71558da82",
      "tree": "4687d41f5a1c8358e8356066d1e1b43b231b6037",
      "parents": [
        "304f2d3a1d090846a7a55a0016efc9fc8eb14078"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 10:15:41 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 11:01:52 2016 -0800"
      },
      "message": "Revert \"Revert CC related changes.\"\n\nDisable entrypoint switching in ResetQuickAllocEntryPointsForThread\ninstead of callers. Fixes bug where instrumentation would switch\nto non CC entrypoints for non X86_64 architectures causing aborts.\n\nBug: 31018974\n\nTest: test-art-host\nTest: test/run-test 099\n\nThis reverts commit 96172e0172c5fca6e9a5ad4b857a24d8c7b064e5.\n\nChange-Id: If206694ae35ff4446c6a8a97bfbcbf2dac35e3f9\n"
    },
    {
      "commit": "41fba6aefbbd42a66b24582da7304e96b52bbab4",
      "tree": "574ddca8e631cb14d18d06846b54c8f4843f0883",
      "parents": [
        "304f2d3a1d090846a7a55a0016efc9fc8eb14078"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 28 11:53:33 2016 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 30 10:34:27 2016 -0800"
      },
      "message": "Change Dex2oatLayoutTest to generate profile itself.\n\nChanged from a pre-generated base64 profile. This makes the test work\neven if the dex file differs due to Jack changes.\n\nBug: 33091768\nTest: mm test-art-host-gtest-dex2oat_test\n\nChange-Id: I22b8c20ae1ab57efe66684ba38f5c128e6c089fd\n"
    },
    {
      "commit": "a01de59eef990c07df9815376cd3c675e3acd481",
      "tree": "86f6ef41c13de572dc134956c836dd94c35d9d64",
      "parents": [
        "424c03aac25835febbf5c695b943206bc40ef335"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 15 10:43:06 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 10:23:47 2016 -0800"
      },
      "message": "Infrastructure for obsolete methods\n\nThis adds some of the structures and functions needed to eventually\nsupport obsolete methods. Specifically this adds the code to create\nand iterate through the obsolete dex-cache maps of classes and\nre-organizes the redefinition code to be more sensible and extensible.\n\nBug: 32369913\nTest: ./test/run-test --host 902\nTest: mma -j40 test-art-host\n\nChange-Id: I93d60fa66e7512e8b059cdf42af8a56e93ef4bd7\n"
    },
    {
      "commit": "211fd802903c130ed1c47c18d1b87809d290aa69",
      "tree": "e049fbad2dd7fbf244d5163e084be339f02fc8d7",
      "parents": [
        "304f2d3a1d090846a7a55a0016efc9fc8eb14078",
        "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 30 18:21:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 18:21:22 2016 +0000"
      },
      "message": "Merge \"ART: Add dex::StringIndex\""
    },
    {
      "commit": "a8131266b8371667f2412fb2d1c9864f038411b9",
      "tree": "ccbad195c81bff77a03549fd08f7ac3f543a8bd6",
      "parents": [
        "304f2d3a1d090846a7a55a0016efc9fc8eb14078"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 29 17:55:19 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 09:57:13 2016 -0800"
      },
      "message": "Add release fence after copying object\n\nTry to ensure that the field CAS in ConcurrentCopying::Process will\nnever reorder before the object copy.\n\nMay fix a bug where null classes are seen.\n\nTest: test-art-host CC\n\nBug: 33210571\nChange-Id: I71ab937b7ca60c88c5f69698731edac6a8f2e91a\n"
    },
    {
      "commit": "304f2d3a1d090846a7a55a0016efc9fc8eb14078",
      "tree": "18b63b2bc76a6ada4687797051cec5e390d08f40",
      "parents": [
        "846ddc7b9fc33e7ea139b49d5d3b1f25be5c7a82",
        "b84defb1b09803d5a47035e8010ac43984da1d4c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 16:23:24 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 16:23:25 2016 +0000"
      },
      "message": "Merge \"Do not call IsMarked on null.\""
    },
    {
      "commit": "846ddc7b9fc33e7ea139b49d5d3b1f25be5c7a82",
      "tree": "c294811cc6d2331bd267847b584200c5ea64fd00",
      "parents": [
        "725466c0207d4b3d997633f5c321adee2dcd5483",
        "e4d4cd2cbbe02a33745b58b1138f3c56e97f0f90"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 30 16:20:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 16:20:44 2016 +0000"
      },
      "message": "Merge \"ART: Remove duplicate StackVisitor method.\""
    },
    {
      "commit": "b84defb1b09803d5a47035e8010ac43984da1d4c",
      "tree": "081b63ee8a4ce0f06a208e269a4076331d0d6fce",
      "parents": [
        "07e6a7947f3279f66f14f7af045065b5297294c2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 16:02:16 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 16:02:16 2016 +0000"
      },
      "message": "Do not call IsMarked on null.\n\nThe concurrent collector checks it.\n\nTest: ART_TEST_JIT\u003dtrue test-art-host-run-test-jit\nChange-Id: I02c2462ce1d8f3092f0b2f52f8b6dede8ff4a339\n"
    },
    {
      "commit": "c9e2fc27c57d4c007d26081a8e60b244ecba8665",
      "tree": "cd59bdb099bf2342f4400c37cfbf6ea827a56632",
      "parents": [
        "9ebca690fdfb36fe1a689fd32c3d05d999497768",
        "e51ca8bfa8a193b64901ad214842f213adca92eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "message": "Merge \"Move inline caches GC handling in JitCodeCache.\""
    },
    {
      "commit": "96172e0172c5fca6e9a5ad4b857a24d8c7b064e5",
      "tree": "04bb8fe644c9bc961c8ac33e609c1b162ec45222",
      "parents": [
        "626b839f881f09a1481377a76712d08580c47a16"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 11:52:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 11:52:19 2016 +0000"
      },
      "message": "Revert CC related changes.\n\nRevert: \"X86_64: Add allocation entrypoint switching for CC is_marking\"\nRevert: \"Fix mips build in InitEntryPoints\"\nRevert: \"Fix mac build in ResetQuickAllocEntryPoints\"\n\nTest: test-art-target-run-test\nChange-Id: If38d44edf8c5def5c4d8c9419e4af0cd8d3be724\n"
    },
    {
      "commit": "626b839f881f09a1481377a76712d08580c47a16",
      "tree": "789fed42d5eb016fa360fca9f943ae0bb9cecf85",
      "parents": [
        "f5ba1152d7d45a3b8a829358a9fec93acba584b6",
        "58a73d2542f95dfd0535ceaa00eedefe198074a1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 10:38:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 10:38:17 2016 +0000"
      },
      "message": "Merge \"Don\u0027t use ashmen when kIsTargetLinux is set.\""
    },
    {
      "commit": "f5ba1152d7d45a3b8a829358a9fec93acba584b6",
      "tree": "f9f484a5c53bcf27294ba4d987fcb80637587614",
      "parents": [
        "10096becf60af4f0164db861d91e239177e1f47e",
        "fc80ff7d8025d720906ee43b793d07bd916ec160"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 30 01:07:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 01:07:05 2016 +0000"
      },
      "message": "Merge \"Improve invalid object logging\""
    },
    {
      "commit": "e4d4cd2cbbe02a33745b58b1138f3c56e97f0f90",
      "tree": "a1cc89069197c8552846711775a09ef093015ef7",
      "parents": [
        "8662aaaae4b63b02b2762673873b90b433b2eb2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 16:52:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 16:52:33 2016 -0800"
      },
      "message": "ART: Remove duplicate StackVisitor method.\n\nRemove method that is the same as the older IsShadowFrame and only\nused in tests.\n\nTest: m ART_TEST_JIT\u003dtrue ART_TEST_INTERPRETER\u003dtrue test-art-host-run-test-454-get-vreg\nTest: m ART_TEST_JIT\u003dtrue ART_TEST_INTERPRETER\u003dtrue test-art-host-run-test-457-regs\nTest: m ART_TEST_JIT\u003dtrue ART_TEST_INTERPRETER\u003dtrue test-art-host-run-test-570-checker-osr\nChange-Id: Id222d25d5345790b6c500ec8120880a3b9d79986\n"
    },
    {
      "commit": "cc238e2645760604da1b2347b9bc9fd59a395780",
      "tree": "4bb4e11d0d805e0468ee2560942a8b4fe46c760c",
      "parents": [
        "f9c2f88d13337436d7f345564b765c2dfd5f80a5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 29 15:31:00 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 29 15:33:03 2016 -0800"
      },
      "message": "Fix mips build in InitEntryPoints\n\nAdded missing arg.\n\nTest: Untested\nChange-Id: I7bd25203eee92d0424f03ee9fdb9e7079d05d23c\n"
    },
    {
      "commit": "58a73d2542f95dfd0535ceaa00eedefe198074a1",
      "tree": "dd7851c379b91949f5947e2f79791bb9f320005b",
      "parents": [
        "c23d5e478365914f08477b7aca151a140e063b55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 21:49:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 22:42:47 2016 +0000"
      },
      "message": "Don\u0027t use ashmen when kIsTargetLinux is set.\n\nTest: get JIT enabled when running ART.\nChange-Id: Ic1c351601d8e85ba6597c3b400fa0094e070a56a\n"
    },
    {
      "commit": "8003cafbcade4cd2929b91de3e50d2660c424280",
      "tree": "8ee82e8c6778dec2e84fdde12231fd268088d3a9",
      "parents": [
        "ae7f6b965e15794b0014a0c1db5e1fcf9e841e5c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 29 14:17:09 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 29 14:17:33 2016 -0800"
      },
      "message": "Fix mac build in ResetQuickAllocEntryPoints\n\nUnused arg warning.\n\nTest: None\n\nChange-Id: I5b147b1a584b96ad5457c9fee36f3edb0498cecf\n"
    },
    {
      "commit": "ab191538a1d9eee6ec96bc3fa86dde36a007a6f5",
      "tree": "64c4ffaf96a8cf0aeb27bf8cbbbd5cfa42d1ff40",
      "parents": [
        "8fb28dcf0e83f7153e76e176671cd4ad1f20205b",
        "f5de23265360e15fcfceb7d07bdadca0e5bb5f0a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 29 21:32:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 29 21:32:12 2016 +0000"
      },
      "message": "Merge \"X86_64: Add allocation entrypoint switching for CC is_marking\""
    },
    {
      "commit": "8fb28dcf0e83f7153e76e176671cd4ad1f20205b",
      "tree": "c658d6bf0cc0a92a3298ec79c6405015da3d7d98",
      "parents": [
        "8662aaaae4b63b02b2762673873b90b433b2eb2d",
        "171cf811a1cdf8b1cbc5151505d8630741ce4cf3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 21:11:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 29 21:11:33 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\"\"\"\""
    },
    {
      "commit": "171cf811a1cdf8b1cbc5151505d8630741ce4cf3",
      "tree": "2e5e16040024115d75baebdbf064987961e36e5f",
      "parents": [
        "e47172b75b8b04a450d235cf72bdc4e223a29cb5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 21:10:22 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 21:10:22 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\"\"\"\n\nBug: 30627598\n\nThis reverts commit e47172b75b8b04a450d235cf72bdc4e223a29cb5.\n\nChange-Id: I038029c71195a80f041982e82ae556d3157db7b8\n"
    },
    {
      "commit": "e51ca8bfa8a193b64901ad214842f213adca92eb",
      "tree": "b07b2534edc592d68b5461a3bdb8a31241892d54",
      "parents": [
        "eb9c58e88f8e0f4a0a413efce04b49b183ad23e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:49:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 21:05:51 2016 +0000"
      },
      "message": "Move inline caches GC handling in JitCodeCache.\n\nMake the classes they hold weak references and visit\nthem during SweepJitRoots.\n\nThis fixes the newly introduced deadlock:\n\nThread1:\n1) Lock JitCodeCache lock to create Profiling info for\n  ArtMethod m.\n2) m is a copied method, we need to track the actual holder,\n   needing to decode a weak reference.\n3) Weak references are not accessible due to GC.\n\nGC Thread:\n- Disallow weak reference access.\n- Wait for checkpoint.\n\nThread2:\n- Try to lock JitCodeCache lock\n- Deadlock, as Thread1 owns the JitCodeCache lock.\n\nTest: test-art-host\nbug: 31289185\nbug: 33198826\n\nChange-Id: I7ee17631015450ace8d2a0264415a81c5a902bb8\n"
    },
    {
      "commit": "fc80ff7d8025d720906ee43b793d07bd916ec160",
      "tree": "8e3819626496189299cfb952448b53cbca9a71f5",
      "parents": [
        "424c03aac25835febbf5c695b943206bc40ef335"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 28 13:13:28 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 29 12:40:11 2016 -0800"
      },
      "message": "Improve invalid object logging\n\nPrioritize holder logging instead of maps and stack traces.\n\nTest: test-art-host\n\nBug: 31441673\n\nChange-Id: Ibc0523ffe5a8f8ba207c2643eae65d44599dcc86\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": "60438b46090d22bb9b978196f5aa53fab3b89759",
      "tree": "7b6ab16122bba86979dfee95c94c75324af51233",
      "parents": [
        "df743754f409788b5ea7f114d3d4171a6e036040",
        "af8bcf83535cd7bf5651ada2fb08a0ba9c5191d6"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 29 15:49:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 29 15:49:39 2016 +0000"
      },
      "message": "Merge \"Fix event reporting from the debugger thread\""
    },
    {
      "commit": "df743754f409788b5ea7f114d3d4171a6e036040",
      "tree": "604ed3b5e86d9f26ecc888257de3d322d014e7fd",
      "parents": [
        "ded461e9df57a9e36e82f665d9600f9ea588dd87",
        "e47172b75b8b04a450d235cf72bdc4e223a29cb5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 15:46:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 29 15:46:39 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\"\"\""
    },
    {
      "commit": "ded461e9df57a9e36e82f665d9600f9ea588dd87",
      "tree": "a1d664b5bd0083abd2364b914e686d1ec40d5605",
      "parents": [
        "d34d4f303bff900249cce15ff5e4a3844f71546b",
        "1af0c4ff8b79ad44a4e12d7271a66d4e775ba224"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 15:06:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 29 15:06:15 2016 +0000"
      },
      "message": "Merge \"Fix the target Linux builds of ART\""
    },
    {
      "commit": "e47172b75b8b04a450d235cf72bdc4e223a29cb5",
      "tree": "9301e9bc08944f3b4590d9ccf6aa7656cc238adf",
      "parents": [
        "d0111420a9f924fe560a97132d09ae531852fd69"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 25 11:47:20 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 13:49:20 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\"\"\n\nAvoid class loading triggered by verification in the\n626-const-class-linking test. Expect spurious wakeups.\n\nAdd extra debugging output for a very strange failure\n    image_writer.cc:1144] Check failed:\n    !IsBootClassLoaderClass(as_klass)\n    java.lang.Class\u003cjava.lang.NoSuchMethodError\u003e\nThat class is supposed to be in the boot image (core.art for\ntests), so the failing check should not be reached at all.\n\nTest: m test-art-host\nTest: m ART_TEST_OPTIMIZING\u003dtrue \\\n        ART_TEST_JIT\u003dtrue \\\n        ART_TEST_INTERPRETER\u003dtrue \\\n        ART_TEST_INTERPRETER_ACCESS_CHECKS\u003dtrue \\\n        test-art-host-run-test-626-const-class-linking\nBug: 30627598\n\nThis reverts commit 09ded9201fbeec605b12741ae255663c14bda225.\n\nChange-Id: I65a68cb53f0707b8abb3555ac3dc44c82907aef5\n"
    },
    {
      "commit": "af8bcf83535cd7bf5651ada2fb08a0ba9c5191d6",
      "tree": "f029668c26269484652e9432fab3a246be81d2e7",
      "parents": [
        "da2d78ba97d177b80e0e9528362bcebc1fd31f0f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 22 14:55:04 2016 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 29 11:51:03 2016 +0100"
      },
      "message": "Fix event reporting from the debugger thread\n\nThe debugger thread may trigger events (like CLASS PREPARE after the\ninitalization of a class while processing a command).\n\nThis CL removes the incorrect CHECK that makes the runtime abort in\nthis case. However, we do check that only the debugger thread can\nreport an event while it is already processing a command.\n\nBug: 33032664\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nChange-Id: I32a284cfb4df6eb44eac27bbdcabd3c426d726ce\n"
    },
    {
      "commit": "424c03aac25835febbf5c695b943206bc40ef335",
      "tree": "45a1f8cb3ab9fe474b8cffabe6b222755ba2b886",
      "parents": [
        "49812bd439050a79d75c61d7c575d2684e9e969a",
        "7225a8d0796ef6fafbf3037cafd2446766bff514"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 28 13:15:55 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 28 13:15:56 2016 +0000"
      },
      "message": "Merge \"Refine the DexOptNeeded codes.\""
    },
    {
      "commit": "b18a669259aa6ba08d9ca01b5b32c1aa0417138b",
      "tree": "c8f5260d9b68614f85b2947d81122ffcaf99fdec",
      "parents": [
        "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Nov 17 10:51:58 2016 +0300"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 28 11:38:03 2016 +0000"
      },
      "message": "Cache flush/invalidate needs RWX permission\n\nWhen generating JIT code, perform cache maintenance operations before\nremoving page write permissions. Errata on some cores require data\nflush operations to be followed by data invalidate operations\nrequiring write permission.\n\nTest: ART_TEST_JIT\u003dtrue test-art-target on an arm64 device.\nbug: 27265969\n\nChange-Id: I70cbb0dc2ea37e42f2011d23333e386ae3f639c7\n"
    },
    {
      "commit": "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef",
      "tree": "24c39209f4ae8340791965866ed847d9e65808c5",
      "parents": [
        "d162cfe794c9d4e6d9aa6b5f207db2ebd91a2113",
        "fef0664fa7b480032f17c60f767bcca43a659d8a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Nov 28 09:39:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 28 09:39:45 2016 +0000"
      },
      "message": "Merge \"ART: Throw InternalError rather than VirtualMachineError\""
    },
    {
      "commit": "7225a8d0796ef6fafbf3037cafd2446766bff514",
      "tree": "265ccb923857e4b6def6b0adaf547d52215e4d71",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Nov 22 10:12:03 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Nov 28 08:24:32 2016 +0000"
      },
      "message": "Refine the DexOptNeeded codes.\n\nTo expose information useful for optimizing how dex2oat is invoked in\nthe presence of vdex files.\n\nBug: 30937355\nTest: art-test-host\n\nChange-Id: I8e09fabf8c56bf1e1041f43d3d9edf7850adc395\n"
    },
    {
      "commit": "1c87878ca87b0c5dde08416ef75615632eace7ac",
      "tree": "2e5e16040024115d75baebdbf064987961e36e5f",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 15:46:49 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 17:04:20 2016 +0000"
      },
      "message": "Revert \"Revert \"Method Handles: Add VarargsCollector.\"\"\n\nThis reverts commit 12af7a41c224923fb55699305008214636a1a3da.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\nChange-Id: Ia820093bab919667729daba5b14330de51a63f79\n"
    },
    {
      "commit": "fef0664fa7b480032f17c60f767bcca43a659d8a",
      "tree": "5b1f812aef3e300b7bef0bd5ad5a2fa5a8d5c38a",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 16:07:11 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 16:07:11 2016 +0000"
      },
      "message": "ART: Throw InternalError rather than VirtualMachineError\n\nInstantiate InternalError instead of VirtualMachineError as the latter\nis abstract and not instantiable.\n\nChange-Id: I3e90b28a34bef02dd1c200c02cb832aa8dce10b3\n"
    },
    {
      "commit": "5ee771615a7e7752abb8b0d53122ca44137c4286",
      "tree": "54fe54d88d2afce65e30c81b5098ef09d15a49d7",
      "parents": [
        "d0111420a9f924fe560a97132d09ae531852fd69",
        "12af7a41c224923fb55699305008214636a1a3da"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:31:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 25 14:31:44 2016 +0000"
      },
      "message": "Merge \"Revert \"Method Handles: Add VarargsCollector.\"\""
    },
    {
      "commit": "12af7a41c224923fb55699305008214636a1a3da",
      "tree": "a93fcd7a973d0fd2b5dd7619858ca1e84a96408d",
      "parents": [
        "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "message": "Revert \"Method Handles: Add VarargsCollector.\"\n\nThis reverts commit ab52ce1480d9c4701bfe3ff3530596ec0c5760ee.\n\nChange-Id: Idc6dd28b58a61cbd2c9ee72e8a0eeb07b2ca0edf\n"
    },
    {
      "commit": "c3076fed3c087460410422a412c2aab3ea685ed4",
      "tree": "70713730572018ca051d7100ee452852496f12fc",
      "parents": [
        "be8440c9f91d03b2ba6ae125649e3379938bfa00",
        "b0bbe8e5c28c061bf4ef4086d3bbb2c5c5266979"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 25 08:32:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 25 08:32:37 2016 +0000"
      },
      "message": "Merge \"Use input-vdex-fd, or input-vdex in dex2oat.\""
    },
    {
      "commit": "be8440c9f91d03b2ba6ae125649e3379938bfa00",
      "tree": "2831fec18b88f3b9a5c898c6a0207bc9d0e4dd74",
      "parents": [
        "7b7a78e81128c30865b2b17a6f77bee286cbde74",
        "03bc659b04fefab6e1c9e08c5bd28fe8168c863f"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Nov 25 07:53:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 25 07:53:26 2016 +0000"
      },
      "message": "Merge changes Ia3853e46,Ic32af2ec,I79c6cc12,Idfd59472,I68720661\n\n* changes:\n  Refine OatStatus enum.\n  Factor out code for picking the best oat file.\n  Move dumping of oat file status inside of the OatFileAssistant.\n  Remove OatFileAssistant IsOutOfDate, IsUpToDate, and NeedsRelocation.\n  Simplify decision of which is the best oat file.\n"
    },
    {
      "commit": "03bc659b04fefab6e1c9e08c5bd28fe8168c863f",
      "tree": "1e27d6e28fd18479bd812f2abf4a88dbd36092e0",
      "parents": [
        "88bc673b146cb5fda01b4139b6e8ceec5221f106"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Nov 22 09:42:04 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Nov 24 16:49:27 2016 +0000"
      },
      "message": "Refine OatStatus enum.\n\nReplace Exists() with a separate OatStatus code, and distinguish\nbetween the oat file being out of date due to the dex being out of\ndate or the image being out of date.\n\nBug: 30937355\nTest: oat_file_assistant_test\nChange-Id: Ia3853e461beb07f0b417276b9277b9c562b20865\n"
    },
    {
      "commit": "b0bbe8e5c28c061bf4ef4086d3bbb2c5c5266979",
      "tree": "843178c1845f734cb068fc9c3c3cf17badb79416",
      "parents": [
        "dd77c2b4ff36db082edfbcf2631c78a9282689e1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 19 10:42:37 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 24 16:21:44 2016 +0000"
      },
      "message": "Use input-vdex-fd, or input-vdex in dex2oat.\n\ninput-vdex-fd is used by installd\ninput-vdex is used by run-tests, and (will be used by) go/lem\n\nThis change copies the contents of the passed vdex to the new one,\nunquicken the new vdex, and run the fast verification on the new\nvdex.\n\nbug:30937355\nTest: device boots, apps get updated faster with vdex\nTest: set TEST_VDEX to true in run-test-jar, run all tests\nTest: 628-vdex\n\nChange-Id: Idfbac4de411cebcf8ea7a6af7a417d7c7908dd72\n"
    },
    {
      "commit": "7b7a78e81128c30865b2b17a6f77bee286cbde74",
      "tree": "c8889679e5fd3cc2c95f483c35d3a065520c378a",
      "parents": [
        "4bb3c7fb33c3f8636e38884ddf023f2c9a39a413",
        "09ded9201fbeec605b12741ae255663c14bda225"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 24 13:05:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 24 13:05:13 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\"\""
    },
    {
      "commit": "09ded9201fbeec605b12741ae255663c14bda225",
      "tree": "c0276a06f8b6dba35e843098a05be326c8f5e2ac",
      "parents": [
        "25dcbad4462ea7279ee2bbe0884abc25bdfac77a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 24 13:03:57 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 24 13:03:57 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\"\n\n626-const-class-linking is failing (spurious wakeups?)\n970-iface-super-resolution-gen is failing:\n    dex2oatd F 11-24 10:57:16  6410  6410 image_writer.cc:1144]\n    Check failed: !IsBootClassLoaderClass(as_klass)\n    java.lang.Class\u003cjava.lang.NoSuchMethodError\u003e\n\nBug: 30627598\n\nThis reverts commit 25dcbad4462ea7279ee2bbe0884abc25bdfac77a.\n\nChange-Id: Ie010169bdde45e6ccf2e04a521da4682bd817114\n"
    },
    {
      "commit": "4bb3c7fb33c3f8636e38884ddf023f2c9a39a413",
      "tree": "d9fe04abf2cf2e3dcdf8fa84a3f8812b0fe265eb",
      "parents": [
        "8f3435981e67e4b78caf0130f81dcd9a87af531e",
        "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 24 11:57:29 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 24 11:57:30 2016 +0000"
      },
      "message": "Merge \"Method Handles: Add VarargsCollector.\""
    },
    {
      "commit": "8f3435981e67e4b78caf0130f81dcd9a87af531e",
      "tree": "dc84bd0ff5cca4bfc7ba10398242846004158d43",
      "parents": [
        "4b600964fe89b962afe3c9ae783a255789db4411",
        "25dcbad4462ea7279ee2bbe0884abc25bdfac77a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 24 10:07:53 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 24 10:07:53 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\""
    },
    {
      "commit": "88bc673b146cb5fda01b4139b6e8ceec5221f106",
      "tree": "aca0d84f067fa1901972c07f00c639e5c6922112",
      "parents": [
        "46cc64f11b1b1f0ac5e4aebd665b325a68d4d42f"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Nov 14 14:38:03 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Nov 24 07:54:03 2016 +0000"
      },
      "message": "Factor out code for picking the best oat file.\n\nFactor out common code for determining the best oat file.\n\nBug: 30937355\nTest: oat_file_assistant_test\n\nChange-Id: Ic32af2ec493675be1a22e81c2de46a848c398f6b\n"
    },
    {
      "commit": "46cc64f11b1b1f0ac5e4aebd665b325a68d4d42f",
      "tree": "182f28f92fb576b2ad586a368ac2d0761896e832",
      "parents": [
        "3e580bc9b248586fa5d87db2098fa5c5abb7afc1"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Nov 14 14:53:55 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Nov 24 07:54:03 2016 +0000"
      },
      "message": "Move dumping of oat file status inside of the OatFileAssistant.\n\nRather than exposing what could otherwise be internal to the\nOatFileAssistant, move the logic for dumping a human readable\nrepresentation of the status of the oat files inside the\nOatFileAssistant.\n\nBug: 30937355\nTest: oat_file_assistant_test\n\nChange-Id: I79c6cc1286a822f1dbe0035be934a2be4792563c\n"
    },
    {
      "commit": "3e580bc9b248586fa5d87db2098fa5c5abb7afc1",
      "tree": "c87d2bd3929b7d38dce320417013b3c932e25352",
      "parents": [
        "70a8426705571e84d83a060ae6abeb6d04cd2a17"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Nov 08 16:23:07 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Nov 24 07:54:03 2016 +0000"
      },
      "message": "Remove OatFileAssistant IsOutOfDate, IsUpToDate, and NeedsRelocation.\n\nRelatively recent design changes made these functions equivalent to\nthe Status function. Prefer to use the Status function instead to\nsimplify the OatFileAssistant API, especially in preparation for\nexpanding the number of possible Status results.\n\nBug: 30937355\nTest: oat_file_assistant_test\n\nChange-Id: Idfd594729210257f693f03ca823a8d54e74034c5\n"
    },
    {
      "commit": "70a8426705571e84d83a060ae6abeb6d04cd2a17",
      "tree": "768238710f9873bd74b6c74e0613449002517484",
      "parents": [
        "4b600964fe89b962afe3c9ae783a255789db4411"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Nov 08 16:51:51 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Nov 24 07:54:03 2016 +0000"
      },
      "message": "Simplify decision of which is the best oat file.\n\nPreviously the best oat file was determined by looking at all\ncombination of states of the oat file in the odex location and the oat\nlocation. This change simplifies the decision by using the oat\nlocation if that oat file is not out of date and using the odex\nlocation otherwise. For practical cases, both decisions lead to the\nsame result.\n\nBug: 30937355\nTest: oat_file_assistant_test\n\nChange-Id: I687206612914cdbd43950fcdd7dd818a54255a6b\n"
    },
    {
      "commit": "4b600964fe89b962afe3c9ae783a255789db4411",
      "tree": "f6508bcc09eb73cc8a4e7ec22b31e3b9667c72a5",
      "parents": [
        "b9bc47f0e24580a9dfafec830c709842b71aef89",
        "fc2dd6110c7ce5fc272836d1a7e48f3b40612c2d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 23 19:19:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 23 19:19:22 2016 +0000"
      },
      "message": "Merge \"Speed up verified methods\""
    },
    {
      "commit": "25dcbad4462ea7279ee2bbe0884abc25bdfac77a",
      "tree": "f8f8db090bf6735ead2c6999b7b574f4b7278056",
      "parents": [
        "dd77c2b4ff36db082edfbcf2631c78a9282689e1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 23 13:35:26 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 23 17:01:16 2016 +0000"
      },
      "message": "Revert \"Revert \"Make sure that const-class linkage is preserved.\"\"\n\nFix jdwp getting multiple instances of the same class.\nFix counting \"zygote\"/\"non-zygote\" classes in class table.\nFix FindClass() to EnsureResolved() classes added by\na racing thread to the class table.\n\nTest: m test-art-host\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug\nBug: 30627598\n\nThis reverts commit ecffc67068a28d55d131553bf915fdb9fafbbc03.\n\nChange-Id: I15807949da4f163c2693fac2fbfc274f17685f8a\n"
    },
    {
      "commit": "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee",
      "tree": "e1966edd05b7e7ca8e0e90ea2c2b90b3b9d10a32",
      "parents": [
        "bbf33111444f1c7665eb6ad21438f2ca97cd488e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 11 11:11:31 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 23 16:56:15 2016 +0000"
      },
      "message": "Method Handles: Add VarargsCollector.\n\nEnable support for methods with variable arity arguments.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\n\nChange-Id: I205724ddacc6c9840e18093a3984c1ad6e54394a\n"
    },
    {
      "commit": "e424c93c767dae47aa9dc02c99ee0aa63b2c072b",
      "tree": "c8ef0d76ab0b093476a25254bb83c6d1c730abbe",
      "parents": [
        "71601907b95a3527fc554a3a1724b3c12b872a7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 23 12:52:01 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 23 12:52:01 2016 +0000"
      },
      "message": "Update expectations in SetVerifierDeps/SetStackSample.\n\nSetStackSample might update an existing sample. So instead\ncheck that SetStackSample is only called in non-AOT mode, and\nSetVerifierDeps is only called in AOT mode.\n\nTest: 099-vmdebug\nChange-Id: I80dc3d61da651fb311364418802b0bb7e1ce9351\n"
    },
    {
      "commit": "1af0c4ff8b79ad44a4e12d7271a66d4e775ba224",
      "tree": "3e5e2527241d423290df454d551bf6787a052f0d",
      "parents": [
        "71601907b95a3527fc554a3a1724b3c12b872a7a"
      ],
      "author": {
        "name": "Julien Duraj",
        "email": "julien.duraj@linaro.org",
        "time": "Wed Nov 16 14:05:48 2016 +0000"
      },
      "committer": {
        "name": "Julien Duraj",
        "email": "julien.duraj@linaro.org",
        "time": "Wed Nov 23 10:37:31 2016 +0000"
      },
      "message": "Fix the target Linux builds of ART\n\nWhen ART_TARGET_LINUX was set it would hit some pieces of dead code that\nwere using old defines i.e. `__ANDROID__`\n\nTest: export ART_TARGET_LINUX\u003dtrue\nTest: source build/envsetup.sh\nTest: lunch\nTest: cd art \u0026\u0026 mma\n\nChange-Id: I80102750192928606e0884d2b723a87ccb7d7e19\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": "f215c5255ce817e3baca7d71f8de72001f6dfbcd",
      "tree": "dd664dbbdc616a66cb9495a6b428b47ac6079611",
      "parents": [
        "47d840bcf9b2fe323f54f55dd3c675f9ec59c6a3",
        "042e898f18767ed326980e3b07d39adbf98f6222"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 22 23:49:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 23:49:20 2016 +0000"
      },
      "message": "Merge changes from topic \u0027dex2oat_dexlayout\u0027\n\n* changes:\n  Add layout scheme to dexlayout for dex file reordering.\n  Add new --layout-profile compiler-filter for dex2oat.\n  Dexlayout cleanup and refactoring.\n"
    },
    {
      "commit": "47d840bcf9b2fe323f54f55dd3c675f9ec59c6a3",
      "tree": "318a5ea2d5d78b21790e6971771ffb6c7c67739c",
      "parents": [
        "0e5e9fd33521d0f9a2cc6551cb77b4b196e82082",
        "7a704bea1b1ff1e7deb903513997e0f35040287b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 23:09:48 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 23:09:48 2016 +0000"
      },
      "message": "Merge \"Always fill in root table length\""
    },
    {
      "commit": "7a704bea1b1ff1e7deb903513997e0f35040287b",
      "tree": "e94262da7f17cc3ffd4e7a8df337cbd96f62da0b",
      "parents": [
        "c394d0558de9afff6ab8b87ae9706497e01f37ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 13:24:40 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 13:30:47 2016 -0800"
      },
      "message": "Always fill in root table length\n\nOtherwise, there may be DCHECK failure in JitCodeCache::ClearData.\nFixes gcstress JIT tests.\n\nTest: test/run-test --host --relocate --prebuild  --64 --jit --gcstress --dev 021-string2\n\nChange-Id: I757ccd1e5a015c5e686254417a2a3f68b650da1c\n"
    },
    {
      "commit": "0e5e9fd33521d0f9a2cc6551cb77b4b196e82082",
      "tree": "9b85992de284e8e48f20d8eab3867f2175c1e6a2",
      "parents": [
        "f05ccaf2cc9882e8b2d0add30072fd2648bea88d",
        "28e74eda7dc2fa3139f09bb334901e33ef34b66e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 22 20:30:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 20:30:12 2016 +0000"
      },
      "message": "Merge \"Verify for type_id out of range errors\""
    },
    {
      "commit": "f05ccaf2cc9882e8b2d0add30072fd2648bea88d",
      "tree": "c92854218ee522a99c298d6f32a45327c14626dc",
      "parents": [
        "c394d0558de9afff6ab8b87ae9706497e01f37ff",
        "6f4d102e0c3029b3c74af13d3846a14e1c878a12"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 19:26:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 19:26:10 2016 +0000"
      },
      "message": "Merge \"Correctly handle EINTR return from futex\""
    },
    {
      "commit": "28e74eda7dc2fa3139f09bb334901e33ef34b66e",
      "tree": "ba79b6296f07da180cb54e0b946670bf5f821b4e",
      "parents": [
        "701bb7d1d750850b41b26c75255e1829efb4860e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Nov 21 12:52:12 2016 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Nov 22 10:44:35 2016 -0800"
      },
      "message": "Verify for type_id out of range errors\n\nThe dalvik documentation states that several fields used as type ids are\nuint, which is 32 bits.  Other places use uint16, which is obviously 16.\nThis adds assertions that there are fewer than 65536\nclass_def_items/class_data_items and that the fields in question are\neither valid (0 \u003c\u003d id \u003c\u003d 0xffff) or id \u003d\u003d kDexNoIndex (0xffffffff).\n\nTest: m test-art-host\nChange-Id: I584615192086e6d8bb30aa11217d569d6dbe1280\n"
    },
    {
      "commit": "ecffc67068a28d55d131553bf915fdb9fafbbc03",
      "tree": "3f63982d609fa01a5b271b5f393ee9c6d83e1107",
      "parents": [
        "b46782abf6752ccf688b0d9f5b4bb83e5d33793b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 22 17:37:21 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 22 17:41:49 2016 +0000"
      },
      "message": "Revert \"Make sure that const-class linkage is preserved.\"\n\nBug: 30627598\n\nThis reverts commit 19886dbeced9430579a27979beb92b09c95197b4.\nSquashed reverts of subsequent partial fixes.\n    This reverts commit bad475a63b7c938b7ff7903ea1dae27369c3f629.\n    This reverts commit 0ba0c7d9b0328af39a385014652eb9af4e42d8b5.\n    This reverts commit ddb8afec79492750f16f98e5bd07d44f3dc485d4.\n\nChange-Id: Id94af5ae56a0335f9641a79c885cc75bba971713\n"
    },
    {
      "commit": "608f2ce4b9870354079b9d63d40363914889f01a",
      "tree": "8b09e660646a63296b76d83877b725fdce7e3b56",
      "parents": [
        "ea7c62983beec6a5a2a6676cc910a436b20ae92c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 19 11:17:11 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 22 09:12:14 2016 -0800"
      },
      "message": "Add new --layout-profile compiler-filter for dex2oat.\n\nNew compiler filter makes dex2oat call into dexlayout.\nAdded basic test for --layout-profile filter to make sure dex2oat runs\nto completion and file is valid. Contests of file are not checked.\n\nTest: mm test-art-host-gtest-dexlayout_test\nBug: 29921113\nChange-Id: I4bd0dea3d3f1284c155d1d9dea80a48062e67770\n"
    },
    {
      "commit": "b46782abf6752ccf688b0d9f5b4bb83e5d33793b",
      "tree": "0e0a2434b6b68dab04c06e479c82610b8cce227a",
      "parents": [
        "24a56c620774c6f7bb2ef408895b9a48fe7ab4af",
        "340dafabc8e88378e395cda9027cf17726910e91"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 17:07:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 17:07:47 2016 +0000"
      },
      "message": "Merge \"Use a per-thread VerifierDeps.\""
    },
    {
      "commit": "f46501c6ad11025843682267c10f221323a206b1",
      "tree": "a5b77de81f5ab31e66082b02b225e7fe56877f98",
      "parents": [
        "71d15102b52af67e8fe1193192aa2b4cd1956ae0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 13:45:36 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:21:31 2016 +0000"
      },
      "message": "Clear the right data pointer.\n\nInternally, stack_map_data is an offset of the roots_data allocation.\nPass both to the ClearData method, which will use the right pointer\nto deallocate.\n\nTest: test-art-host in debug mode\nChange-Id: Ibfe38e7f1853870076048427f2efe7121c11c136\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": "9ee5fdf92f498d716c740cc1770943097f968092",
      "tree": "a1d7a4cb0a86500850d7eb96f5f2eb2bef90c487",
      "parents": [
        "da2d78ba97d177b80e0e9528362bcebc1fd31f0f",
        "19886dbeced9430579a27979beb92b09c95197b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 22 11:23:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 11:23:16 2016 +0000"
      },
      "message": "Merge \"Make sure that const-class linkage is preserved.\""
    },
    {
      "commit": "6f4d102e0c3029b3c74af13d3846a14e1c878a12",
      "tree": "18ad351a86cabf94c2bb7f4f8b9dff9d0ec7c59a",
      "parents": [
        "da2d78ba97d177b80e0e9528362bcebc1fd31f0f"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 21 14:35:42 2016 -0800"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 21 15:44:06 2016 -0800"
      },
      "message": "Correctly handle EINTR return from futex\n\nWe should handle EINTR the same way we do EAGAIN: they\u0027re both\ntransient failures. Either way, higher-level code (see\nReaderWriterMutex::SharedLock) will do the right thing, loop around,\nand try again.\n\nTest: code inspection\nChange-Id: I1eb7fb6851cc1a65acc9a0cf7cbeef787b6b28b6\n"
    },
    {
      "commit": "da2d78ba97d177b80e0e9528362bcebc1fd31f0f",
      "tree": "7316d4a29215b03095684c26bb08bfe484f2d903",
      "parents": [
        "668ba83a0a1c0d952e1f310f6332131d9dccc8be",
        "32b50302d9826430013e008b45d5c71e6b7a2469"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 21 23:32:45 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 23:32:46 2016 +0000"
      },
      "message": "Merge \"Check same dex file for finding class descriptor string id\""
    },
    {
      "commit": "668ba83a0a1c0d952e1f310f6332131d9dccc8be",
      "tree": "b87dad782d2a43ca2bfc16ec904e1667db114547",
      "parents": [
        "a598b869b255b4daeaa34d1dd0939222a3a791b7",
        "93c3090f39a99cce8ee063522746df2a254c4398"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 21 22:01:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 22:01:14 2016 +0000"
      },
      "message": "Merge changes I8e51415a,I79a255c1\n\n* changes:\n  ART: Add JNI local details for FollowReferences\n  ART: Fix generic_ptr handling in GetMethodName\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": "a598b869b255b4daeaa34d1dd0939222a3a791b7",
      "tree": "5af89e57aaa81cabbee54c924a9319814c39a81d",
      "parents": [
        "b2dc55149665fa288d44136642a6814a3a5a74a4",
        "a5b09a67034e57a6e10231dd4bd92f4cb50b824c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 21 21:17:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 21:17:32 2016 +0000"
      },
      "message": "Merge \"ART: Add dex::TypeIndex\""
    },
    {
      "commit": "b2dc55149665fa288d44136642a6814a3a5a74a4",
      "tree": "074ff9d91a2653b633de66133b19d91536e65e49",
      "parents": [
        "e38f0320dfb708272269ef53fd61b9be13b7bc98",
        "22f71d215679955372d8e24db3771fc7173dccb5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 21 20:43:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 20:43:12 2016 +0000"
      },
      "message": "Merge \"ART: Add boot classpath check for initialization\""
    },
    {
      "commit": "e38f0320dfb708272269ef53fd61b9be13b7bc98",
      "tree": "c032c5a0c74ca5c14d0b7d8bf17f3b6b254d6140",
      "parents": [
        "bb4366d2b0b56f2cc66041243bd93de4b8e4d15a",
        "1b868498a176705b867e2572cc1bcbd58dbd62d6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 21 20:19:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 20:19:59 2016 +0000"
      },
      "message": "Merge \"Use type lookup tables in compiler\""
    },
    {
      "commit": "19886dbeced9430579a27979beb92b09c95197b4",
      "tree": "33c85aada415308d8207d63bce903262ea7504fe",
      "parents": [
        "bb4366d2b0b56f2cc66041243bd93de4b8e4d15a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 11 11:40:40 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 21 19:11:31 2016 +0000"
      },
      "message": "Make sure that const-class linkage is preserved.\n\nAfter calling loadClass() on the initiating loader, insert\nthe Class to the ClassTable. Check that the returned class\nhas the correct name and that the ClassTable does not yet\ncontain a different Class for the same name. If either check\nfails, follow the RI behavior for parallel capable class\nloaders, i.e. throw NoClassDefFoundError for name mismatch\n(with more descriptive message than RI) or return the Class\nalready present in the ClassTable. This ensures that the\nconst-class instruction for a given name always gives the\nsame result as the first time it succeeded for the same\ninitiating loader, even for non-well-behaved loader.\n\nInserting the Class to the ClassTable is also a necessary\nstep for changing to hash-based dex cache type array when\nthe DexCache will not necessarily keep the Class and\ntherefore the defining loader alive while the initiating\nloader stays alive, so the ClassTable entry is necessary\nto keep the dependecy.\n\nAdd tests that a const-class instruction always returns the\nsame Class\u003c?\u003e as it returned the first time, i.e. when it\nwas \"linked\", even for class loaders that are not\nwell-behaved, even if the dex cache type array is cleared.\nAlso test the edge cases, i.e. NoClassDefFoundError and\nreturning old entry from ClassTable when already inserted\nby another thread.\n\nBug: 30627598\nTest: 626-const-class-linking\nTest: m test-art-host\nChange-Id: Ie9b721464b4e9a5dcce8df8095548e983bba1fe8\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": "22f71d215679955372d8e24db3771fc7173dccb5",
      "tree": "606cb89aa61b2a2c26dd80a3c47014178388d5f0",
      "parents": [
        "bb4366d2b0b56f2cc66041243bd93de4b8e4d15a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:10:08 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:49:58 2016 -0800"
      },
      "message": "ART: Add boot classpath check for initialization\n\nBoot classpath classes should not fail initialization.\n\nTest: m test-art-host\nChange-Id: I48af3ab6ab3d5c2589b804df8f4585f5a81ea169\n"
    },
    {
      "commit": "1b868498a176705b867e2572cc1bcbd58dbd62d6",
      "tree": "36e10d1cff265d54090571ab08ad2ae9ebda97c1",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 16:22:37 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 21 10:05:03 2016 -0800"
      },
      "message": "Use type lookup tables in compiler\n\nThis recently regressed and stopped happening, the fix creates fake\nOatDexFiles so that the compiler uses the type lookup tables instead\nof slow FindClassDef and FindTypeId.\n\nPerf on host compile Facebook:\nBefore:\n2.49%: art::DexFile::FindClassDef(unsigned short) const\n1.59%: art::DexFile::FindTypeId(char const*) const\n\nAfter:\n0.42%: art::OatDexFile::FindClassDef(art::DexFile const\u0026, char const*, unsigned long)\n0%: art::DexFile::FindTypeId(char const*) const\n0%: art::DexFile::FindClassDef(unsigned short) const\n\nAverage install (N6P 960 mhz average of 40 samples): 38.2s -\u003e 35.64s\n\nBug: 32641252\n\nTest: test-art-host, adb install.\n\nChange-Id: I34df21dc2c155bc2579c5cafdd91f9cb0fead1a9\n"
    },
    {
      "commit": "bb4366d2b0b56f2cc66041243bd93de4b8e4d15a",
      "tree": "55f0a91f873c438d6c45c71689cb09494c94c8f6",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34",
        "cca340b452baae0eb1fe37959063b63256bbef3b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 21 17:38:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 17:38:15 2016 +0000"
      },
      "message": "Merge \"ART: Fix line break in Throwable::Dump\""
    },
    {
      "commit": "dac7ad17c78387d15d7aefae0f852dddf5f37e34",
      "tree": "603b3ca74ba9144d217497417314fe863e2201ef",
      "parents": [
        "af524438b8a76264a23ec2d748e11eeded02abc7",
        "132d8363bf8cb043d910836672192ec8c36649b6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 21 10:14:06 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 10:14:07 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\"\""
    },
    {
      "commit": "cca340b452baae0eb1fe37959063b63256bbef3b",
      "tree": "7fe99930aff2899be156f1dfd7de48ef774ee5be",
      "parents": [
        "f8f36c246ee46522a7446e6f3a155e0fc5c7b859"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 18 17:43:05 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 19 14:58:02 2016 -0800"
      },
      "message": "ART: Fix line break in Throwable::Dump\n\nAdd line breaks for missing stack traces.\n\nTest: m test-art-host\nChange-Id: I0624ed19d6d025b7c00d6e6fb55827577bffc7b6\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"
    }
  ],
  "next": "320ba91911c840528893e07b0af43d317cd4c9aa"
}
