)]}'
{
  "log": [
    {
      "commit": "14632857428b7e37761e6e811c19021715a400f8",
      "tree": "1774ef3ed5b973ce661b761814bd86bdbfa8fdbc",
      "parents": [
        "8ecc1357e2c682165467ca8e10c7a748f7554df2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 17 12:07:23 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 17 14:49:34 2015 +0100"
      },
      "message": "ART: Rename ArtMethod\u0027s size and alignment methods.\n\nRemove the historical prefix \"Object\" to avoid confusion\nwith Java objects.\n\nChange-Id: Ib36422c9a24878d8d4bd757977d99cbf66b3d567\n"
    },
    {
      "commit": "14d90579f013b374638b599361970557ed4b3f09",
      "tree": "fe8f9f7b527e73c20078557eefd74615c2cfc7f8",
      "parents": [
        "5c03f3698f5e2e0d762e2e15ec00310b6cdab4fe"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "message": "Use (D)CHECK_ALIGNED more.\n\nChange-Id: I9d740f6a88d01e028d4ddc3e4e62b0a73ea050af\n"
    },
    {
      "commit": "7bf2b4f1d08050f80782217febac55c8cfc5e4ef",
      "tree": "61b26b116454c5a114ac4b2f55c71153be7a9d43",
      "parents": [
        "569e81e500725f52116b7d0342ec80a6d1e0089b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 10:11:59 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 14:22:19 2015 +0100"
      },
      "message": "Revert \"Revert \"Remove interpreter entrypoint in ArtMethod.\"\"\n\nThe start of the interned strings in the image was not aligned\nproperly, now that ArtMethods just need to be word aligned.\n\nThis reverts commit 7070ccd8b6439477eafeea7ed3736645d78e003f.\n\nbug:22242193\n\nChange-Id: I580c23310c33c239fe0e5d15c72f23a936f58ed1\n"
    },
    {
      "commit": "7070ccd8b6439477eafeea7ed3736645d78e003f",
      "tree": "e32dca6b4342ce7b42952e0d9150a85fba361562",
      "parents": [
        "fa2c054b28d4b540c1b3651401a7a091282a015f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:41:54 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:41:54 2015 +0000"
      },
      "message": "Revert \"Remove interpreter entrypoint in ArtMethod.\"\n\nBuild failures on bots. Investigating.\n\nThis reverts commit fa2c054b28d4b540c1b3651401a7a091282a015f.\n\nChange-Id: Id65b2009aa66cb291fb8c39758a58e0b0d22616c\n"
    },
    {
      "commit": "fa2c054b28d4b540c1b3651401a7a091282a015f",
      "tree": "d39c2eca12dce2e0366a092b05715b3eab1319b4",
      "parents": [
        "c87c8939ea1bcfbddb954478d527cf1138f4f343"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 01 14:32:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:31:25 2015 +0100"
      },
      "message": "Remove interpreter entrypoint in ArtMethod.\n\nSaves 4/8 bytes for each ArtMethod.\n\nChange-Id: I110ecdddf8516b0759a31fa157609643e6d60b15\n"
    },
    {
      "commit": "c37769b63faf7b120a6ed80f5cfb92667f5090c4",
      "tree": "6b5d743c3f2a41db3c97383271ba6c9d7ec28986",
      "parents": [
        "088bd0d28acb70302d20f6e19a9db7f0536c09ee"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 17 09:49:40 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 17 09:54:19 2015 +0100"
      },
      "message": "Fix lint error.\n\nBlank line at the start of a code block.\n\nChange-Id: Ifc0d78acc8b2eecbdc1a340009757f9218ce2c5c\n"
    },
    {
      "commit": "f775bab533cd385c00ee30b56bdcb6f962fc5239",
      "tree": "ec75c8e59ccb6c8ef0224ecec943d44bf7eca4e7",
      "parents": [
        "ed44919da8f7ab96117fd9d30b3fbfcd88f1433c"
      ],
      "author": {
        "name": "Oleksiy Vyalov",
        "email": "ovyalov@google.com",
        "time": "Sun Jun 14 15:17:26 2015 -0700"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 17 09:16:09 2015 +0100"
      },
      "message": "Set default visibility on art_sigsegv_fault.\n\nlibart.so is built with flag -fvisibility\u003dprotected\nwhich complicates setting breakpoints on art_sigsegv_fault.\nAccording to the GCC manual \"Protected visibility indicates\nthat the symbol will be placed in the dynamic symbol table,\nbut that references within the defining module will bind\nto the local symbol.\". This implies that a breakpoint on\na protected symbol will not be hit.\n\nWithout this change gdbclient with ART debugging enabled\ndoesn\u0027t break at art_sigsegv_fault as expected.\n\nChange-Id: Ib73344e710966eddf55a6facb29558504a511f00\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "2cd334ae2d4287216523882f0d298cf3901b7ab1",
      "tree": "b72d3d07e5a04151caca96cae345075b6e4452b0",
      "parents": [
        "604e2828896fbb8663897d1e75112da7305ead4c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 14:03:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 23 14:07:32 2015 -0800"
      },
      "message": "More of the concurrent copying collector.\n\nBug: 12687968\nChange-Id: I62f70274d47df6d6cab714df95c518b750ce3105\n"
    },
    {
      "commit": "f7ebda43cb185b6414a2e86eef95eaf10b74db2c",
      "tree": "904c51e03d06ec37268bba0ce29fd73f073b9b03",
      "parents": [
        "ea09c1ed912bd5cc87aada58f3f24825940fb148",
        "5e2b8747df8eabdd0daf091f1afe3b7b3d6c2719"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Dec 02 03:10:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 02 03:10:22 2014 +0000"
      },
      "message": "Merge \"Fix fault handler invoked before vm running.\""
    },
    {
      "commit": "a7dd0386f35c0ba4aef3f5b16bc84c6f4e2fc702",
      "tree": "86bcc8c05fb3f868dbdae3dcacbf95de880d4d64",
      "parents": [
        "af6dad6cbb6685f92d7274f9e8c45baa98232c79"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 20 17:08:58 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 21 10:11:41 2014 -0800"
      },
      "message": "Fix oatdump to use OatHeader pointer size\n\nBug: 18473190\nChange-Id: If505b4f62105899f4f1257d3bccda3e6eb0dcd7c\n\n(cherry picked from commit c934e483ceabbd589422beea1fa35f5182ecfa99)\n"
    },
    {
      "commit": "5e2b8747df8eabdd0daf091f1afe3b7b3d6c2719",
      "tree": "4a24eef9397d422be230e08881c37783a796eb2f",
      "parents": [
        "a971100be7870544360fa8a46311ef7f5adb6902"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 18 15:50:47 2014 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 20 15:47:29 2014 -0800"
      },
      "message": "Fix fault handler invoked before vm running.\n\nIf the ART fault handler is invoked before the vm is running, the\ncode derefences a NULL pointer. In this case, just invoke the next\nhandler in the chain instead.\n\nChange-Id: I58f0493eae1825d7a92a1e052c88e80527914dba\n"
    },
    {
      "commit": "ad11e7af5d7be04b35bdc5c17e6c058b9b1d8b49",
      "tree": "022b57dcb03c2bf3111f40de27c6de8805f9c7ea",
      "parents": [
        "f4d4da18aa1914d10264082bd0433f59bff45453"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:55:11 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:55:11 2014 -0800"
      },
      "message": "Don\u0027t try to handle nested SIGSEGV inside fault handler.\n\nTrying to handle nested SIGSEGV in the fault handler leads to infinite signals\nand retrying if the cause of the SIGSEGV was a lack of stack space. This can\nlead to applications not chaining through to debuggerd and dying.\nBug: 18330119\n\nChange-Id: Iadcffe0fa0e55d783b84a06504bbd9d181e641e4\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "1d8cdbc5202378a5f1a4b3a1fba610675ed4dcd5",
      "tree": "6a1b0f49aee5a97b513bd0becc734d284aa7fb65",
      "parents": [
        "1c1786f193323d3bd706463894001117f3471595"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 22 22:51:09 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 20 16:01:28 2014 -0700"
      },
      "message": "Refactor quick entrypoints\n\nRemove FinishCalleeSaveFrameSetup.\nAssembly routines write down anchor into TLS as well as placing runtime\nmethod in callee save frame.\nSimplify artSet64InstanceFromCode by not computing the referrer from the\nstack in the C++ code.\nMove assembly offset tests next to constant declaration and tidy arch_test.\n\nChange-Id: Iededeebc05e54a1e2bb7bb3572b8ba012cffa1c8\n"
    },
    {
      "commit": "d000480134b7b00895fbfd142f1d1e18d9cfa6e9",
      "tree": "a9fab808555310308aecda2a59a7c90727ede0ff",
      "parents": [
        "d866c7616cb3426c431b635ae69964ce69c2ecb5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 15 16:59:47 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 16 19:16:41 2014 -0700"
      },
      "message": "Add way to ensure we are at the front of the sigaction chain\n\nCalling this after jni_on_load fixes the unity apps. This is\nnot exactly correct since we may already have the following chain.\n\nStart up:\nUs -\u003e debuggerd\n\nAfter app goes in front:\nApp -\u003e us -\u003e debuggerd\n\nAfter we put ourself back at the front:\nUs -\u003e app -\u003e us -\u003e app -\u003e .... stack overflow.\n\nBug: 17620677\nChange-Id: I9183997e3d5ebd51c320b5d51425be5142e938f3\n\n(cherry picked from commit 1f24296c7c8a6501ee2388c0d20b48f471b48660)\n"
    },
    {
      "commit": "928f72bd75c385ba2708c58521171a77264d4486",
      "tree": "86f7fa7a21e3f6d21c9cab2d4fffe4aaa42dc458",
      "parents": [
        "dab9ed52f2df7189b81ccf3237b030ff638a492a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 09 19:53:48 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 10 15:50:42 2014 -0700"
      },
      "message": "ART: Fix things for valgrind\n\nWire up valgrind gtests. Add valgrind-test-art-host, currently\nonly depending on valgrind-test-art-host-gtest32.\n\nFix an Alloc setting to allow running valgrind.\n\nRefactor the fault handler to manage (and correctly release) the\nhandlers.\n\nFix minor failure-case leaks exposed by tests.\n\nFailing tests:\n\nThe optimizing compiler is leaking non-arena-ed structures\n(e.g., assembler buffers), as code generators are not destroyed.\nThe solution has been moved to a follow-up CL.\n\nNote: All 64b tests are failing as we cannot allocate a heap.\n\nChange-Id: I7f854cfd098d9f68107ce492363e7dba9a82b9fa\n"
    },
    {
      "commit": "8be44cf31e76465090d717ccadcabeb079e03f5e",
      "tree": "a1bbecc3c44276c2c636e79e144ca2979cd0b615",
      "parents": [
        "0c2894b5db7ad9ccc44f2ac37034cdc2bb05cda7"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Sep 04 14:33:42 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Sep 04 14:33:42 2014 -0700"
      },
      "message": "Fix arm64 build warning (promoted to error).\n\nThis refactors code that caused an warning on the arm64 build.\n\nChange-Id: I1c0ddabb7061ea289d98b03554bf764c26256078\n"
    },
    {
      "commit": "0c2894b5db7ad9ccc44f2ac37034cdc2bb05cda7",
      "tree": "f0b95af077b55ee06bc9b3b1f4a4d04c743a5f13",
      "parents": [
        "5355835411cafcc2772e061cb7aef3b8ca1e6ea1"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Aug 29 12:06:16 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Sep 04 10:27:48 2014 -0700"
      },
      "message": "Make nested signal more generic\n\nThis moves the nested signal catching code up to a slightly higher\nlevel in the fault manager.  Originally it was down in the DumpJavaStack\nfunction but it needs to be up in the caller of that to allow for other\nhandlers like the stack dumper.\n\nChange-Id: I31029f555dd9b501f4b5c0ed5c95777004873126\n"
    },
    {
      "commit": "8ce6b9040747054b444a7fa706503cd257801936",
      "tree": "04712170addb252d307ef9015abfc9bfc2b73581",
      "parents": [
        "a0a0da29e7d4d5c1bd471c49f1a4b6ec98fb767a"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Aug 26 11:07:58 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Aug 27 12:47:44 2014 -0700"
      },
      "message": "Handle nested signals\n\nThis allows for signals to be raised inside the ART signal handler.\nThis can occur when the JavaStackTraceHandler attempts to generate\na stack trace and something goes wrong.\n\nIt also fixes an issue where the fault manager was not being\ncorrectly shut down inside the signal chaining code.  In this\ncase the signal handler was not restored to the original.\n\nBug: 17006816\nBug: 17133266\n\n(cherry picked from commit fabe91e0d558936ac26b98d2b4ee1af08f58831d)\n\nChange-Id: I10730ef52d5d8d34610a5293253b3be6caf4829e\n"
    },
    {
      "commit": "1f8ef6fa2fb5d79799371f8bf745824b78bc48f2",
      "tree": "0ecf06cfc561501ad65ad774848ce2f30808c123",
      "parents": [
        "00b3024b350afef115bddea712705bdb4877ac11"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Aug 20 17:38:41 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Aug 21 12:04:02 2014 -0700"
      },
      "message": "Fix fault handler to unregister on shutdown\n\nThis fixes a problem with the fault handler where it wasn\u0027t\nunregistering itself during shutdown of the runtime.\n\nBug: 17133266\n\n(cherry picked from commit e8b9afcd0cd86b8808af29a97332038aab70c604)\n\nChange-Id: I1a4ec4292ec049046dda30769265680201729efb\n"
    },
    {
      "commit": "dfd3b47813c14c5f1607cbe7b10a28b1b2f29cbc",
      "tree": "b71dbae2ef905c08eb4cf615c8b44868cc314531",
      "parents": [
        "8b62dc0f993d0445401655fc274e5225498fa81c"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Jul 16 16:04:32 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Aug 07 09:26:35 2014 -0700"
      },
      "message": "Add implicit checks for x86_64 architecture.\n\nThis combines the x86 and x86_64 fault handlers into one.  It also\nmerges in the change to the entrypoints for X86_64.\n\nReplaces generic instruction length calculator with one that only\nworks with the specific instructions we use.\n\nBug: 16256184\n\nChange-Id: I1e8ab5ad43f46060de9597615b423c89a836035c\nSigned-off-by: Chao-ying Fu \u003cchao-ying.fu@intel.com\u003e\n"
    },
    {
      "commit": "69dfe51b684dd9d510dbcb63295fe180f998efde",
      "tree": "daa2522650ca03417e4518dc8aef989ec53a6065",
      "parents": [
        "479f131d4bd3829dd512312020808b05f5a591f1"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Jul 11 17:11:58 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Jul 16 14:58:27 2014 -0700"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Add implicit null and stack checks for x86\"\"\"\"\n\nThis reverts commit 0025a86411145eb7cd4971f9234fc21c7b4aced1.\n\nBug: 16256184\nChange-Id: Ie0760a0c293aa3b62e2885398a8c512b7a946a73\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "0025a86411145eb7cd4971f9234fc21c7b4aced1",
      "tree": "933b8b96ea970c23a7b3ce313c7c6d46f807dadd",
      "parents": [
        "7fb36ded9cd5b1d254b63b3091f35c1e6471b90e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 11 08:26:40 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 11 08:26:40 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add implicit null and stack checks for x86\"\"\"\n\nBroke the build.\n\nThis reverts commit 7fb36ded9cd5b1d254b63b3091f35c1e6471b90e.\n\nChange-Id: I9df0e7446ff0913a0e1276a558b2ccf6c8f4c949\n"
    },
    {
      "commit": "7fb36ded9cd5b1d254b63b3091f35c1e6471b90e",
      "tree": "eb1e3b96efd67cc6b84a6f7e35522f33973ca8db",
      "parents": [
        "93279da4a8475d187a0a2e75d50c88def5b4b8a5"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 02:05:10 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 21:24:47 2014 +0000"
      },
      "message": "Revert \"Revert \"Add implicit null and stack checks for x86\"\"\n\nFixes x86_64 cross compile issue.  Removes command line options\nand property to set implicit checks - this is hard coded now.\n\nThis reverts commit 3d14eb620716e92c21c4d2c2d11a95be53319791.\n\nChange-Id: I5404473b5aaf1a9c68b7181f5952cb174d93a90d\n"
    },
    {
      "commit": "3d14eb620716e92c21c4d2c2d11a95be53319791",
      "tree": "aadce4d6bb70e549b74b537c6f75617cf533576a",
      "parents": [
        "34e826ccc80dc1cf7c4c045de6b7f8360d504ccf"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 01:54:57 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 01:54:57 2014 +0000"
      },
      "message": "Revert \"Add implicit null and stack checks for x86\"\n\nIt breaks cross compilation with x86_64.\n\nThis reverts commit 34e826ccc80dc1cf7c4c045de6b7f8360d504ccf.\n\nChange-Id: I34ba07821fc0a022fda33a7ae21850957bbec5e7\n"
    },
    {
      "commit": "34e826ccc80dc1cf7c4c045de6b7f8360d504ccf",
      "tree": "76901cff2cddd6d30cb7a4e83ad4e0c9bb673fe1",
      "parents": [
        "c21dc06adc8c8447561208a3fb72ccf6d0443613"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu May 29 08:20:04 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Jul 09 16:19:59 2014 -0700"
      },
      "message": "Add implicit null and stack checks for x86\n\nThis adds compiler and runtime changes for x86\nimplicit checks.  32 bit only.\n\nBoth host and target are supported.\nBy default, on the host, the implicit checks are null pointer and\nstack overflow.  Suspend is implemented but not switched on.\n\nChange-Id: I88a609e98d6bf32f283eaa4e6ec8bbf8dc1df78a\n"
    },
    {
      "commit": "c5f17732d8144491c642776b6b48c85dfadf4b52",
      "tree": "811daa488ae5ee5dfd9b3b73bd210bc1506e5ca1",
      "parents": [
        "08654d40cdd256f6a6c8619bf06d04d4c819714a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 05 20:48:42 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 10 23:19:29 2014 -0700"
      },
      "message": "Remove deprecated WITH_HOST_DALVIK.\n\nBug: 13751317\nFix the Mac build:\n - disable x86 selector removal that causes OS/X 10.9 kernel panics,\n - madvise don\u0027t need does zero memory on the Mac, factor into MemMap\n   routine,\n - switch to the elf.h in elfutils to avoid Linux kernel dependencies,\n - we can\u0027t rely on exclusive_owner_ being available from other pthread\n   libraries so maintain our own when futexes aren\u0027t available (we\n   can\u0027t rely on the OS/X 10.8 hack any more),\n - fix symbol naming in assembly code,\n - work around C library differences,\n - disable backtrace in DumpNativeStack to avoid a broken libbacktrace\n   dependency,\n - disable main thread signal handling logic,\n - align the stack in stub_test,\n - use $(HOST_SHLIB_SUFFIX) rather than .so in host make file variables.\n\nNot all host tests are passing on the Mac with this change. dex2oat\nworks as does running HelloWorld.\nChange-Id: I5a232aedfb2028524d49daa6397a8e60f3ee40d3\n"
    },
    {
      "commit": "cf4035a4c41ccfcc3e89a0cee25f5218a11b0705",
      "tree": "323d9e98e6129c67e464a3e6857ee02593a2f2c2",
      "parents": [
        "29b53d3d715b1ec19349e8cbf7c5e4ff529bd5fe"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 28 22:43:01 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 29 20:50:49 2014 -0700"
      },
      "message": "ART: Use StackReference in Quick Stack Frame\n\nThe method reference at the bottom of a quick frame is a stack\nreference and not a native pointer. This is important for 64b\narchitectures, where the notions do not coincide.\n\nChange key methods to have StackReference\u003cmirror::ArtMethod\u003e*\nparameter instead of mirror::ArtMethod**. Make changes to\ninvoke stubs for 64b archs, change the frame setup for JNI code\n(both generic JNI and compilers), tie up loose ends.\n\nTested on x86 and x86-64 with host tests. On x86-64, tests succeed\nwith jni compiler activated. x86-64 QCG was not tested.\n\nTested on ARM32 with device tests.\n\nFix ARM64 not saving x19 (used for wSUSPEND) on upcalls.\n\nTested on ARM64 in interpreter-only + generic-jni mode.\n\nFix ARM64 JNI Compiler to work with the CL.\n\nTested on ARM64 in interpreter-only + jni compiler.\n\nChange-Id: I77931a0cbadd04d163b3eb8d6f6a6f8740578f13\n"
    },
    {
      "commit": "f4b80bcc7190fe75023b983d56a795b440a0c515",
      "tree": "f2858dab6a756444755b79e36467d6c9e15060f1",
      "parents": [
        "c774bd435e95e537ca578486f687651fabe97008"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed May 14 15:41:25 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu May 29 08:22:38 2014 -0700"
      },
      "message": "Make use of sigchainlib for signal chaining for implicit checks\n\nThis adds a preload library that overrides sigaction and sigprocmask\nto implement signal chaining.  Signal chaining allows us to chain\nany signal so that the ART runtime receives it before any signal\nhandler registered in native code by an application.  If the\nART signal handler doesn\u0027t want it, it will pass it on to the\nuser\u0027s handler.\n\nART uses signals for null pointer checks, stack overflow checks and\nsuspend points.\n\nAlso adds an OAT test to test this in isolation.\n\nChange-Id: I9545f9f7343774c091410eb810504d9855fd399f\n"
    },
    {
      "commit": "ee618f5b4ccbb83170490e8ebdcacd469f63807f",
      "tree": "667011b2daf87dae766686a053de14075b586169",
      "parents": [
        "6d49184bb841f2645924361d945a8bc418fc05c6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 19 18:56:13 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 20 14:10:42 2014 -0700"
      },
      "message": "Move another LOG to VLOG(signals)\n\nBug: 15024631\nChange-Id: I5ef79292a69fe268fa52663731a38cfb3b856f32\n"
    },
    {
      "commit": "537aaf122b93cd72e3e886831c686c3b2f83e441",
      "tree": "f9befe6e1af737b97eec9aa334039ef1591be7a2",
      "parents": [
        "9d7546662eb7138a7263f12f70d884554483a5a6",
        "ad9697a91d5acdc772ae6c0461540bfec358a070"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri May 09 22:04:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 09 22:04:58 2014 +0000"
      },
      "message": "Merge \"Revert \"Switch on implicit null pointer and stack overflow checks.\"\""
    },
    {
      "commit": "ad9697a91d5acdc772ae6c0461540bfec358a070",
      "tree": "485c2883d04d23c63f983305cb4bbdbc0e499a85",
      "parents": [
        "052664322767de1799f060c306e729b0e73ce893"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri May 09 21:42:36 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri May 09 21:42:36 2014 +0000"
      },
      "message": "Revert \"Switch on implicit null pointer and stack overflow checks.\"\n\nThis seems to break facebook\n\nThis reverts commit 052664322767de1799f060c306e729b0e73ce893.\n\nChange-Id: I6c8dabdc2519c0925ffde41975878f821e3933de\n"
    },
    {
      "commit": "4d466a8e4587422c989705dce3b2a19e7f0137f5",
      "tree": "bd8f0f45db9a7d5888b14a070690f59fb599bd68",
      "parents": [
        "f1c036fc8fa97617cc42bda44a0adbc7b856d6cd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 08 19:05:29 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 09 12:23:00 2014 -0700"
      },
      "message": "Remove all LOG(DEBUG) which is not intended to be checked in\n\nBug: 14632493\nChange-Id: Id9da8b87798af0a1b2bd2c178133e5f1ba47d43d\n"
    },
    {
      "commit": "069849e1469b55984d9e208b2ada345aa57f8947",
      "tree": "e7b21f7ec9ba74fe62ac84809e3dffc57ef31682",
      "parents": [
        "47ebd77a6d249403a34d242908749b7446da2a82",
        "052664322767de1799f060c306e729b0e73ce893"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue May 06 22:44:27 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 06 22:44:28 2014 +0000"
      },
      "message": "Merge \"Switch on implicit null pointer and stack overflow checks.\""
    },
    {
      "commit": "052664322767de1799f060c306e729b0e73ce893",
      "tree": "71b6229caea53935aada8fd96784992162e6d553",
      "parents": [
        "36b65964d128471d917c2efc69c81bc50ef9360b"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon May 05 13:17:37 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue May 06 11:08:42 2014 -0700"
      },
      "message": "Switch on implicit null pointer and stack overflow checks.\n\nThis switches on the use of implicit checks for null pointers\nand stack overflows.  These use the SIGSEGV handler in the ART\nruntime to detect these conditions and throw the appropriate\nexceptions.\n\nChange-Id: I4d27d4e976a58b18fb16a89572b1fb3798608449\n"
    },
    {
      "commit": "5cd33753b96d92c03e3cb10cb802e68fb6ef2f21",
      "tree": "b2217cb48e1f1db1aae7a92f8d5dbac5f2d95603",
      "parents": [
        "8ea5baa10b04e9dbd0f0cf14b0358fe8b956bb2e"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Apr 15 15:57:58 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon May 05 12:44:15 2014 -0700"
      },
      "message": "Handle implicit stack overflow without affecting stack walks\n\nThis changes the way in which implicit stack overflows are handled\nto satisfy concerns about changes to the stack walk code.\n\nInstead of creating a gap in the stack and checking for it in\nthe stack walker, use the ManagedStack infrastructure to concoct\nan invisible gap that will never be seen by a stack walk.\n\nAlso, this uses madvise to tell the kernel that the main stack\u0027s\nprotected region will probably never be accessed, and instead\nof using memset to map the pages in, use memcpy to read from\nthem.  This will save 32K on the main stack.\n\nAlso adds a \u0027signals\u0027 verbosity level as per a review request.\n\nBug: 14066862\nChange-Id: I5257305feeaea241d11e6aa6f021d2a81da20b81\n"
    },
    {
      "commit": "c751fdcc9491c1b60c3db517fbc41bb98e92441f",
      "tree": "a59258cf4b9c46e928e547216554149635e6d4f2",
      "parents": [
        "e0309ad355e778fe692beb8968bf8aa7edbd3302"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 30 15:25:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 01 10:58:22 2014 -0700"
      },
      "message": "Add handler for printing java stack traces for compiled code SIGSEGV.\n\nAdded a new FaultHandler which attempts to print a java stack trace\nwhen a SIGSEGV occurse in generated code. This should help debugging\ncompiler and GC related heap corruption.\n\nBug: 13725693\nBug: 12934910\n\nChange-Id: Id54d83ea180c222eb86d449c61926e83f0b026ad\n"
    },
    {
      "commit": "f943914730db8ad2ff03d49a2cacd31885d08fd7",
      "tree": "885a781e5f8bd852e2c1615108ae7b17576a6567",
      "parents": [
        "cfd5acf281b0c509f86b13d73c6a8dfa3ea9922c"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 27 15:10:22 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon Mar 31 18:04:08 2014 -0700"
      },
      "message": "Implement implicit stack overflow checks\n\nThis also fixes some failing run tests due to missing\nnull pointer markers.\n\nThe implementation of the implicit stack overflow checks introduces\nthe ability to have a gap in the stack that is skipped during\nstack walk backs.  This gap is protected against read/write and\nis used to trigger a SIGSEGV at function entry if the stack\nwill overflow.\n\nChange-Id: I0c3e214c8b87dc250cf886472c6d327b5d58653e\n"
    },
    {
      "commit": "15245bc8bcafc791398668de5e05befbec4749f2",
      "tree": "ecbbc06a17bc770cb8764c0c69be285d2b3d3409",
      "parents": [
        "749acb9ee4ae531194371ba7660a6dc2197791e5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 14 12:53:43 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 14 12:53:43 2014 +0000"
      },
      "message": "mips has no sa_restorer.\n\nThis change should be a no-op, because we\u0027re not using\nit anyway. FaultManager doesn\u0027t seem designed for inheritance,\nso I can\u0027t put this in an arch specific subclass.\n\nChange-Id: I2eaabdf2a77ef558c59139344f8654cf3ccafa86\n"
    },
    {
      "commit": "b373e091eac39b1a79c11f2dcbd610af01e9e8a9",
      "tree": "034d820c4829e0dcf6161473cc39f7250123bfaa",
      "parents": [
        "9545a446e99b22248099fe66f5f9431530c20851"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Feb 20 16:06:36 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 13 12:21:15 2014 -0700"
      },
      "message": "Implicit null/suspend checks (oat version bump)\n\nThis adds the ability to use SEGV signals\nto throw NullPointerException exceptions from Java code rather\nthan having the compiler generate explicit comparisons and\nbranches.  It does this by using sigaction to trap SIGSEGV and when triggered\nmakes sure it\u0027s in compiled code and if so, sets the return\naddress to the entry point to throw the exception.\n\nIt also uses this signal mechanism to determine whether to check\nfor thread suspension.  Instead of the compiler generating calls\nto a function to check for threads being suspended, the compiler\nwill now load indirect via an address in the TLS area.  To trigger\na suspend, the contents of this address are changed from something\nvalid to 0.  A SIGSEGV will occur and the handler will check\nfor a valid instruction pattern before invoking the thread\nsuspension check code.\n\nIf a user program taps SIGSEGV it will prevent our signal handler\nworking.  This will cause a failure in the runtime.\n\nThere are two signal handlers at present.  You can control them\nindividually using the flags -implicit-checks: on the runtime\ncommand line.  This takes a string parameter, a comma\nseparated set of strings.  Each can be one of:\n\nnone        switch off\nnull        null pointer checks\nsuspend     suspend checks\nall         all checks\n\nSo to switch only suspend checks on, pass:\n-implicit-checks:suspend\n\nThere is also -explicit-checks to provide the reverse once\nwe change the default.\n\nFor dalvikvm, pass --runtime-arg -implicit-checks:foo,bar\n\nThe default is -implicit-checks:none\n\nThere is also a property \u0027dalvik.vm.implicit_checks\u0027 whose value is the same\nstring as the command option.  The default is \u0027none\u0027.  For example to switch on\nnull checks using the option:\n\nsetprop dalvik.vm.implicit_checks null\n\nIt only works for ARM right now.\n\nBumps OAT version number due to change to Thread offsets.\n\nBug: 13121132\nChange-Id: If743849138162f3c7c44a523247e413785677370\n"
    }
  ]
}
