)]}'
{
  "log": [
    {
      "commit": "31a4a6f5717f645da6b97ccc1e420ae1e1c71ce0",
      "tree": "de07c7175bcda6c2e3f11329d72d142319354f3f",
      "parents": [
        "32c9a2decebe7b736e1f05b53b5822affea5e81d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 28 15:36:15 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Feb 29 18:52:47 2012 -0800"
      },
      "message": "More target-independence\n\nContinuing to move target-specific code from the Arm\ncode generator into the independent realm.  This will be\ndone in multiple small steps.\n\nIn this CL, the focus is on unifying the LIR data structure and\nvarious enums that don\u0027t really need to be target specific. Also\ncreates two new shared source files: GenCommon.cc (to hold\ntop-level code generation functions) and GenInvoke.cc (which\nis likely to be shared only by the Arm and Mips targets).\n\nAlso added is a makefile hack to build for Mips (which we\u0027ll\neventually remove when the compiler support multiple targets\nvia the command line) and various minor cleanups.\n\nOverall, this CL moves more than 3,000 lines of code from\ntarget dependent to target independent.\n\nChange-Id: I431ca4ae728100ed7d0e9d83a966a3f789f731b1\n"
    },
    {
      "commit": "ba938cbb8d73a0dcf151dfaec4662496da6afdbf",
      "tree": "09ad41fc5851a22e8c11935edc83c7ece546f856",
      "parents": [
        "763d5fb2f83d9c93b5b764533005865a3d1034e1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 03 14:47:55 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 03 15:02:55 2012 -0800"
      },
      "message": "Make the compiler threadsafe\n\nThe compiler inherited a simple memory management scheme that\ninvolved malloc\u0027ng a clump of memory, allocating out of that\nclump for each unit of compilation, and then resetting after\nthe compilation was complete.  Simple \u0026 fast, but built with the\nexpectation of a single compiler worker thread.\n\nThis change moves the memory allocation arena into the\nCompilationUnit structure, and makes it private for each method\ncompilation.  Unlike the old scheme, allocated memory is returned\nto the system following completion (whereas before it was reused\nfor the next compilation).\n\nAs of this CL, each compilation is completely independent.\n\nThe changes involved were mostly mechanical to pass around the\ncUnit pointer to anything which might need to allocate, but the\naccretion of crud has moved me much closer to the point that\nall of this stuff gets ripped out and replaced.\n\nChange-Id: I19dda0a7fb5aa228f6baee7ae5293fdd174c8337\n"
    },
    {
      "commit": "5abfa3ea35781464df8fae60aaf03f48a295e965",
      "tree": "3db19d0ecfc1031f86d77964de636ec45d4ba690",
      "parents": [
        "6c7d244058b74cdd61533968dd6cddd7003d2671"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 31 17:01:43 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 02 15:56:41 2012 -0800"
      },
      "message": "Compiler tuning\n\nSignificant reduction in memory usage by the compiler.\n    o Estimated sizes of growable lists to avoid waste\n    o Changed basic block predecessor structure from a growable bitmap\n      to a growable list.\n    o Conditionalized code which produced disassembly strings.\n    o Avoided generating some dataflow-related structures when compiling\n      in dataflow-disabled mode.\n    o Added memory usage statistics\n    o Eliminated floating point usage as a barrier to disabling expensive\n      dataflow analysis for very large init routines.\n    o Because iterating through sparse bit maps is much less of a concern now,\n      removed earlier hack that remembered runs of leading and trailing\n      zeroes.\n\nAlso, some general tuning.\n    o Minor tweaks to register utilties\n    o Speed up the assembly loop\n    o Rewrite of the bit vector iterator\n\nOur previous worst-case method originally consumed 360 megabytes, but through\nearlier changes was whittled down to 113 megabytes.  Now it consumes 12 (which\nso far appears to close to the highest compiler heap usage of anything\nI\u0027ve seen).\n\nPost-wipe cold boot time is now less than 7 minutes.\n\nInstallation time for our application test cases also shows a large\ngain - typically 25% to 40% speedup.\n\nSingle-threaded host compilation of core.jar down to \u003c3.0s, boot.oat builds\nin 17.2s.  Next up: multi-threaded compilation.\n\nChange-Id: I493d0d584c4145a6deccdd9bff344473023deb46\n"
    },
    {
      "commit": "5b53710b4abcf8f35c91a963a475b72cb34757e6",
      "tree": "9f10f49fd09798a8f07ebffb4ee357c135e56f9f",
      "parents": [
        "cf044318c5638df0c400b731e94fab948ebd5ccb"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 17 17:33:47 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 24 06:00:32 2012 -0800"
      },
      "message": "Dataflow analysis rework\n\nRework key portions of the dataflow analysis code to avoid the\nmassive slowdowns we\u0027re seeing with methods containing more than\n20,000 basic blocks.\n\nAdd a somewhat hacky lookup cache in front of findBlock.  Later\nwe\u0027ll want to rework the \"GrowableList\" mechanism to incorporate\nthis properly.\n\nAdd memory to the bit vector utilities to speed up the iterators\nfor large sparse vectors. (Similarly, in the future we\u0027ll want\nto include a rewrite of the home-grown bit-vector manipluation\nutilites to be better with large ones).\n\nWith this CL, compilation speed on the degenerate cases is \u003e 10x\nfaster.  Compilation of typically-sized methods will see a smallish\nimprovement.\n\nChange-Id: I7f086c1229dd4fe62f0a5fc361234bf204ebc2b1\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": "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": "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": "f5a7a476e7ea63e094ff0f011dccc170607e6f6b",
      "tree": "4f07e57d5e3d2a82eeefcb7c6409f36b383b1d96",
      "parents": [
        "c2858561314513cc7bce2da7e13664aefef5a2ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 07 14:31:02 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 07 15:08:48 2011 -0700"
      },
      "message": "Enhance CHECK_EQ and friends to allow extra detail to be appended (like CHECK).\n\nChange-Id: Iaa980892ab31621c8bcca9ea7c6c4ee743333f45\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": "aad7201a2453091b6a22984985fba0a328757b59",
      "tree": "f3facf847f4c6a6232a0d868596c7ab1414e5e6e",
      "parents": [
        "c1f45048b90a85018c6b063c31bc088dc3dd993d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 21 21:52:09 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 21 21:52:09 2011 -0700"
      },
      "message": "Move null checks to bvector utility callers\n\nIt\u0027s generally ok to encounter basic blocks with no interesting\ndataflow info, but better to skip in the callers of the utilities\nthan in the utilities themselves (to make it explicit).\n\nChange-Id: I27b2c774381d4315d51436527ddf0378e5c05d32\n"
    },
    {
      "commit": "27ec961a1da540ba7f16c07a682585ab167317ad",
      "tree": "0aa6cb8345e394fe0ebe608bc26aa2acbdac1393",
      "parents": [
        "03fa263ba90e9f6b11231576c6b9cc434e67141d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 19 20:20:38 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 21 10:36:24 2011 -0700"
      },
      "message": "Adding oat_process\n\n- Added oat_process, a version of app_process use to launch frameworks apps\n- Added liboat_runtime, a version of libandroid_runtime that uses art instead of dvm\n  This is just a special makefile, frameworks/base/core/jni code is used for source\n- Added support for build a boot.oat with the full BOOTCLASSPATH\n  The older smaller boat.oat is now core.oat\n- Added mem_map code for making sure a requested memory region is available\n  Moved mem_map code to cc file to make easier to debug with smaller rebuild\n- Moved oat base address to 0x6000000 as a work around to host addres conflict\n- Added -Xms and -Xmx options to dex2oat to allow build specific memory options\n- Fixed miranda method initialization problem found compiling full bootclasspath\n- Made compiler.cc tolerant of verification errors found compiling full bootclasspath\n- Bumped arena block alloc warning to avoid noise when compiling full bootclasspath\n- Marked implicit GC unimplemented to fail fast\n- Added --output argument to oatdump\n- Made many object asserts tolerate access in IsErroneous state\n  now that verifier is failing validation of some classes during compilation\n- Made runtime tolerate unknown access as short term solution for oat_process\n- Workaround SSA issue to restore full bootclasspath compilation\n- Added test-art-target-processs to excercise oat_process with \"am\"\n  \"am\" found bug where class_linker was using Method::GetClass and not ::GetDeclaringClass\n\nChange-Id: I1a645a142b163e06bab9e72eb094ae1f1dbfbd97\n"
    },
    {
      "commit": "161928613d3f097108319de60494fab1aab8d48a",
      "tree": "4a77aeca94c70e008ff7e1921e0104df9cb1ce92",
      "parents": [
        "93868217589caa3302a3886f55b99447db78e093"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 12 17:50:06 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 15 10:04:31 2011 -0700"
      },
      "message": "Add oat file generation and tests to build\n\n- Currently builds boot.oat for host and target\n  and target oat files for art tests.\n- Added cross compilation support via --strip-prefix option to dex2oat\n- Reduced output to prevent build log spam (Compiler::verbose_)\n- Added image roots for recovering important pointers on image load\n- Redid JNI stub creation and made the stub array an image root\n- Fixed JNI stub test by making JNI stub array executable\n- Fixed JNI UnregisterNative to having it reinstall the JNI stub\n- Fixed ARM JNI stub to generate PIC code (with irogers)\n- Fixed JniCompiler to generate PIC code (with irogers)\n- Fixed FindNativeMethod to handle recursive calls\n- Finished checkFieldType to use Object::InstanceOf\n- Fixed thread unsafe access to ClassLinker::{dex_files_,dex_caches_}\n- Added ResolvedMethod variant for use with Method* for context\n- Fixed ImageWriter to call FixupMethod\n- Fixed ImageWriter to rewrite JNI stub references\n- Improved error reporting on lack of ANDROID_DATA dir or art-cache dir\n- Fixed Runtime::Start to InitLibraries before creating thread peer\n- Implemented Space::IsCondemned to skip spaces loaded from images\n- Implemented artFindInterfaceMethodInCache,\n  allowing interface invocation from managed code\n\nChange-Id: I603e97fa0ac44508ae05a2e47c1cdb4481678d7b\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"
    }
  ]
}
