)]}'
{
  "log": [
    {
      "commit": "f7d9ad39541dd09030e26d54d3b73a076f90cc74",
      "tree": "aa0a9bc7b422ecc31432471fedd1b5fb496866b1",
      "parents": [
        "f320b639eee1ec0e9d99e8d6c2a805892d016807"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 13 18:45:39 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 14 23:25:39 2012 -0700"
      },
      "message": "Enable all JNI internal compiler tests on the host.\n\n(cherry picked from commit abda43c90f70963909128c1cc495190d60fd8372)\n\nChange-Id: I0a7fc96e84dacf34108551271760aae13d5ee010\n"
    },
    {
      "commit": "e196567b50a084b163937ea9605b51ee1e48adeb",
      "tree": "709964fc09a36132490d9a3a4805983ec80c57e3",
      "parents": [
        "13b835a45f3dccff1c6d024ad82a2044831c7c41"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 11 18:39:19 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 13 20:59:18 2012 -0700"
      },
      "message": "SSA rework and support compiler temps in the frame\n\nAdd ability for the compiler to allocate new frame temporaries\nthat play nicely with the register allocation mechanism.  To do this\nwe assign negative virtual register numbers and give them SSA names.\nAs part of this change, I did a general cleanup of the ssa naming.\nAn ssa name (or SReg) is in index into an array of (virtual reg, subscript)\npairs.  Previously, 16 bits were allocated for the reg and the subscript.\nThis CL expands the virtual reg and subscript to 32 bits each.\n\nMethod* is now treated as a RegLocation, and will be subject to\ntemp register tracking and reuse.  This CL does not yet include\nsupport for promotion of Method* - that will show up in the next one.\n\nAlso included is the beginning of a basic block optimization pass (not\nyet in a runable state, so conditionally compiled out).\n\n(cherry picked from commit f689ffec8827f1dd6b31084f8a6bb240338c7acf)\n\nChange-Id: Ibbdeb97fe05d0e33c1f4a9a6ccbdef1cac7646fc\n"
    },
    {
      "commit": "719ace4734f519c67fd2c1ff7a232c079309a615",
      "tree": "ccce9abb445238e4a00c9d4bfba093fb16bc8c7c",
      "parents": [
        "b3cd1229e6904365ca0ca2a7bbc4701ad1908154"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 18:06:03 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 18:06:03 2012 -0800"
      },
      "message": "Stop saying \"typedef struct\" and \"typedef enum\".\n\nSeeing new instances of this C-ism go in makes me a sad panda.\n\nChange-Id: Ie3dd414b8b5e57a4164e88eb2d8559545569628d\n"
    },
    {
      "commit": "e3acd07f28d5625062b599c2817cb5f7a53f54a9",
      "tree": "d38696b0235dab5d8ef791cdb9fb311a6705e03b",
      "parents": [
        "55b796c6f1fdc36494463a3deeb1e248800695e9"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Feb 25 17:03:10 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Feb 26 20:44:46 2012 -0800"
      },
      "message": "Multi-target support\n\nThis CL represents a step towards splitting out the target dependent\nand target independent portions of the compiler, and also adds in the\nbeginning of a MIPS compiler based on the MIPS AOSP Jit submission.\n\nMore polish is clearly needed, but the split is here probably pretty\nclose.  The MIPS code will not compile at this point (and there is no\nmakefile target at present), but it\u0027s pretty close.\n\nThere should be no changes in functionality of the Arm compiler in this\nCL - just moved stuff around.\n\nChange-Id: Ia66b2847e22644a1ec63e66bf5f2fee722f963d4\n"
    },
    {
      "commit": "11d1b0c31ddd710d26068da8e0e4621002205b4b",
      "tree": "8d9c9c0dd5741214466775b86069032d609fd91c",
      "parents": [
        "bbdb1437f55948e5395b4dcb306e25605539a444"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 16:57:47 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 17:26:10 2012 -0800"
      },
      "message": "Reduce namespace pollution.\n\nThis leaves us with just the mspace stuff and three libdex functions to clean\nup. We deliberately expose the JII API, and I don\u0027t think there\u0027s anything we\ncan really do about the art_..._from_code stuff (and at least that starts with\n\"art_\").\n\nChange-Id: I77e58e8330cd2afeb496642302dfe3311e68091a\n"
    },
    {
      "commit": "67bc236a207852d652f6ddeab0a90efc1bd111bb",
      "tree": "eea13fcb90ad8ce5b2b3819fb8caf0281583cd61",
      "parents": [
        "95caa791e560da97363c0c0d22bfda4a7e7377c3"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Oct 11 18:08:40 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 14 10:54:03 2011 -0700"
      },
      "message": "Register promotion fix\n\nRestructured the type inference mechanism, added lots of DCHECKS,\nbumped the default memory allocation size to reflect AOT\ncompilation and tweaked the bit vector manipulation routines\nto be better at handling large sparse vectors (something the old\ntrace JIT didn\u0027t encounter enough to care).\n\nWith this CL, optimization is back on by default.  Should also see\na significant boost in compilation speed (~2x better for boot.oat).\n\nChange-Id: Ifd134ef337be173a1be756bb9198b24c5b4936b3\n"
    },
    {
      "commit": "6825326abfef92d4e1bf6afddef1a319aa18d08c",
      "tree": "1706bf3e0bbdb9f7a704140f70011c1b362fa294",
      "parents": [
        "a43cb5e8fb29989dbb986b9b91a68cda150aa3c8"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 07 14:02:25 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 07 14:16:01 2011 -0700"
      },
      "message": "Reg utility fix\n\nLong ago in a galaxy far away, there was a trace compiler that\nhandled short code fragments with a small, sparse and variable\nset of temp registers.  In that situation, doing linear reg\nlookups wasn\u0027t terrible.  In the new world that has a fixed and\npacked set of registers, a linear search is unnecessary, foolish\nand wasteful.  [P.S. perf showed that roughly 25% of all\ncompilation time was spent doing register manipulation!]\n\nChange-Id: I6f23d9f70367fb4139cc28a27fd9fdf8beffa270\n"
    },
    {
      "commit": "6181f79576e4269937b45e4fce8d0d004107e5b9",
      "tree": "1e5970dd4074c9852b10ecfc6bc4f18b89d40dd7",
      "parents": [
        "557e027f86d86f801e1b48055f8116f2d83d3d5c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 29 11:14:04 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 29 13:38:10 2011 -0700"
      },
      "message": "Register usage cleanup\n\nI plan to enable some of the old-world basic block optimizations.\nThose care about temp register status, so we needed a bit of\ncleanup on the temp tracking.\n\nChange-Id: I317bce1b91a73ec9589c20ed5bfe00d53994991a\n"
    },
    {
      "commit": "b29e4d1423028fab47db3be6e41e4b2a067bf100",
      "tree": "c965f68c3c57750a837baf4f70fd9dc876adb082",
      "parents": [
        "395520eaa47eca25b92e86188accf3095d60af49"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Sep 26 15:05:48 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Sep 26 15:05:48 2011 -0700"
      },
      "message": "Misc codegen fixes related to register promotion\n\nThe post-promotion world no longer guarantees that wide result\npairs don\u0027t overlap with source operands.  Also had to narrow\na load-elimination optimization to apply only when using\ntemp registers for Dalvik virtual registers.\n\nChange-Id: I2afbbec865d5a14d46e539cce4d8b3d0e4e8880b\n"
    },
    {
      "commit": "ed3e930109e3f01804ca32cee4afe4f2d4b3f4d8",
      "tree": "41c3ffd3fdade2244b4cd3824c98419edecbca86",
      "parents": [
        "8060925c45cc2607ab92390d7366c6c0cfdfe4bb"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 23 17:34:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 23 18:34:31 2011 -0700"
      },
      "message": "assert to DCHECK conversion\n\nAlso replaced static function defs with a STATIC macro to make normally\nhidden functions visible to DCHECK\u0027s traceback listing).  Additionally,\nadded some portions of the new type \u0026 size inference mechanism (but not\ntaking advantage of them yet).\n\nChange-Id: Ib42a08777f28ab879d0df37617e1b77e3f09ba52\n"
    },
    {
      "commit": "43a364291dcdfe08e530e9568748359735dd7442",
      "tree": "1141a3f0f91c527dfe28796e88f166d2bc0ed7fd",
      "parents": [
        "303b01ed0d36017371e29b1f1e209dd19896ac9e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 14 14:00:13 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 14 15:40:34 2011 -0700"
      },
      "message": "Fix null check elimination\n\nThe existing null check elimination mechanism suffered from the same\nlimitation as the SSA renaming: it took shortcuts that were valid in\na trace compilation world, but not in a method compilation world.\n\nThis CL replaces the old mechanism, and additionally takes advantage\nof some the fact that \"this\" is always non-null, as are objects returned\nfrom OP_NEW_* (thanks Ian!).\n\nTwo test cases added.  The one for ensuring that unnecessary null checks\nare elminated requires manual inspection.  The other - that we don\u0027t\neliminate a necessary null check - is disabled until exceptions are working.\n\nChange-Id: I2a9b72741f56617bf609e4d7c20244796c988f28\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": "0d966cff87464544a264efdbfba6c379474d5928",
      "tree": "74ce88ebfdb902c90700b20b6b4e82290b77e70b",
      "parents": [
        "34cd9e58431504c36d0cb2a8fd0f3fac16dcb406"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 17:34:58 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 17:54:29 2011 -0700"
      },
      "message": "Add suspend check \u0026 stub\n\nChange-Id: I017653026ca95166cbc4b6b94b5da1fef2597804\n"
    },
    {
      "commit": "e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5",
      "tree": "0a709a3694d0a3fd11878d39b6422e5e997c8c94",
      "parents": [
        "7715c68b5f137ff5ffa4f2e1fee0a96fa6cfffb4"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Sep 04 17:59:07 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Sep 05 13:38:41 2011 -0700"
      },
      "message": "Try/Catch analysis; various workarounds\n\nFixed a couple of codegen bugs.  Added a temporary workaround until\nSSA renaming problem is fixed.  By enabling the \"CompileDexLibCore\"\ntest in compiler_test.cc and disabling the jni_compiler, we appear to\nbe successfully compiling 17,641 methods of libcore (note: of those,\n4 exhibit the SSA problem).\n\nAlso turned off most of the compiler logging, and disabled the fast\npath for invoke virtual (which seems to be broken).\n\nChange-Id: I0ecf460cba209f885209efbee62e9f80bffbf666\n"
    },
    {
      "commit": "2e748f364dba4505ca3a90f095d09c70bcd88eab",
      "tree": "16aae1898827bb16a0a1f826797139371ef5b456",
      "parents": [
        "ff0f9bea6355fe0c420815f9b894e6bb634fe764"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Aug 29 21:02:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Aug 29 21:18:53 2011 -0700"
      },
      "message": "Register temp handling fix\n\nIn general, compiler routines that generate code don\u0027t need to worry\nabout register management - the underlying utilites will take care of\nit.  However, when generating an invoke sequence specific registers must\nbe used to conform to the calling convention.  To prevent the normal\nutilities from allocating these fixed registers, oatLockAllTemps() is\ncalled to mark the registers as in use.  However, oatLockAllTemps() did\njust that - it locked all of the temps, not just those used for arguments.\n\nThis change renames oatLockAllTemps() to oatLockCallTemps() and restricts\nthe locking to the argument registers.\n\nChange-Id: Id4183ce89e2672bcf2873d31aa60bd80c91c5a72\n"
    },
    {
      "commit": "e1931749814dbb80c5a756f9842e9c261bb2e8f6",
      "tree": "6e0d28df7394cd1921643032ed2030c3e0bc113c",
      "parents": [
        "48a35d0cc5cf5dec38808d147862e165e9d67163"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 21:15:53 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 21:39:17 2011 -0700"
      },
      "message": "Use slow-path static field accessors; added tests\n\nModified the compiler to always take the slow path for static\nfield accesses.  Still need to implement the fast path, but this\nallows us to test the slow path now.\n\nIt\u0027s also about time we added command-line (or other) options for\ncompiler control.  We\u0027ll want to have a testing option to force slow\npaths for testing, and also an option to control the compiler\u0027s\ndebug output (which is starting to get annoying).\n\nChange-Id: I9c1bc6faea0042894270d242366c688f1662842b\n"
    },
    {
      "commit": "9e0f9b0d3e2cd78092e5c4b66ce1edcd79c951ea",
      "tree": "ecdf662160bd3113de7b09c02a7c8156e3f768d1",
      "parents": [
        "69f5bc6759f256a146eefd8a7141d39fcc3b0421"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 24 15:32:46 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 24 15:47:44 2011 -0700"
      },
      "message": "Add switch and comparison tests. Fix ralloc bug\n\nWe normally have 5 registers in our temp pool, but up to 6 may be\nneeded for long 3-operand operations.  Added a workaround to temporarily\nadd lr to the temp pool in that specific case.\n\nMoved the bulk of the compiler_test code out of common_test.h into\ncompiler_test.h.  Added switch and compare unit tests.\n\nChange-Id: Ib449c49861acb5aaef716e8538e5818ba74522cb\n"
    },
    {
      "commit": "67bf885d62b1473c833bece1c9e0bb624e6ba391",
      "tree": "a6069d30bb0e25d4ed1f19d7a3c2b55c4aef7127",
      "parents": [
        "f4c21c9f6440c3980c47a297519f758796dbc039"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 17 17:51:35 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Aug 19 20:14:15 2011 -0700"
      },
      "message": "Oat compiler integration snapshot.\n\nCleanly compiles, but not integrated.  Old-world dependencies captured\nin hacked-up temporary files \"Dalvik.h\" and \"HackStubs.cc\".\n\nDalvik.h is a placeholder that captures all of the constants, struct\ndefinitions and inline functions the compiler needs.  It largely consists\nof declaration fragments of libdex, Object.h, DvmDex.h and Thread.h.\n\nHackStubs.cc contains empty shells for some required libdex routines.\n\nChange-Id: Ia479dda41da4e3162ff6df383252fdc7dbf38d71\n"
    }
  ]
}
