)]}'
{
  "log": [
    {
      "commit": "e343b76af81a005ef64f5e75a555389fd9147dab",
      "tree": "f6ec517c56338244d06723c49d610b5d948c3fa7",
      "parents": [
        "5b245f344cbe8402cfe35c3a42988081e71208bc"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 05 16:36:44 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 07 16:34:28 2011 -0800"
      },
      "message": "Stub to capture method entry/exit.\n\nAdded stubs to allow traceview to do method tracing. Currently only\noutputs to logcat, and a later change will generate the proper log file.\n\nChange-Id: Icaafc50e2eaf042ddc4d882011f7e8121bdd8b1c\n"
    },
    {
      "commit": "b093c6b27f8ea9bbe2d49c03ebe345203a121199",
      "tree": "34e49f46eb30a2aee8590dbf11365c8b5824c16b",
      "parents": [
        "95e4ef7cebf2e33b6e73a3957089f958e41771f5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 16:19:55 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 16:19:55 2011 -0700"
      },
      "message": "Support for access check in checkcast and instanceof.\n\nChange-Id: Ie15216618b35cace7d351be2b0a1c466ed6db489\n"
    },
    {
      "commit": "28ad40dc3ec2f09b0ffd4f6d6787bf1b532ccd5d",
      "tree": "f5628e47948a0d255112a3a7a01b67db41c8d424",
      "parents": [
        "e0918556e7551de638870dcad3f2023f94f85a50"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 27 15:19:26 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 28 23:14:15 2011 -0700"
      },
      "message": "Support for unresolved types in new-instance during verification.\n\nAlso, ensure that classes that don\u0027t load are erroneous, warn early\nabout exceptions left on a thread by the verifier/compiler, factor out\nslowpath checks for the compiler and fix the slowpath selector for\nconst-class.\n\nThis change causes more dex cache misses at runtime (more slowpath\nexecution). It also requires a \"mm clean-oat\".\n\nChange-Id: I014b49ebdd7d8f7dd2e39cc0958fc0b708d58c4c\n"
    },
    {
      "commit": "cc4540ece917ef4b5c81ee684e3294e47e49ff5b",
      "tree": "a43560b6c3f70708cad676476e7aca395c10e337",
      "parents": [
        "baba887a4f5d2a454ab3f8f36a26346f8fdd0670"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 27 13:06:03 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 27 13:10:05 2011 -0700"
      },
      "message": "Add slow path for OP_NEW_INSTANCE\n\nIf the type is unresolved at verification time, we can\u0027t be sure\nit\u0027s a valid new.  The compiler will now check for type resolution\nat compile time.  If unresolved, we\u0027ll call out to the slow path,\nwhere the access check will take place.\n\nThis CL only contains the compiler portion of this change.  For\nnow, the slow path code just calls out to the normal routine.\n\nChange-Id: Ia568a164389baedaa695a44f6845a0fdfe585b56\n"
    },
    {
      "commit": "6a4be3a6226cec645cf905dd352e44f7968a7fa4",
      "tree": "15c98c404db44f60850a94d9b3cff29ff16e1cd5",
      "parents": [
        "fb8a127fd2ca8eb6cbbc9d62b708c1fc2b3003a4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 20 16:34:03 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 20 17:01:32 2011 -0700"
      },
      "message": "Fix calling conventions for UnresolvedDirectMethodTrampolineFromCode\n\nChange-Id: I1b35c33d89f0526c80bc8d21e064617d0eac6cd1\n"
    },
    {
      "commit": "6fd03fb67e4628689f0abf34edeacc0e35b6295e",
      "tree": "89e287870dfb98b31f2ea7336166801dad5cd55a",
      "parents": [
        "29405cfc691196c21325e80d9a9f3795026eff4e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 17 16:11:00 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 17 16:21:03 2011 -0700"
      },
      "message": "Fix ObjectInitFromCode to do callee frame setup\n\nChange-Id: I70512c85a3a810fd672495b86655c215a07bb977\n"
    },
    {
      "commit": "466bb25416b88fabd5d4387b7c7e5cc1ece78b8c",
      "tree": "8d0952cbd850f1d0ac2e43a8372ce571fb4982d1",
      "parents": [
        "a10cd94bb77ed66fa0a8b66141c4504045c92d30"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 14 03:29:56 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 14 21:45:27 2011 -0700"
      },
      "message": "Proxy implementation\n\nThis rounds out the proxy implementation by adding missing pieces to the\nclass linker, extending tests and fixing issues in the runtime support.\nThere are also some tweaks for performance and to clean up Method/Object\na little.\nA unit test of the functionality is \"art/test/run-test 044\"\n\nChange-Id: Id94102d10b81cd9b12b95ba8618f6187490204c4\n"
    },
    {
      "commit": "caab8c4ef372db5c119bfac1911fa27b174a935c",
      "tree": "375a1e284b123b91d4960aa674b223e1eea0583a",
      "parents": [
        "14b1b249bdd21d674c9371dee34f8ae055f73ba2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 12 12:11:18 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 12 18:12:21 2011 -0700"
      },
      "message": "Various tidy ups, add LIKELY/UNLIKELY macros.\n\nMake more aggressive use of the dex cache when we have it.\n\nChange-Id: I125a7bac031f7f0cec68194b5380bdfd83c92833\n"
    },
    {
      "commit": "6f495f2898a418f87e2a919e04fe23521bb0b9e9",
      "tree": "6ba9e7bedb3425095725ea1ec514c279839e8511",
      "parents": [
        "98449a2674ea437eeae53327bf75918c8276a96b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 10 15:05:03 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 10 15:05:03 2011 -0700"
      },
      "message": "Clear results registers on long jump\n\nChange-Id: Ie4f84ad60b155bc27016ec15d4ecfcce8b0117f1\n"
    },
    {
      "commit": "aded5f7ab991f3c1132851599d3bc60ff6707eed",
      "tree": "7fb5e92c224adf98cadd67b7df99cc2d2851cbcb",
      "parents": [
        "bcbaaf3df56178263dbc110dcb0d1cf6c9d167c3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 07 17:15:04 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 10 12:51:28 2011 -0700"
      },
      "message": "Working ClassLoader\n\nChange-Id: Ia1122165e47f846a1d4506111849f830d9f14c1b\n"
    },
    {
      "commit": "4a510d8750d50b77353d0a5a891d1b9b3a48ecd5",
      "tree": "f6df9490fee55d2eae88b2281993e94953c6a805",
      "parents": [
        "4a14bc2e374add8f7df8232b3af3d8881eb4c84b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 09 14:30:24 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 09 14:30:24 2011 -0700"
      },
      "message": "Ensure R4 is initialized for upcall. Sort suspend naming.\n\nChange-Id: I73eb49e1af2ced971eeaafb7c07f5d964dae1824\n"
    },
    {
      "commit": "ce9eca6de042f26e9eebc41c9bee8b4d14f753aa",
      "tree": "7a141da8787f6653b30595f478ec656fd8dd01d6",
      "parents": [
        "6384f644e8120a15bddb9a72976eac1c158aba16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 07 17:11:03 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 07 18:24:23 2011 -0700"
      },
      "message": "Move from code field routines to runtime support.\n\nAdd support for exceptions from these routines. Use a macro for pending\nexception delivery. Fix bug in object_test where the signature of a\nFromCode function had changed.\n\nChange-Id: If486eff8659e5f6bb38d95b1139e8981656e4fb0\n"
    },
    {
      "commit": "4f0d07c783afef89703dce32c94440fc8621a29b",
      "tree": "f6f4b68d5afc6551c61d3e86153878d9891ea13a",
      "parents": [
        "3ddac99d4dc6a036fac59d8f0bdc664ef619fb04"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 06 23:38:47 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 07 11:40:56 2011 -0700"
      },
      "message": "Spill possibly reference holding registers for runtime calls.\n\nLive references may be in registers when we crawl a stack for GC during\na runtime call. Whilst an exception won\u0027t occur we need to save the\ncallee save registers into the frame so the stack crawl can find their\nvalues. Create variants of the callee save method to save just the\nregisters that are necessary.\n\nChange-Id: I6fa479bffcbc333fe846f9bd3ef2e626e0209ed9\n"
    },
    {
      "commit": "1cb0a1dfc32531c79a968aeac26ccb5525862497",
      "tree": "61d0345bd2b9b951026c9ce18d51c2b2d6963255",
      "parents": [
        "40c47b50f6c37ff2af919a0d51f12d3e7cc794a3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 06 15:24:35 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 06 17:27:15 2011 -0700"
      },
      "message": "Support for resolving unknown direct/static methods.\n\nIf we can\u0027t resolve a method we don\u0027t know whether it is direct or\nstatic from the dex information (other than the invocation instruction).\nAdd support for a third type of resolution stub that can discover the\ntype of the method based on the calling method and PC of the invocation\ninstruction. Its still unimplemented to look up the instruction and\nfigure out if the type is static or not.\n\nChange-Id: I8b76e6ba2c946376e7fe287dbcca17bcaab0e133\n"
    },
    {
      "commit": "ad25ac568407ceb14334e8551dd1c4dd0fd6993c",
      "tree": "f1e2edb4b87d0b5ce35f94069db2f6cdb77db210",
      "parents": [
        "8c2f6414e1cff9a024a14369352f7ce112528b9e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 04 19:13:33 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 05 22:40:00 2011 -0700"
      },
      "message": "Static and direct resolution stub.\n\nEnsure that invoke static and direct go through a stub that causes\nresolution and initialization.\n\nChange-Id: I872900560322817d8f4378b04ac410d9ea0b3b17\n"
    },
    {
      "commit": "ce30293d222c864fa281da98bc896dd1c98a9a16",
      "tree": "b56c3a7f8be3349aa50c78675e6959e51344938d",
      "parents": [
        "20cde9033d51103f31e21436e88f80e1170c78ad"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Oct 04 14:32:18 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Oct 05 09:22:57 2011 -0700"
      },
      "message": "Compiler cleanup\n\n  o Added slow path for string resolution\n  o Removed dead throw internal and runtime error\n  o Restructured debug and optimization disable flags for make it easier\n    for command-line option support.\n  o Removed/converted #if 1/0 blocks\n\nChange-Id: I65fc561a55437b3f74d0dfff5af87f938008d70e\n"
    },
    {
      "commit": "b408de744566a5c5a80be1ba7f5c88407e816945",
      "tree": "fa282edb7134f16de6e3ff81181e6d9724039ab3",
      "parents": [
        "4377a7e93b47386de1e0c2e472a6e3e99d235331"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 04 14:35:05 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 04 14:51:27 2011 -0700"
      },
      "message": "Implement the \"unreasonable array allocation\" OutOfMemoryError.\n\nThis doesn\u0027t fix test 061 because we still need AllocWithGrowth, but at least\nit gets us far enough to need that.\n\nChange-Id: Ia7b4a1f91a31e25d439f36b17280ce21c9ed8933\n"
    },
    {
      "commit": "2d831014d88e38c0c499ce8597dcdb17b9d4c4b9",
      "tree": "793b222f8005580af855692045f7fe2804dca8d4",
      "parents": [
        "5d1ac920fdaef5d4ec8f66bb734488cd9660b024"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Sep 28 22:06:53 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Sep 29 18:39:13 2011 -0700"
      },
      "message": "Code refactoring: Split thread.cc into thread.cc and runtime_support.cc.\n\nChange-Id: I8484ee2993a2eb927ebba1f7b9db4709d16dad00\n"
    },
    {
      "commit": "c0c8dc8e677957d167066a2d06973126f108a6aa",
      "tree": "98242f7d64d09b85bee3c021e6d66a3cbcaf19b3",
      "parents": [
        "2a20cfd0b7fc81099f5de0da782ebcc1cb262792"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 24 18:15:59 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Sep 25 11:57:24 2011 -0700"
      },
      "message": "Support for currently untested exceptions/errors.\n\nReplace place holder implementations of exception/error code with code\nthat is likely mostly correct. Testing and creating detail messages are\nTODO items for each of these exceptions/errors and warning are created\nto reflect this need.\n\nAs we don\u0027t currently generate code to throw these exceptions, they are\nuntested.\n\nChange-Id: I75876a9cca37892fa065eccdf34f9868b4142ec9\n"
    },
    {
      "commit": "21d9e8323124a832a21679ca83808bc9c68ed365",
      "tree": "d41c36c06524f913761f3b2e107d48d668feb660",
      "parents": [
        "31cc62d259b86844b505c3bfe15b44e372f705b8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 17:05:09 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 17:05:09 2011 -0700"
      },
      "message": "Exception support for object allocation.\n\nStrengthen asserts, no extra unit tests as expect good coverage on this\nalready.\n\nChange-Id: Ie8786932667b70d20c0cdf69b4b6b721b6244ded\n"
    },
    {
      "commit": "b886da8e3c26443ab4d2aa63268bd673c354c3d2",
      "tree": "26f01b0d92a79dea97fe80ccc580a7cbcd0178ac",
      "parents": [
        "e51a511ccee3f3c0120807321bcc160fcaa664be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 16:27:54 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 16:27:54 2011 -0700"
      },
      "message": "Support for exceptions from array allocation.\n\nAdds support for exceptions during array allocation and checked array\nallocation (used by filled-new-array). Adds more unit tests.\n\nChange-Id: I3438b257a1cf19538d8b72529097a74347ac3b99\n"
    },
    {
      "commit": "e51a511ccee3f3c0120807321bcc160fcaa664be",
      "tree": "24ae359ac6331afbfabcfb8b938bfad2e4d44ce6",
      "parents": [
        "382ece5707c7b7c61f44a01f57ac22df9a8197d0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 14:16:35 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 15:24:10 2011 -0700"
      },
      "message": "Exception support for CanPutArrayElementFromCode.\n\nAlso a unit test.\n\nChange-Id: I6fb4b4180d36ea2d8447a9b4d5cf28cf410960cd\n"
    },
    {
      "commit": "932746a4f22951abcba7b7c4c94c27b1bf164272",
      "tree": "4a841e3990467b22c36c74cca1e7a952754e49e6",
      "parents": [
        "a0841a83323a82e3bed3d0b5f2e6ec3795f496be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 18:57:50 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 20:05:44 2011 -0700"
      },
      "message": "Stack overflow error and unit test.\n\nChange-Id: Ie7198569207b1b87c50d986df002c551ad5d7d3a\n"
    },
    {
      "commit": "cbba6ac9bf9a6c630a7aafae6d8767b5ddbb6fd5",
      "tree": "c0d4c56f7062c95100ea644fbf3385b9c09c8399",
      "parents": [
        "98fb41647a5664922a196fd1f6b343e6bad8e51e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 16:28:37 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 16:42:02 2011 -0700"
      },
      "message": "Implement stub for initialize static storage base.\n\nAlso fix a race in thread list.\n\nChange-Id: Ice35c2fa14e7a9a0585e89d558815ab99bbdd6b9\n"
    },
    {
      "commit": "ff1ed4770bf7ff024a807b9f909b1a26abb78341",
      "tree": "40cda83cda306f4ade883141d3e0a40fb0790100",
      "parents": [
        "49de87b5c118cc536f2bd68c4fd46fce3d3abcfc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 20 13:46:24 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 11:08:56 2011 -0700"
      },
      "message": "Class cast, fill array and interface exception support.\n\nThis change uses the deliver exception mechanism to implement support\nfor a number of runtime exceptions. It also tidies up code in the\ncompiler and allocates a singular callee save method in the image.\n\nAlso adds a fix for JNI internal test where we weren\u0027t passing\nThread::Current() and that this value is now being used in generated code.\n\nChange-Id: I57eefd9afe40e92fa3a7e737f1a2ed7e1094b5c1\n"
    },
    {
      "commit": "c1f45048b90a85018c6b063c31bc088dc3dd993d",
      "tree": "fe2a976af407f8a77828306e9000837009150480",
      "parents": [
        "ae7cbf45460b472dbd159ab565d55b2880703abb"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 21 16:03:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 21 20:03:23 2011 -0700"
      },
      "message": "Suspend check reworking (ready for rewiew)\n\nI hate burning a register, but the cost of suspend checks was just too high\nin our current environment.  There are things that can be done in future\nreleases to avoid the register burn, but for now it\u0027s worthwhile.\n\nThe general strategy is to reserve r4 as a suspend check counter.\nRather than poll the thread suspendPending counter, we instead simply\ndecrement the counter register.  When it rolls to zero, we check.  For\nnow I\u0027m just using the counter scheme on backwards branches - we always\npoll on returns (which is already heavyweight enough that the extra cost\nisn\u0027t especially noticable).\n\nI\u0027ve also added an optimization hint to the MIR in case we have enough\ntime to test and enable the existing loop analysis code that omits the\nsuspend check on smallish counted loops.\n\nChange-Id: I82d8bad5882a4cf2ccff590942e2d1520d58969d\n"
    },
    {
      "commit": "9651f425f7413772a7b5352da2b04eb7de7d416f",
      "tree": "bd72ec24dc9901a03c19cd93c72e80bbd3af0b89",
      "parents": [
        "845490bda68f7d025ea7f45775c847d2932e00dc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 19 20:26:07 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 19 20:58:22 2011 -0700"
      },
      "message": "Implement NPE, div by 0 and AIOBE.\n\nImplement runtime support for throwing NPE, divide by 0 and\nArrayIndexOutOfBounds excptions. Add simple unit tests.\n\nChange-Id: I69453c10b6692aa79512bcab1f68c5ab16c8c256\n"
    },
    {
      "commit": "ad42e1327fca837531e4feac8841de3960c4df45",
      "tree": "de7c955804ac46da7988638e9aa478899457c4f8",
      "parents": [
        "3a7b4f26387b3529899f3cf16cdd6f1e200ded80"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 17 20:23:33 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 17 20:23:33 2011 -0700"
      },
      "message": "Exception work clean up.\n\nChange-Id: Ide71ba25ea70b39651f80d9ff469019898a929e6\n"
    },
    {
      "commit": "67375acd9fec74cc2054554fe1ed0a7d213e1e47",
      "tree": "0ac0bc114bbd9f0eef75d5d12e062554122d52f4",
      "parents": [
        "f867b6f706818c886087f61b89d1e8f5fc4653cf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 14 00:55:44 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 17 03:31:50 2011 -0700"
      },
      "message": "Support for exception throwing from JNI.\n\nThis change modifies the exception throwing JNI unit test to be\nrealistic and implements the missing exception throwing pieces on X86.\nIt also corrects some issues on ARM including methods with arguments\nLJII (such as compareAndSwapInt).\n\nChange-Id: I375f6efe2edeebb8007d7aa12c10b49742a8f119\n"
    },
    {
      "commit": "bdb0391258abc54bf77c676e36847d28a783bfe5",
      "tree": "e00cac49de8a85562716557c84532dd3fff08e5b",
      "parents": [
        "a5a97a2bc1dfed70869da34650a5a2a3a3a06ac4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 14 00:55:44 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 15 18:20:44 2011 -0700"
      },
      "message": "Support for exception throwing.\n\nThese changes start to add support for a long jump style of exception throw.\nA Context is added to build up the registers that will be loaded by the long\njump from callee saves that are on the stack. Throws are reworked slightly to\ngive the PC for the frame of the method being looked at, rather than the return\nPC (that previously led the trace\u0027s PC to be off by a frame). Callee save\nsupport is added to the JNI compiler which then no longer needs to spill\nincoming argument registers as it may reuse the callee saves.\n\nCurrently the code is lightly tested on ARM and doesn\u0027t support\nrestoring floating point callee save registers.\n\nAlso clean up some PIC TODOs.\n\nChange-Id: I9bcef4ab3bf4a9de57d7a5123fb3bb1707ca8921\n"
    },
    {
      "commit": "5ade1d255ef1b5022321ac20493208703b34d2b1",
      "tree": "60098d280b1b5be925d431654cba4b14d5756eec",
      "parents": [
        "1240dade91d6c4bbf4e367ca608fcdc15348da45"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 09 14:44:52 2011 -0700"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Sep 10 15:21:01 2011 -0700"
      },
      "message": "Complete compiler portion of exception handling\n\nWill still need much testing once the runtime portions are in place.\n\nChange-Id: I90fc7c1fd89bfae89dfd19a6e422024b6b5454ec\n"
    },
    {
      "commit": "4a3164faefd255b1c1e911e7ad7c3d57749caaf6",
      "tree": "f9594eb97a19358ba3ba5b050c61c5234214ba3d",
      "parents": [
        "9baa4aefc370f48774b6104680193d9a7e4fb631"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Sep 03 11:25:10 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Sep 03 20:31:41 2011 -0700"
      },
      "message": "Codegen for invoke-super, invoke-interface\n\nCompleted fast \u0026 slow paths for invoke-super and the single path for invoke-interface.  Added test\nfor invoke-super, but invoke-interface is untested (needs runtime-support routines to be fleshed\nout).\n\nSome trickiness in the invoke-interface code-generation.  Because they are going to be\nglacially slow anyway, inline code has been minimized and all interesting work pushed\noff to TODO runtime support routines.  However, we can\u0027t simultaneously pass the arguments\nneeded by the final destination and the arguments needed by the runtime lookup helpers.  So,\nI\u0027ve added a trampoline to save the target args, load the args needed by the helpers, call\nthe lookup routines, restore the final target arguments and continue on the journey.\n\nMore detailed comments in the code.\n\nChange-Id: Ice2343798a91a37da982811fd1c6384f584a3c0b\n"
    },
    {
      "commit": "1b4c85959b3d9a4a33bc2160c46c1bbde67350c7",
      "tree": "d92052beeb7a5e29f955d91b0a4ba3b15d2e4a8d",
      "parents": [
        "cf4c6c41b0084dc4567ff709fb8ce9ebd72b26ac"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 31 10:43:51 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 01 15:59:35 2011 -0700"
      },
      "message": "Complete OP_CONST_STRING, OP_CONST_CLASS\n\nAdded dummy ThrowException \u0026 ResolveTypeFromCode routines.  Fix\nOP_CONST_STRING and OP_CONST_CLASS to be position independent.  Misc.\nbug fixes.\n\nCreated a dummy ThrowException compiler run-time helper function.  It\nshould be replaced with the real version.\n\nChange-Id: Iba6a11cf110d3da4fa36ca434fe1b2675b68434d\n"
    },
    {
      "commit": "439c4fa0db980fb19e4a585723a64a3461e4c278",
      "tree": "b8173fa296eaf53b5b1bc2b2fd743998446fcfb1",
      "parents": [
        "e6d6196822952a9ccbb6ac2a97f4e3ae5e59705b"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 15:59:07 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 15:59:07 2011 -0700"
      },
      "message": "Move 64-bit multiplication to helper\n\nWe\u0027re right on the edge for supporting inline 64-bit arithmetic\nwith our current temp register pool allocation.  Moving 64-bit multiplication\nout of line to sidestep the problem, and added some temp frees to\n3-operand long ops.  In the latter case there was a potential problem\nif the result long was located in a part of the frame not in the range\nof a single base+displacement store.\n\nChange-Id: I6f8e0a11b440ed35e08f2e3457de6cbea89cfccc\n"
    },
    {
      "commit": "e6d6196822952a9ccbb6ac2a97f4e3ae5e59705b",
      "tree": "4ddf77ae5db6672b29a0ac205809287a5980b78e",
      "parents": [
        "7b1b86d68244b0bb4ea3f43505eb45fdd46814d6"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 11:58:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 11:58:19 2011 -0700"
      },
      "message": "Various bug fixes.\n\nThe most amusing fix was the wierd NaN test failure.  After spending way\ntoo much time debugging, it turned out to be a missing comma in the argument\nlist of the test launcher.\n\nChange-Id: I76253575d7fbe2c2c260f1839a517c1b93dc9224\n"
    },
    {
      "commit": "7b1b86d68244b0bb4ea3f43505eb45fdd46814d6",
      "tree": "86752301153593796b515d8167fb5b3df3ac2636",
      "parents": [
        "83db7721aef15df6919c0ec072e087bef6041e2d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Aug 26 18:59:10 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Aug 26 19:15:41 2011 -0700"
      },
      "message": "Various bug fixes and new tests.\n\nAmusingly realized that many tests believed to be passing were in fact not\nrunning at all.  The test harness returned 0 if the test wasn\u0027t run, but some\nof the tests used 0 as a success code.  Will change the tests later.\n\nMost were failing only because the function pointer table in Thread wasn\u0027t\nfully initialized with the math helper functions.\n\nChange-Id: If2e42f06139f219a423eef475b599258ccfc82d4\n"
    },
    {
      "commit": "5433072f589b61413e042eddf76e8190a048f71d",
      "tree": "02ff83e20b1b0bc9dbbf387768d118a4d7aa6dbc",
      "parents": [
        "3ea4ec5629613013ad9b0d7a69abdb94491ac46f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Aug 23 16:46:55 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Aug 23 16:46:55 2011 -0700"
      },
      "message": "Added support for 64-bit shifts, fix const-wide\n\nChange-Id: I4823056d83652ecc7d3e391e905d480d73fab718\n"
    }
  ]
}
