)]}'
{
  "log": [
    {
      "commit": "769fde14cf82840e458f3ca0b1accdaedc60e837",
      "tree": "c62b2743c48c6d5c7c16bd7b68a8c824f790cc1d",
      "parents": [
        "eaa200d9b8a28f1a23b6ded7875d2b8fca555254"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 05 17:35:23 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 05 19:08:13 2012 -0800"
      },
      "message": "Reg promotion fix; full optimization by default\n\nAs anticipated, the register promotion problem was related to type\ninference.  The Dalvik bytecode definition doesn\u0027t explicitly carry\ntype information on some opcodes.  The problem this time was that\ninvoke results are stored in a magic untyped return location, which is\nlater accesses via (also untyped) OP_MOVE_RESULT.\n\nMost of the time, the existing type inference mechanism was able to\nfigure out the result register type, but there was a pattern in which\nit could be missed.  Fixed (the last type inference bug, I hope).\n\nThis CL also re-enables full optimization by default (which will also\nresult in a quite significant reduction in code size).\n\nChange-Id: I4c13455df7eba5c932e2cc7907b00c8b3b2f85b8\n"
    },
    {
      "commit": "a3760aad59f41bb0b1d46733165a2d7219ecca73",
      "tree": "28c031bac11cc172f04b8943e189bf1d065acd9c",
      "parents": [
        "169c9a7f46776b235d0a37d5e0ff27682deffe06"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 14 14:32:37 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 14 15:40:11 2011 -0800"
      },
      "message": "Refactor the use of Method by the oat compiler.\n\nChange-Id: Ib0ee18ed06846f82567f746edc7a5049dc6215df\n"
    },
    {
      "commit": "23d5bc99a97e22323adc4b1a4237e5c45bdf7096",
      "tree": "3ef13b9dce0057bdf385e941575f7b376aa73cd0",
      "parents": [
        "95e4ef7cebf2e33b6e73a3957089f958e41771f5"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Oct 31 12:41:02 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Oct 31 12:41:02 2011 -0700"
      },
      "message": "Compiler crash workaround\n\nThe compiler was dying during its type inference pass.  I believe\nthis is related to losing type information during the verifier\u0027s\ninstruction rewriting, but will investiate further to make sure.\nWorkaround is to just disable register promotion when this situation\nis detected.\n\nChange-Id: I1c963d67f7d61a1c1666d4ef8d593d8685ac60e0\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": "bbaf894dded77603bd457758ba2b4636122fb8b7",
      "tree": "ac8d0450f23dd6cde9647febef8de514c5a4b8ae",
      "parents": [
        "fc22c89072e310767f8e39776195a219df851ea0"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Oct 02 13:08:29 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Oct 02 13:21:01 2011 -0700"
      },
      "message": "Optimization fixes\n\nTwo primary fixes.  First, the save/restore mechanism for FP callee saves\nwas broken if there were any holes in the save mask (the Arm ld/store\nmultiple instructions for floating point use a start + count mechanism,\nrather than the bit-mask mechanism used for core registers).\n\nThe second fix corrects a problem introduced by the recent enhancements\nto loading floating point literals.  The load-\u003ecopy optimization mechanism\nfor literal loads used the value of the loaded literal to identify\nredundant loads.  However, it used only the first 32 bits of the\nliteral - which worked fine previously because 64-bit literal loads\nwere treated as a pair of 32-bit loads.  The fix was to use the\nlabel of the literal rather than the value in the aliasInfo - which\nworks for all sizes.\n\nChange-Id: Ic4779adf73b2c7d80059a988b0ecdef39921a81f\n"
    },
    {
      "commit": "c0ecd655083e559159d1ad22a6213d16527e0e2b",
      "tree": "d5aae61fd7a08d6453e7c2eed6b50a9bd06742f8",
      "parents": [
        "9407c60800c95902fba0b3c3265520d47c1e7052"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Sep 25 18:11:54 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Sep 26 07:33:28 2011 -0700"
      },
      "message": "Various optimization fixes\n\nMultiple problems surfaced when register promotion was enabled.  This\nCL takes care of a few, but more remain.  The main problems dealt with\nhere are related to not having data types handy on invokes.  Solved by\nintepreting the shorty of the target and updating the operand names\nappropriately.\n\nThe other problem was a little nastier.  The codgen infrastructure wasn\u0027t\nexpecting wide results to overlap source operands (for example:\n\n    add-long (v0,v1) \u003d (v1,v2) + (v3,v4)\n\nIn the old world, the result pair would start with a fresh name\nand temps.  In the new world, though, the register promotion mechanism\nretains the mappings.  Not a difficult problem to solve, but I\u0027ll\nneed to very carefully examine the existing long op generators to\nmake sure they can handle overlaps.\n\nChange-Id: I019607620f7a78cadc9e7c57f247806d0a68243d\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": "03fa263ba90e9f6b11231576c6b9cc434e67141d",
      "tree": "bcf4970d1f845f99b1df9133b85270e8eb284aca",
      "parents": [
        "4a2b41793d18d402286ae37e9de4fd392bc75a08"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Sep 20 17:10:57 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Sep 20 20:40:34 2011 -0700"
      },
      "message": "Rework type \u0026 size inference, literal usage\n\nFixes a bug in the old type inference mechanism (wasn\u0027t properly\npropogating type info across Phi \u0026 move nodes).  Combined type and\nsize inferences passes.\n\nFixed long-standing bug in the code to load a special double-precision\nimmediate (would have been extremely difficult to hit this in the field).\nImproved loading floating point immediates.\n\nChange-Id: I1ec72edc3b25525f14d965089f8952d4f0294942\n"
    },
    {
      "commit": "c74255fffb035001304c9a058a2e730a5a1a9604",
      "tree": "a2ebae8c3170928768fdbdbdd6ab6d05f7bc8636",
      "parents": [
        "d369bb76dee0df2d2a106e9bf7f4e6446ed6deaa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 11 22:47:39 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 12 16:23:08 2011 -0700"
      },
      "message": "Interning image strings\n\nChange-Id: I7e93b3975fe43d91d00b8185b65e8e0fd67ff6f4\n"
    },
    {
      "commit": "2ed67398cdd94cbb11d7409f3e7264f07b69de01",
      "tree": "413d571a7ba4add63a2d4a71ace407e1de62dcb5",
      "parents": [
        "dbc0525b23653a425fcd7532d04eecc32d138b9d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 09 14:53:28 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 09 14:53:28 2011 -0700"
      },
      "message": "Move Method shorty to managed heap\n\nChange-Id: Iafd05502b498c823063d0603915a92db8c95f060\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": "0cfe1fb7060576d047f7f894fc0d8b87de84fcab",
      "tree": "4255eae2034dcb0febe28411c50cba76189f39ae",
      "parents": [
        "a09576416788b916095739e43a16917e7948f3a4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 26 03:29:44 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 02 14:48:01 2011 -0700"
      },
      "message": "Use accessor methods for Object fields.\n\nEnsure that Object fields are modified via accessors so that it\u0027s easy\nto insert barriers (make all fields within Objects private). Add validity\nchecks to Field and Method accessors to ensure they are accessed when a\nClass is in a suitable state. Add validity checks to all Object\naccessors to check heap isn\u0027t corrupted. Remove hacked in strings from Field\nand Method; make type fields used the dex cache that is lazily initialized.\nClean up various other TODOs and lint issues.\n\nChange-Id: Iac0afc515c01f5419874d9cdcdb9a7b45443e3fb\n"
    },
    {
      "commit": "dfd3d70e58c37b5d56eded3a4469082d8bb26ee0",
      "tree": "3e1a15f133e5e72710e71bc4989a74319ee60442",
      "parents": [
        "9cc262e2ad5cb507c21cc83b8dc954e9354a469c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 12:56:51 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 13:10:06 2011 -0700"
      },
      "message": "Enable virtual invokes, use new alloc, misc\n\nMake use of the new alloc routines.  Extended the filter to allow\nsimple virtual invoke test to get through.  Fixed a register allocation\nproblem.\n\nNote that the invoke sequeces are still the verbose \u0026 long path.\nWill start using the new CodeandDirectMethods mechanism in upcoming CL\n\nChange-Id: I8ff79f6392ff3da14d7679dcf65029ae48f18eba\n"
    },
    {
      "commit": "c143c55718342519db5398e41dda31422cf16c79",
      "tree": "b2d80bd5dc63e0eb0bea372651de12dcaf2e7f0d",
      "parents": [
        "195487cb0b11e64917df01f8d55671344db2e97f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 20 17:38:58 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 21 17:42:55 2011 -0700"
      },
      "message": "Updating the compiler to use the new-world model\n\nNew compiler is integrated and passes first test (Fibonacci).\n\nChange-Id: Ic5448ab89ebd22baa30fafc3d1300324687d1fc2\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"
    }
  ]
}
