)]}'
{
  "log": [
    {
      "commit": "858f1c5fd5e528d0b16040ced74d4636046a42d8",
      "tree": "3cfe50b75962353cdd62ec68112f3f148f026506",
      "parents": [
        "ef851d3058abfc56ed544f25d387dc7ff9c32e0b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 17 17:45:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 23 10:38:45 2012 -0700"
      },
      "message": "Check point root marking.\n\nAdded thread list checkpoint function, this goes through every thread and runs\nthe checkpoint on each thread. Threads that are runnable run the checkpoint\ncallback themselves in the next suspend check, while suspended threads are\nleft suspended but have the callback called on them.\n\nAdded a checkpoint visitor member to each thread, this visitor called when the\ncheckpoint request flag is set during transitions to suspended from runnable.\n\nUsing the checkpoint to mark the roots reduces the first pause of partial /\nfull gc to around 1 ms.\n\nChange-Id: I97239cc72ee0e4a3397e9138a62ee559268dce0a\n"
    },
    {
      "commit": "9ebae1f30b84dfd8dab4144f80eebec4f8fc8851",
      "tree": "379f7606cf7c1b5bbeb41caccc4cb681fc1ef2b4",
      "parents": [
        "30de32dec8dba21f7fec117b779c2b4e6bb4e4e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 17:38:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 16 10:05:04 2012 -0700"
      },
      "message": "Concurrent class linker and intern table root marking\n\nWe now mark the class linker and intern table roots concurrently\n(with mutators unpaused), only re-marking these roots in the second pause if\nthey get dirtied.\n\nReduces root marking time by ~1ms for each pause.\n\nChange-Id: I833fc557bac9a2930868db715587318293fa4655\n"
    },
    {
      "commit": "0051be6d118c511308ed7764ef41e0d594292c49",
      "tree": "aadcb9811b6034bf85d5a1c09d9264514f27dfac",
      "parents": [
        "17f6cb9d269b8289f751551c80fe8b0dcfad363c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 17:47:11 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 09:52:41 2012 -0700"
      },
      "message": "Add parsed options for heap min free, heap max free, target utilization.\n\nAdded options in runtime for heap min free, max free, and target utilization.\n\nChange-Id: Iaea988ffbf6cb7f07127640786168de7d341f1e1\n"
    },
    {
      "commit": "120f1c74a9768e958377b6c97897511b27ae58c8",
      "tree": "fa1f90d88ea34d8ef9eec729d27c7a70956a6a09",
      "parents": [
        "cabc60e71a65fa17e5a99fba94fc61523fbeb478"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 17:17:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 17:29:26 2012 -0700"
      },
      "message": "Fail threads attaching during runtime shutdown.\n\nIntroduce counters to indicate that threads are being born. Don\u0027t allow\nthread birth to occur during runtime shutdown.\n\nBug: 7000936\n\nChange-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9\n"
    },
    {
      "commit": "66f19258f9728d4ffe026074d8fd429d639802fa",
      "tree": "fd94009774c6cbbb1528ea096e606133bd35f104",
      "parents": [
        "a5e1e3d153990845d80cb8d013157210f11a473c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 18 08:57:04 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 21 17:32:56 2012 -0700"
      },
      "message": "Change dex cache to be java object instead of array, add pointer to dex file in dex cache.\n\nGeneric clean up to facilitate having GDB macros for Pretty* helper functions.\n\nImproved cleanliness of DexCache since having it as an object array was not the best solution.\n\nFixed a bug in InOrderWalk caused by ResolveType sometimes allocating classes.\n\nRename C++ Method to AbstractMethod and add two new classes Constructor, Method which both inherit from AbstractMethod.\n\nRename done to have the C++ code be closer to the java code.\n\nChange-Id: I4995b4c5e47a3822192b08afa24a639d3b1f4da9\n"
    },
    {
      "commit": "b726dcb581bf72da46527378ccb6889020f0e6e9",
      "tree": "c0383ed788652926e93147e50d659ed226519548",
      "parents": [
        "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 08:57:23 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 09:06:19 2012 -0700"
      },
      "message": "Rename GlobalSynchronization to Locks\n\nAlso address some review comments in common_throws relating to\nToStr\u003cInvokeType\u003e and exception detail messages.\n\nChange-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b\n"
    },
    {
      "commit": "1b09b094a85e03f6ef5f687f58bb91c433273ba1",
      "tree": "6b039e520ee3b73e6ba5fb23954b9e01ecc68fc9",
      "parents": [
        "931c278aed62d7a97b87cf1bb9cfdd189e77eb24"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "message": "Syntax clean up to make clang happy.\n\nChange-Id: I0984c395bbd1ee4b206eafd19915b6f68781dd16\n"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "034f76b91225bea769d6185d7dad5e243af4ffa0",
      "tree": "56732a2b9847c5c791cb8f2336222ca9f853b277",
      "parents": [
        "f2ba9cbe81b0762a7c8c659cdb86ba79b2dbbc40"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 01 15:51:58 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 01 15:51:58 2012 -0700"
      },
      "message": "Check for null thread groups at initialization\n\nChange-Id: Ia6fffe9f416ac4bd2588016b99b172cf023f3c5d\n"
    },
    {
      "commit": "cc236d74772dda5a4161d9bc5f497fd3d956eb87",
      "tree": "2cd44e980357edc5b1a477fb261adb590d34c7c7",
      "parents": [
        "f1ea6b072b8b473eabf91d1d582fb5966ffea4ba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 20 10:29:05 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 27 14:30:51 2012 -0700"
      },
      "message": "Zygote space / partial collection support.\n\nThe zygote space is now created right before zygote fork. This space has new allocations into it disabled, this reduces memory usage since we have more shared pages.\n\nPartial collection works by marking all the zygote space -\u003e alloc space references by using a mod-union table and then recursively marking only over the alloc space.\n\nApproximate improvements;\n\nDeltablue time goes down ~0.5 seconds.\n\nCaffeinemark score goes up ~300.\n\nSystem memory usage goes down ~7MB.\n\nChange-Id: I198389371d23deacd9b4534f39727eb641786b34\n"
    },
    {
      "commit": "78a5e15629e6591090582cd83b1ec1380a50a840",
      "tree": "5773d2bd912a5ea8cea8fb3144cf9f2c6abe6d74",
      "parents": [
        "837210218c82a4f8e69304e58f8d018dbeb313b8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 09:20:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 09:20:41 2012 -0700"
      },
      "message": "Add missed check in thread group getters.\n\nChange-Id: Ia24ac608f0820482c082d33c0c44190f0eb883ca\n"
    },
    {
      "commit": "971bf3f9184010d68b9a3ad30b396fa401af91a3",
      "tree": "493e80309ce41fd21359da8093fbebfd21b7936c",
      "parents": [
        "468a7b1fcb2114ec973e31b5276daea0be62c198"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue May 01 15:47:55 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 03:47:58 2012 -0700"
      },
      "message": "Compile method one-by-one.\n\nChange-Id: Ic56fb397f3bd6dee32372eb875261a3383eaf30c\n"
    },
    {
      "commit": "365c10235438607541fa2259a5fec48061b90bd8",
      "tree": "26516a4985a8bbef4c8da36b99bf1e54af3ad24d",
      "parents": [
        "147440427984816b6ed5235a9b1fb2cbf99496d0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 22 15:05:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 15:21:01 2012 -0700"
      },
      "message": "Increase use of ScopedJniThreadState.\n\nMove the routines for changing Object* to jobject and vice-versa\n(AddLocalReference and Decode) to ScopedJniThreadState to enforce use of\nObject*s in the Runnable thread state. In the Runnable thread state\nsuspension is necessary before GC can take place.\n\nReduce use of const ClassLoader* as the code bottoms out in FindClass\nand with a field assignment where the const is cast away (ie if we\u0027re\nnot going to enforce the const-ness we shouldn\u0027t pretend it is).\n\nRefactor the Thread::Attach API so that we\u0027re not handling raw Objects on\nunattached threads.\n\nRemove some unreachable code.\n\nChange-Id: I0fa969f49ee6a8f10752af74a6b0e04d46b4cd97\n"
    },
    {
      "commit": "a21039c3ae2b20e44ceb2735251c04d0aac89afd",
      "tree": "66b6fa437e7e4286b50bdef224500f9049633701",
      "parents": [
        "3d9d49fa2d025a041f57ea306ea551ef990177db"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 12:09:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 13:04:41 2012 -0700"
      },
      "message": "Fix a bunch more lint.\n\n(If you ignore the compilers, we\u0027ve got relatively little lint now. Fits on\na single screen.)\n\nChange-Id: I51389002894d4fd8cf46f79d2bac57079322a030\n"
    },
    {
      "commit": "069387a60cb2b72e116cc38b32e14403f092df8f",
      "tree": "787c123093daa5e79ab8d5c25ed18856dd6d0724",
      "parents": [
        "83c26f9c7ee42b0037d2679f6f37dd28a3f13af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 18 12:01:01 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 18 15:19:28 2012 -0700"
      },
      "message": "Enable / disable CMS runtime options.\n\nEnable or disable CMS by doing -Xgc:noconcurrent or Xgc:concurrent. Defaults to enabled.\n\nChange-Id: Ib18687ba6aa6534323531d761133ce410c69f426\n"
    },
    {
      "commit": "225f5a1df25241babd16cdba54056b9e2cd166a2",
      "tree": "d3846f2f3a97a59124084d8fd503a3238346e66d",
      "parents": [
        "7664f5cd118b355a5fe0c7536cb48ac991ed2b62"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 11:23:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 11 11:37:58 2012 -0700"
      },
      "message": "Don\u0027t pre-allocate one OOME per thread.\n\nThere\u0027s no associated stack trace, so we can share one between all\nthreads, saving a little memory and thread start-up time. Speaking\nof stack traces: dump the stack to the log at the point where we\nrealize we\u0027re not going to be able to throw an exception with a\nstack, so the developer has _something_ to work with.\n\nChange-Id: I2246d291855bd9b9ee13f2be5b1ce14f669e9410\n"
    },
    {
      "commit": "7664f5cd118b355a5fe0c7536cb48ac991ed2b62",
      "tree": "0564c36316e2aa0a892ff9914258433f14641a07",
      "parents": [
        "9eb5f03e0dd90ac25e01fcf81f832c50a1f09d2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 08 18:15:32 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 11 11:17:13 2012 -0700"
      },
      "message": "Fix GC performance regression\n\nEnable CMS and fix performance regression due to recursive marking image spaces. Dependent on my java change list.\n\nChange-Id: I4765792aa8226e811ac158f04ab88217db755573\n"
    },
    {
      "commit": "9af209c9dcc6763fae2976981570a90aa41fd86b",
      "tree": "450ad8e634cfde765d4719746d6bc1685422a5f4",
      "parents": [
        "2945e2455ba87e15b65f4a6a737bcdc8c0f2f31b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 20:50:30 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 20:50:53 2012 -0700"
      },
      "message": "Move simple runtime accessors to header file\n\nChange-Id: I6831e067d8b7ce4d81b6daf9bd6a8af21fecfde3\n"
    },
    {
      "commit": "8593fdbacf97261f790ca53ea0ec416f57c987a7",
      "tree": "a9c97a2bc41a31c3a7f8f72d5f1c27bb34b8a627",
      "parents": [
        "e2f0911dfc7cec7c48ad0dea50f2028ae0f1fd0f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 21 20:53:44 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 21 20:53:44 2012 -0700"
      },
      "message": "Clean up host aborts (and simplify the code).\n\nChange-Id: I6efaf065304459df0e030f242f8d1d2fc6fdec4a\n"
    },
    {
      "commit": "457005c557b8762475db3220ce5a747d629f975b",
      "tree": "e267d67cf62e64f8d479d4af2df631fed3ef8d26",
      "parents": [
        "1144f950daafb99b4b48196c17391f54f7abb4d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 13:54:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 13:54:25 2012 -0700"
      },
      "message": "Add signal handlers for host builds to imitate debuggerd.\n\nThis isn\u0027t going to be as reliable as debuggerd because we\u0027re running inside\nthe crashed process. We could always build debuggerd for the host, and have\nsomething to call out to that. But for now, this gives us most of the\ninformation most of the time...\n\nChange-Id: I992ffb3bdb2903e4b83bd5666108ebe12a813338\n"
    },
    {
      "commit": "c967f78cd29b6019f7cfca40a02e9b677112da70",
      "tree": "60458d56fc398c9fb7b67b6d834b85f626ac2b31",
      "parents": [
        "fd8ea97f64fb6d32cbfe35729b816a22dfa18224"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 10:23:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 10:23:15 2012 -0700"
      },
      "message": "Include a new heap summary line in the SIGQUIT output.\n\nLooks like this:\n\n  Heap: 87% free, 4MB/32MB; 6327 objects\n\nWhile I\u0027m here, fix another long-standing TODO to make PrettySize have the\nusual google3 behavior. (I took the specific thresholds from Chromium.)\n\nAlso distinguish between the more general \"Dump\" member functions and the\nspecific SIGQUIT-related ones by consistently calling the latter DumpForSigQuit.\n\nChange-Id: I76e783adc18dd089bac9b348f53dc9860a0fe4b9\n"
    },
    {
      "commit": "a0e180632411f7fe0edf454e571c42209ee7b540",
      "tree": "97dc85e76c5449ec1a901226c44e0f68fec89870",
      "parents": [
        "e5eb1914de86129d78e965fb9f2e1bfb2aa68640"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 13 15:59:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 14 11:44:21 2012 -0700"
      },
      "message": "Add a SafeMap equivalent to std::map but without the error-prone operator[].\n\nChange-Id: Iae5ba2091c55a34dbd1005cf3d25fce2a8d5c1f9\n"
    },
    {
      "commit": "0f3c55331439970e01af67f80ac117c473bc04cf",
      "tree": "cfa28ad2a58af1ffddb0a2ce90443ad4606743c3",
      "parents": [
        "273cf36d199cf73de3cf61a559ad27c9d23f9825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "message": "Kill constants.h and fix some copyright headers.\n\nChange-Id: I51c04d731d6de035328781d8ac134ad6fcf49897\n"
    },
    {
      "commit": "462c94449720e0dc6b93d7138d835d345ccf67ae",
      "tree": "e719ceab0e64e0cc2ca4acb6ee715623ab458215",
      "parents": [
        "81ff3184e7eb8de4605c7646674ea4f9fa29b5f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 18:47:50 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 08:42:04 2012 -0700"
      },
      "message": "Fix AttachCurrentThread to use the right thread group.\n\nChange-Id: I9818845c005563d894a571edc4f9be9862312380\n"
    },
    {
      "commit": "b5e81858a47dd7ed051135f6982fbc4e13d0f309",
      "tree": "7da467d2b2d18de134960b0efbf7e484c6a8e4aa",
      "parents": [
        "4d26534f6a65d7af89cc32da8fbc32beed693201"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 12 11:15:45 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 12 13:57:13 2012 -0700"
      },
      "message": "Added code to allow method tracing from command line.\n\nCrated a set of command line switches to allow method tracing to be\nenabled from the command line. They are -Xmethod-trace,\n-Xmethod-trace-file, and -Xmethod-trace-file-size.\n\nChange-Id: I7ecaa07aba3d7ca41f2ff3a9a9341d97833afe36\n"
    },
    {
      "commit": "b3bd5f07884f5a1f2b84224363b1372d7c28d447",
      "tree": "6e2997ab64b4a4f32d7ef539a4649adc736ea553",
      "parents": [
        "ddbd01ac1660d57416879d5a576482f1048dde64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 08 21:05:27 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:37:46 2012 -0800"
      },
      "message": "Refactor the compilers out of libart.\n\nThis builds three separate compilers and dynamically links with the right one\nat runtime.\n\nChange-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b\n"
    },
    {
      "commit": "fb6adba0d5d5505610fbd325e7911db700a2f1e8",
      "tree": "84ad8f9cc55a2ae87f80c05927126af7e75604d7",
      "parents": [
        "123e8a7fdf69b40603f7df95f08d62c69ee1c07e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 04 21:51:51 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 08:56:55 2012 -0800"
      },
      "message": "Sharpen virtual calls to final methods.\n\nAlso remove unused instance resolution stub.\n\nChange-Id: I2abb988d107e98ac0148fb81464b22622a468382\n"
    },
    {
      "commit": "1984651929744dd603fd082e23eacd877b9bc177",
      "tree": "ffa10973a88f0f2743f3fbfaf5e7e4235d5f262d",
      "parents": [
        "f3c01c530ab3a645bd5a980522df4d396dcbf228"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 24 11:42:47 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 27 16:08:56 2012 -0800"
      },
      "message": "Invoke static/direct dispatch change.\n\nThere was a subtle race in static/direct dispatch via the code and methods\ntable. This patch removes the table in preparation of architectures like\nx86 which will more aggressively sink loads.\n\nRemoves unused fields, code.. Brings back resolved methods table\nshort-cut and associated fast paths to use this (such as in Proxy). Adds\na resolution method that is used as the trampoline for static and direct\nmethods.\n\nAdd source file and line number to Throwable::Dump.\n\nMethodHelper knowledge of runtime methods.\n\nChange-Id: Ieae1b74c24072e6327a5bb2cad466f04e3c46c4d\n"
    },
    {
      "commit": "a004aa933a58428489e42d77f707c2b063b73747",
      "tree": "1224764c4a524957e94dfe2d27e277d024986668",
      "parents": [
        "573b7c9324b11ff7f42f68c9ad52d26ebc4b6d12"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 08 18:05:09 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 16 17:48:28 2012 -0800"
      },
      "message": "user build support for art (2 of 3)\n\nChange-Id: I4696fee58e43db48540e2442c4235fc4bb02d9e3\n"
    },
    {
      "commit": "f1a5adc87760f938b01df26d906295063546b259",
      "tree": "99f9a917b667cdaab69fa7df0978e4310eb6c207",
      "parents": [
        "5b1f162d9cbec1c6b2863bd220bdaecdcb18b139"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:09:35 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:09:35 2012 -0800"
      },
      "message": "Reduce StringPiece usage a bit.\n\nVarious easy cases, in case we want to move towards making the StringPiece\nconstructors explicit.\n\nChange-Id: I49e5efc5b787f847ab4cb12d66d1d16aed03fa67\n"
    },
    {
      "commit": "223f20fa939c386c695977263780dea2195093db",
      "tree": "642d1abe5dfbf2239bf239e8e91bebd333384378",
      "parents": [
        "a56fcd60596ae8694da21fccde5c56832e437c56"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 23:06:55 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 23:24:56 2012 -0800"
      },
      "message": "Remove old code to support multiple images\n\nChange-Id: I29bc2f216361ac4ed0cc0fefb7e3c46ee64e0ae8\n"
    },
    {
      "commit": "d9c67be7c116875d96b31e640ad47d587b205605",
      "tree": "55ba94dde3916dfb88681e4967e4a45926436716",
      "parents": [
        "763d5fb2f83d9c93b5b764533005865a3d1034e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 19:54:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 09:28:44 2012 -0800"
      },
      "message": "Start parallelizing dex2oat.\n\nThis is enough to perform type resolution and verification in parallel.\n\nThere appears to be a bug in InitCpu --- if you start enough threads\nat once, the CHECK at the end starts to fail, with self_check \u003d\u003d NULL; I\u0027ve\ncommented it out for now, but this will cause test failures until it\u0027s fixed.\n\nChange-Id: I4919682520bc01d3262c6b3d00c7bd2c2860a52e\n"
    },
    {
      "commit": "2faa5f1271587cda765f26bcf2951065300a01ff",
      "tree": "c59557857c36741cfcd1b6bf5ae039886a8ad6e7",
      "parents": [
        "0850c69c88d49efd4075288511b70d6c032bd0c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:42:07 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 16:46:29 2012 -0800"
      },
      "message": "Fix copyright headers.\n\nChange-Id: I5b7bc76a370238d810d78522bd5531600746700f\n"
    },
    {
      "commit": "131aef8c94292cc530da2fd91ee98d1432352959",
      "tree": "58bc993648e93dc6e84d701457f0cda0b0ec82cb",
      "parents": [
        "6622e5dcf77fd1af7bdec45466da590471b53ba0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 11:53:35 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 11:53:35 2012 -0800"
      },
      "message": "Only allow one thread to abort at a time.\n\nFound when looking to see if Google Earth had fixed their JNI bug yet.\n\nChange-Id: I8768248625869d344ba04ecf4fec06047f76c3ce\n"
    },
    {
      "commit": "ff17f1fd3ff32f93e45588eb2b158832d73f9afa",
      "tree": "deab04f6a2ad7f1dbaf0e6be266512d663e3dd91",
      "parents": [
        "a7679b67ca945194fa2442015e606cd250f0de2b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 18:12:29 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 18:12:29 2012 -0800"
      },
      "message": "Remove various bits of lint.\n\nChange-Id: I5f8f61766d2add7fd7ff40d463ea03cb20515988\n"
    },
    {
      "commit": "6b3557571e798b60df995f978fa01c0ca1980dfd",
      "tree": "ce56e52d67d20bf3204074b48d2be1d15644ef54",
      "parents": [
        "f4222065170130a31513dc63e2c2808db80860f1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 13 16:49:08 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 13 16:49:08 2012 -0800"
      },
      "message": "Make pthread_mutex_t destruction safer during shutdown.\n\nIf we have suspended daemon threads, they might be holding some of the mutexes\nwe need to destroy, so we can\u0027t assert that we successfully destroyed them. We\nstill want to assert success where possible, though.\n\nBug: 5869254\nChange-Id: Id4f3af3d40b10045958e7d692b3c9eebafec566d\n"
    },
    {
      "commit": "2692b573a56cd63a3c8c8aa1636e3766b6d8c9c4",
      "tree": "16d422b8b2d3ae8e20baa34090b7b5b2aa687cd8",
      "parents": [
        "db7d5e96d3e4090e69fac7b4ec1fc1bdcc0b436c"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 16 15:42:28 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 19 10:36:47 2011 -0800"
      },
      "message": "Changed tracer to use an instance to hold state instead of statics.\n\nChange-Id: I2fdcf5de7fbc745273b1a33cb409d13e72d24ab4\n"
    },
    {
      "commit": "29e7ac74a3f9aec192099fec381baadaa55730ad",
      "tree": "350ef2b28d55411a31b838159191bf461aec03da",
      "parents": [
        "4d3c95bd7ee7d67993dc09617ee4138fa33af70f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Dec 05 23:42:57 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 14 11:02:24 2011 -0800"
      },
      "message": "Moving from libdvm to libart (1 of 5)\n\nChange-Id: I6541802c5f403a4ba4424818084b94bebe71dfca\n"
    },
    {
      "commit": "4dd9b4d95eec9db5338fb9bf132f9bb8facf6cf4",
      "tree": "f9dc6f6e6a55acea3a08f1f568ae6900c1dd7dd1",
      "parents": [
        "20a409c99a649a01cb7c65bd1089988445d8cdfd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 18:29:24 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 08:23:08 2011 -0800"
      },
      "message": "Clean up verbose logging.\n\nChange-Id: I6b01980e7145c4f8d25a5b50f620903f61a1b427\n"
    },
    {
      "commit": "21a5bf2dc8c9cb3fbe5a30a88d1149c328e3aaca",
      "tree": "37c621c34570383e124d4302cbc72b4f142a2962",
      "parents": [
        "4740cdff25875c530649a670b15e8ac52bfd7252"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 14:35:20 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 14:51:26 2011 -0800"
      },
      "message": "Detect over-long thread suspends and time out fatally.\n\nBug: 5726434\nChange-Id: Ib7d4429c2b195f59133bb6dc7f9072b705c53e82\n"
    },
    {
      "commit": "ae826983f7903bc0a6bbbe8426bf393fb2f6d747",
      "tree": "6fb83f2b19a1a50ade3c93cbf10485cd8fbc793f",
      "parents": [
        "8aa6fc39f5cc0279d4ba2ee064de9758560dfedd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Nov 09 01:33:42 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Nov 29 13:46:50 2011 -0800"
      },
      "message": "Add --image-classes to dex2oat\n\nChange-Id: Ia88f9d302e0f9cd72be2199ee46d212d99864c67\n"
    },
    {
      "commit": "169c9a7f46776b235d0a37d5e0ff27682deffe06",
      "tree": "9bd38fe9508e827089d546f04b0b42020eef821e",
      "parents": [
        "0571d357843c53e042f370f5f2c2e9aa3fe803a9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Nov 13 20:13:17 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 14 09:27:23 2011 -0800"
      },
      "message": "Remove the use of Method from jni_compiler\n\nChange-Id: Ibf1c72a806e7f1ba7a2d83960c3d57f41937d336\n"
    },
    {
      "commit": "c11607024d2e7a52ca690b8339306cab040e6653",
      "tree": "96ff9bd6a47dd71d18221a9037a6c1102ed64724",
      "parents": [
        "371814fd131d5b7b54a5839d292240f9c4ed4160"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Oct 27 15:48:45 2011 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Oct 28 11:57:50 2011 -0700"
      },
      "message": "Added support for -XX:HeapGrowthLimit switch\n\nRuntime can now take in a growth limit for the heap, which can be\nsmaller than the maximum size of the heap, and will prevent the heap\nfrom growing beyond that size. The growth limit can also be cleared to\nincrease the size of the heap to the specified maximum size. This gives\napps some control of the size of the heap, but should be removed when we\nhave better ways to resize the heap.\n\nChange-Id: I338655bccd20bfd32e2318365f0f3283dbaaab1e\n"
    },
    {
      "commit": "d1cc8363d4f4bbac7568b1d02a5ca481cd10830f",
      "tree": "df0c401ed6d5e4e9153268c3f336ead459a84cfc",
      "parents": [
        "4ffd31315bc0d00ec278e85feed15985de5ac3dc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 16:58:50 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 16:58:50 2011 -0700"
      },
      "message": "Wire up enough of the pieces that we can connect ddms or jdb.\n\n(And die with an UNIMPLEMENTED as soon as they connect, of course.)\n\nChange-Id: I9abb25d581384361c215b3cd96b8278c751e79ea\n"
    },
    {
      "commit": "94ce37a3919a0bdb8855a3d3264a50df1dbc41be",
      "tree": "9c1681c50289db15212f1afcbabc51463c96645c",
      "parents": [
        "7a8e9ea462a3291f7cbcb0b15b2538d70aa5e721"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 18 15:07:48 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 18 15:29:09 2011 -0700"
      },
      "message": "Implement -Xstacktracefile.\n\nChange-Id: Ib6c73ddc6f0eaf8f8b731d450b87bda55589f857\n"
    },
    {
      "commit": "bb1e8f0a07c12a8b0a2dd3cab6a1a7e825a54c6f",
      "tree": "b2c5d6d1765a6a4de8c3f90c32d78b424f870635",
      "parents": [
        "362f9bc807169bcfc8761dde067bbfb79b5ad0fd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 18 14:14:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 18 14:14:25 2011 -0700"
      },
      "message": "Implement -Xjnigreflimit.\n\nChange-Id: Iaa31cf4ea4f90fc76baa4472b67fe6c2cc0e0277\n"
    },
    {
      "commit": "fc86162ce2a3467acb690e18cc8bd9b3daafc606",
      "tree": "949145ce27225c93a41354460fa76cdc62647076",
      "parents": [
        "24a3c2e9924e8765c4a9b4d383cb8f3b922f9c9f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 17:57:47 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 20:21:27 2011 -0700"
      },
      "message": "Implement lock contention event logging.\n\nChange-Id: I88b30985590157bb5d04229a97f191b898f141bb\n"
    },
    {
      "commit": "47a0d5a6f221066c3daf7f67f2122ed9c9cd217c",
      "tree": "a14a0bec52655075b5e14844328d0df440b616ec",
      "parents": [
        "0839bdb71ba2dba8782f1813d7f7cee67a6f6a28"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 12 21:20:05 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 12 22:29:03 2011 -0700"
      },
      "message": "Move art content to /data\n\noat tests, gtests, and run-test content to /data/art-test\nboot.oat and boot.art to /data/art-cache\n\nChange-Id: I68f9f6798bc4ea0596642ff5624f3e77dec6ccbe\n"
    },
    {
      "commit": "307f75d6bcf7c32db7e1b43124dead628cc7ce96",
      "tree": "81fdf8690b0387e6535c85d11e24c2cc7b45cef3",
      "parents": [
        "caab8c4ef372db5c119bfac1911fa27b174a935c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 12 18:04:40 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 12 18:27:18 2011 -0700"
      },
      "message": "Add a C++ equivalent of Android\u0027s TimingLogger, and use it for the heap.\n\nThis also changes us over to one big stats update at the end of sweeping,\nlike Dalvik, rather than recording every single free individually.\n\nChange-Id: Ib8e2a83d41d36e35e154183a4e173e915af79ae9\n"
    },
    {
      "commit": "caabb1b77b4a55eb1bb45ebcd3071c9ea01dd3cf",
      "tree": "b4c83f013acb40f842e45128c3fe7f6fe6580d47",
      "parents": [
        "1b5f4975e6e822ae06e2ccd361d62e4c1664d404"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 11 18:09:13 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 11 22:29:58 2011 -0700"
      },
      "message": "Implement Zygote_nativeForkSystemServer\n\nChange-Id: I2f0c7b93e8ac3b3fa4bb350e787065f92c17972f\n"
    },
    {
      "commit": "c33a32bccc4c66ed82ce3a580b16636399385cb4",
      "tree": "ef101d11157784c0724998d39e988a275ed4f69c",
      "parents": [
        "a465c2034094eeb827ff9204951703dc5f269d60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 18:18:07 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 18:18:07 2011 -0700"
      },
      "message": "Sweep the monitor list.\n\nChange-Id: I343261206f8bbabd245b404dd95d532255e5d870\n"
    },
    {
      "commit": "9ca7a1fdd0daa546b790adb6a24dbc13c22df76a",
      "tree": "8e63b5714186aee1d4464a9340d614d080886527",
      "parents": [
        "bf61ba3dcd9d9895b86a05e88762ff034b09b263"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 14:29:52 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 14:32:59 2011 -0700"
      },
      "message": "Add -Xzygote to suppress starting the signal catcher thread.\n\nChange-Id: Iae98ac9d362c71074befbc702f8cae96888211ec\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": "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": "34f426c49ac2de8cea70acef6b9ecdd8e62209d2",
      "tree": "d838a44f5d9b3ba6d08164d577c6fb71156076b4",
      "parents": [
        "8cbc8bc716d7a47019ad14403920c72547b2fb96"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 04 12:58:02 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 04 13:00:10 2011 -0700"
      },
      "message": "Make class roots an image root\n\nChange-Id: I1f1513bf34caa736c0dd7518a92f493b4573d776\n"
    },
    {
      "commit": "58ae9416e197ae68ed12ed43d87407d4dfb15093",
      "tree": "9fa93ce844f931155bf4a1d060f091f3285fb205",
      "parents": [
        "4d0207c3ed28bbbb8c583a3c3a37f00d1cd4dedc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 04 00:56:06 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 04 10:39:42 2011 -0700"
      },
      "message": "Simplify command line arguments\n\nChange-Id: I9d6902b0c447fd8fbe5600fd36139791b2ceefb7\n"
    },
    {
      "commit": "e24fa61603a60ade3797e4a0c8b3fccb346cb048",
      "tree": "9ec5ed942eb9ece6d4d261ffd21956c94f9968fe",
      "parents": [
        "06cbeb990e94f9c4576601e27145fe132e34a686"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 29 00:53:55 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 03 10:28:05 2011 -0700"
      },
      "message": "Separate oat from image\n\nChange-Id: If2abdb99826ead14e3465d90ba2acffd89709389\n"
    },
    {
      "commit": "0a5b14de5115f51e0ed2dd6c3fcc5b84bbce690e",
      "tree": "76b5fd9a20b4bf2fa417e6fd88609461b1e826e4",
      "parents": [
        "5a7a74a042e73a355f5cedffa0d2faf5340028fa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 27 13:29:15 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 27 13:33:50 2011 -0700"
      },
      "message": "Add -verbose:startup\n\nChange-Id: I1ef70c2a9e559893541bbbf381b6893808602555\n"
    },
    {
      "commit": "2a20cfd0b7fc81099f5de0da782ebcc1cb262792",
      "tree": "ef9b496f2ea83edce5cbe4a427dbaafd710bff16",
      "parents": [
        "65ca077378935beb113bb5aec5e890054ca3286e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 23 19:30:41 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 25 10:29:48 2011 -0700"
      },
      "message": "Implement java.lang.reflect.Constructor.constructNative.\n\nChange-Id: Iefa92ad1bd89073d4bfa9a80b9e4f0dea90a5849\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": "9d5ccec86d60c9ddd811836b9a2bc28d0b3d11fe",
      "tree": "3a65213e8238770bb62ec54c8d82d230be405621",
      "parents": [
        "9086572fa809d1a19d886b467e4da3ce42016982"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 19 13:19:50 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 19 15:06:39 2011 -0700"
      },
      "message": "Implement as much of VMDebug as we can reasonably do right now.\n\nNo hprof and no method tracing, but everything else.\n\nChange-Id: Ifccd1f08e31f34b947c30f1211db788aae674d81\n"
    },
    {
      "commit": "038a806df72f884d22283a84a31c9a1d35ba1fdf",
      "tree": "c980ef0f8dbfb35dfedcd9faa0804df3f3e03f84",
      "parents": [
        "3101efb8f0e02fcfa70229c15631755cad758536"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 14:12:41 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 14:12:41 2011 -0700"
      },
      "message": "Thread.join, GC daemons, suspend daemons on shutdown, and wait for non-daemon threads to exit.\n\n(I\u0027ve been testing with a modified SystemMethods test that does various thread\noperations.)\n\nChange-Id: I3087087546f90c43da7a0e63fae918ff0a6e7005\n"
    },
    {
      "commit": "f867b6f706818c886087f61b89d1e8f5fc4653cf",
      "tree": "87a87a20f884601848ad09ced087035d121ab2d0",
      "parents": [
        "6bdc3b255d313a71016e78802dbcc97fa995c851"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 16 12:17:25 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 16 23:18:48 2011 -0700"
      },
      "message": "Filling in some Class, Method, and Field native code needed during startup and I/O\n\nChange-Id: Ia2f2a0ec295d1bd848e6f65254bd9fec2fde56f6\n"
    },
    {
      "commit": "85d1545e985ac689db4bad7849880e843707c862",
      "tree": "dbda9214657085a3cbb77b323766da585e133a36",
      "parents": [
        "dcb3dd8bfd6e2d5935442fe8671a2f6326a1e4e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 17:33:01 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 17:38:56 2011 -0700"
      },
      "message": "Add packing to class Thread.\n\nOtherwise, code compiled on the host can use different offsets than\nwe need for the same structure on the target.\n\nAlso add commented-out code to start up the various GC daemon threads.\nMore Class native methods need to be implemented before that will work.\n\nChange-Id: I618b647b92378eec1b25cee469c8cfccf42f21fd\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": "7ede61eceed2f8da14a4fff05c57c748c160d57f",
      "tree": "f3fc2ac910aaf0ad0295d914e48da820b5bbffd6",
      "parents": [
        "8d768a954b101a9532f980253ac46be2c53aba11"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 14 18:18:06 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 14 18:18:06 2011 -0700"
      },
      "message": "Implement VMRuntime.\n\n(Some of this forwards to unimplemented stuff in Heap.)\n\nChange-Id: I01e51d5673e61ddfdbfa2098310122502c3afcf1\n"
    },
    {
      "commit": "8daa0929f08a3080ea64dbd4e997e72f411e6fc9",
      "tree": "cecee23131d5e0357c17c44bcccc7ddcfb31b925",
      "parents": [
        "4b620ffb1b4d0c96a94bb3afe314f35d53990ec6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 13:46:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 14:01:57 2011 -0700"
      },
      "message": "More threads work.\n\nAdds stubs (and sometimes implementations) for dalvik.system.VMStack and\njava.lang.Thread native methods. There was a bug in the dalvik\nthread priority setting code, where the current thread and the passed-in\nthread were confused.\n\nI\u0027ve also pulled Mutex and ThreadList out into their own files, and\nmoved some functionality around (with the aim of having more stuff\nprivate, especially locks).\n\nChange-Id: Ieb0f22669cac3df44ca34f7868f8e7d4dfa09ab6\n"
    },
    {
      "commit": "be759c63c6bb58b76ac71cad2c5a736bd31f374d",
      "tree": "60c5ab8fdb9d47bb0db5bda996aaac21caa4b1f3",
      "parents": [
        "92b3b5623ec8b65f3e099c076e247bb8273692f8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 19:38:21 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 19:50:39 2011 -0700"
      },
      "message": "Add a heap HWM to the Thread*, for compiled code.\n\nAlso fix a bug in thread detach, and implement the thread exit callback.\n\nDestroy our pthread_mutex_t instances, and check for success. (This will\ncatch us deleting locked Mutex instances.)\n\nChange-Id: I26cf8117b825234f6c790e0cf70b2c025a743f84\n"
    },
    {
      "commit": "5fe594f576225dd7d333835e39c448a71ea9b433",
      "tree": "f9b6203abaf07df1421f6e7cadcbb2c307cef5b2",
      "parents": [
        "4ef765227a0098b6f4dfe47d2d7a6f084cec9560"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 12:33:17 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 14:26:18 2011 -0700"
      },
      "message": "A bit further along the track of multiple threads.\n\nThis also makes valgrind happy, and tsan mostly happy. (The heap, it turns out,\ndoesn\u0027t have a lock yet.)\n\nThe DexVerifier changes are just to make valgrind happy, and the code a little\nless unidiomatic.\n\nChange-Id: Ic5d436b4863b9d7088eb0b8fe9d32308919899d8\n"
    },
    {
      "commit": "dcc247493fd8fb243e335c3ec08e5e625896a47c",
      "tree": "5eedb27fb6a295a1daec4cee276ba05c28abe483",
      "parents": [
        "f5ecf06388960bc1424ed0a8652c78e345d82106"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 14:02:44 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 14:02:44 2011 -0700"
      },
      "message": "A little bit more of the threads implementation.\n\nThe most important change here is understanding that Thread\u0027s id_ field\nwas unrelated to java.lang.Thread\u0027s id field.\n\nChange-Id: I832b92145332e1ded63a7824033dae684eeacf28\n"
    },
    {
      "commit": "69b15fb098162f19a4c20e6dccdcead04d9c77f0",
      "tree": "84fdfc26f560fb618b652a0aff98347f875a2653",
      "parents": [
        "109bd6a38d0cd7c4b7797a9f2db8324c797d1368"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Sep 03 12:25:21 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 06 15:28:47 2011 -0700"
      },
      "message": "Working dex2oat and oatexec\n\nadb shell dex2oatd --dex-file\u003d/system/framework/core.jar     --image\u003d/system/framework/boot.oat --base\u003d0x50000000 \"\u0027--method\u003dLjava/lang/System;logI(Ljava/lang/String;)V\u0027\" \"\u0027--method\u003dLjava/lang/System;log(CLjava/lang/String;Ljava/lang/Throwable;)V\u0027\"\nadb shell dex2oatd --boot-dex-file\u003d/system/framework/core.jar --boot\u003d/system/framework/boot.oat --dex-file\u003d/system/framework/art-test-dex-HelloWorld.jar --image\u003d/system/framework/art-test-dex-HelloWorld.oat\nadb shell oatexecd -Xbootclasspath:/system/framework/core.jar -Xbootimage:/system/framework/boot.oat -classpath /system/framework/art-test-dex-HelloWorld.jar -Ximage:/system/framework/art-test-dex-HelloWorld.oat HelloWorld\n\n09-05 17:58:18.912  2385  2385 I System  : Hello, world!\n\nChange-Id: I53e534068584f0c3a837313e4d517a0e4a7154fc\n"
    },
    {
      "commit": "d92bec457dc6c506c80e9da6b8e0c958266b5cdc",
      "tree": "50f28fd96411f68d4b91cc5943d159a00fcf88cb",
      "parents": [
        "4cdeec9686e1cd2d0118c96443e8c882dc849b7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 17:04:36 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 17:40:19 2011 -0700"
      },
      "message": "More SIGQUIT handling, various Thread fixes.\n\nChange-Id: I3233c300d1c838c2eee0ba9be6018b7fbd907386\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": "a09576416788b916095739e43a16917e7948f3a4",
      "tree": "63c4c7b9726817a51a9dc514dc68fb16287748cd",
      "parents": [
        "410c0c876f326e14c176a39ba21fc4dd3f7db8ab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 14:27:33 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 14:27:33 2011 -0700"
      },
      "message": "Add back the dalvik-style JNI logging and tracing.\n\nChange-Id: I3f8f50c9f9f2cb36f1668150c5e19f6225d15bbb\n"
    },
    {
      "commit": "410c0c876f326e14c176a39ba21fc4dd3f7db8ab",
      "tree": "e4b77ac5ed99b7206c51f6519689fdbc623e843d",
      "parents": [
        "1b4c85959b3d9a4a33bc2160c46c1bbde67350c7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 17:58:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 22:16:18 2011 -0700"
      },
      "message": "Mark more roots.\n\nThis is most of the stuff. (Everything that currently exists, though there\u0027s\nmore to come.)\n\nChange-Id: I235a21b006820a027c494374a5b52ffefed89c32\n"
    },
    {
      "commit": "cf4c6c41b0084dc4567ff709fb8ce9ebd72b26ac",
      "tree": "ca3d0314b5c4111d7ab6fd97b4e68d5b2679e237",
      "parents": [
        "2f0ce9d60a4a9371c63a32a3764320fb02341acb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 15:16:42 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 15:51:43 2011 -0700"
      },
      "message": "Fully implement string interning.\n\nAlso, more const.\n\nChange-Id: I09cae88d677e8e6e42d0fa9b5d1093c79d225e66\n"
    },
    {
      "commit": "bf86d0438e9ef9c145ebcf16a2e74c4efaa2686a",
      "tree": "e8641925dd68c6e03b41ceb3de58108436f988a0",
      "parents": [
        "ad7c2a3b4daa2abd707375444f4b0db7d69a3838"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 31 17:53:14 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 08:51:12 2011 -0700"
      },
      "message": "Start adding implementations for runtime-provided native methods.\n\nThe library can\u0027t do everything...\n\nChange-Id: Ib808c00570c7214aeb2ca058b1a66cacbeb372f1\n"
    },
    {
      "commit": "ad7c2a3b4daa2abd707375444f4b0db7d69a3838",
      "tree": "66f9fea013f4fa9ac4a23a467f7c47302470c538",
      "parents": [
        "1f87008b165d26541d832ff805250afdc89c253d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 31 11:58:10 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 31 11:58:10 2011 -0700"
      },
      "message": "Add infrastructure for registering built-in native methods.\n\nWhile I\u0027m here, make fiddling with Thread state easier.\n\nChange-Id: I3d215a3a852aa8970c3974b2edefce9dd261ccd7\n"
    },
    {
      "commit": "1f87008b165d26541d832ff805250afdc89c253d",
      "tree": "a84122b3757b8f856eb0656a951ed6621b6d01a8",
      "parents": [
        "c5bfa8f49d8548d7c685a99b411311ef56bedffa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 23 16:02:11 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 31 09:46:57 2011 -0700"
      },
      "message": "Add HeapTest and make GC work enough to pass it\n\nChange-Id: If06eaef2921b64b3226bfd347acaec60ec993e67\n"
    },
    {
      "commit": "90a3369d3b6238f1a4c9b19ca68978dab1c39bc4",
      "tree": "b66ec9b2cced5713bd5902c499d57b533d2e7a9a",
      "parents": [
        "34023801bd544e613d6e85c9a5b2e743f3710e8f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 13:27:07 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 13:27:45 2011 -0700"
      },
      "message": "Switch to UniquePtr.\n\nOnly one use of scoped_ptr was incorrect (but then again, I spent an afternoon\nwith valgrind finding and fixing them just last week).\n\nChange-Id: If5ec1c8aa0794a4f652bfd1c0fffccf95facdc40\n"
    },
    {
      "commit": "e27955ca3ca960928d4dbd6cb79711fce06950b3",
      "tree": "bbf56dbaecba643099e5831ea502d57901dcb714",
      "parents": [
        "ba5ebb944b7c5c6a1b754b6dd47eed96f39aea29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 15:21:24 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:30:02 2011 -0700"
      },
      "message": "Add the signal catcher (for SIGQUIT and SIGUSR1).\n\nAlso fix some of the thread implementation.\n\nChange-Id: If2d1b59a149ba1ac192ad9bc74319c8dff228549\n"
    },
    {
      "commit": "c1674ed06662420213441ff2b818f2f71f9098dc",
      "tree": "2799982a5059feab2a680ce5d91c276e5852983c",
      "parents": [
        "bafc342a37e423a19ac05f14800006ea9d67a941"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 18:09:09 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 18:48:47 2011 -0700"
      },
      "message": "Make valgrind happier and stop us leaking so much we can can\u0027t run the tests on a device.\n\nChange-Id: Id8f45dde788fd84c10b0b5807b2d12eae529ba5e\n"
    },
    {
      "commit": "9ea1cb1a22be5b85dc2622e3836c46a1c48e3f25",
      "tree": "99dd5c0b0a3e6db3f8696197467ae4fec284bec2",
      "parents": [
        "04ec7f0f244ef36fac1c7e590d2ea14e35dfe95a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 24 23:18:18 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 25 09:45:07 2011 -0700"
      },
      "message": "First pass of compiler wrapping class\n\nChange-Id: I343625310f69cc4de315af91b9cc72bb4da8f59b\n"
    },
    {
      "commit": "7577075b147fd8fa37ca41e7a32d1124676776ce",
      "tree": "f140e662b61200fe3ee4ba86c1fc05e9f4a96791",
      "parents": [
        "b465ab0e103d7760df903c1fddf4fa6b89d5d1f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 17:52:38 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 17:52:38 2011 -0700"
      },
      "message": "Finish off the new JNI implementation.\n\nThere are a handful of remaining TODOs, but this gives us complete coverage.\n\nChange-Id: Ibee38e6a87a0fcfae769d991125b0551243c8eeb\n"
    },
    {
      "commit": "c5f7c91ab89055cffb573fff7e06dbdd860bcced",
      "tree": "e96e62e1220adfb93a72ddc91a7a38755cd4942a",
      "parents": [
        "4a289ed61242964b921434de7d375f46480472a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 14:00:42 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 14:15:22 2011 -0700"
      },
      "message": "Switch to indirect references rather than direct pointers.\n\nThis also required a bit of fiddling to break cyclic dependencies,\nnow \"jni_internal.h\" needs Mutex from \"thread.h\".\n\nChange-Id: I1d6fb2d801c190f72255f5e447a0a8a65cc3e673\n"
    },
    {
      "commit": "44753c3908fcd5ccc066bf0dceddeabfeacf9f24",
      "tree": "9e10f9b3e7aa18135e3e3d5aab0a6576f700748b",
      "parents": [
        "4b3b727d405da366f480f438e9b968ee09bf958d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 17 22:22:11 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 18 12:22:26 2011 -0700"
      },
      "message": "Add unordered_set\n\nChange-Id: I2f8a7dba75b8cf26e23a350720920ba2e694e840\n"
    },
    {
      "commit": "b765be0d656c3073402693aeaf64e95a0e49f218",
      "tree": "82cedc276a8530c14d2e6ecc539526acbef68c8a",
      "parents": [
        "f734cf55d510976f4862b15e35fc86eae2a3daf8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 17 23:54:10 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 18 08:43:24 2011 -0700"
      },
      "message": "Alloc stack using MemMap and -Xss\n\nChange-Id: Ib6d52e41e62bf9cd111b2f03257ead53673d3e81\n"
    },
    {
      "commit": "f734cf55d510976f4862b15e35fc86eae2a3daf8",
      "tree": "cdb1077841e6be87353c27f2a30d352ac627663a",
      "parents": [
        "0af5543f8ea20c3e655b2d748a1b7dcf283792fe"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 17 16:28:14 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 17 21:51:13 2011 -0700"
      },
      "message": "Add ParsedOptions test (and migrate RuntimeTest to CommonTest)\n\nChange-Id: Ic338520dfaca2228260e546ed1522c37b83f42ac\n"
    },
    {
      "commit": "0af5543f8ea20c3e655b2d748a1b7dcf283792fe",
      "tree": "c1321a3c1e0fe700fa024294fa940d6d02c98d39",
      "parents": [
        "6c1a394b47c85c8d1723fc3b156a3b1b0b29a757"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 17 18:37:28 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 17 20:46:34 2011 -0700"
      },
      "message": "Code for loading shared libraries and calling JNI_OnLoad.\n\nThis causes a bit of log spam as we call unimplemented JNI functions,\nbut fixing those is my first job tomorrow. The exciting thing here is\nthat we\u0027re now loading libcore\u0027s classes and libcore\u0027s JNI.\n\nI\u0027ve changed ParsedOptions\u0027 std::vector of verbose options over to a\nstd::set for the convenience of callers, and defaulted -verbose:jni to\non. (This is not the cause of the log spam.)\n\nThe only nasty bit here is that icu4c doesn\u0027t like being initialized\nmore than 10 times, because it has a 10-element fixed-size array. The\nu_cleanup function is not publicly accessible, so we have to fiddle\naround with dlsym(3) twice in one patch...\n\nChange-Id: I9f6b5d74621eb2e88d04a89f00335067fda4ccbe\n"
    },
    {
      "commit": "515a5bc89282d6f910cae4d5852bb77124a47825",
      "tree": "431eabffeba344b671a19267829991585c16fda6",
      "parents": [
        "4dd71f1538a8d788c56c77378a59ce32afa519d7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 17 11:08:34 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 17 11:08:34 2011 -0700"
      },
      "message": "Add the -Xcheck:jni option.\n\nAnd make sure the boolean is available in every JNIEnv, so we\ndon\u0027t have to look it up via Runtime and JavaVM every time we\nneed to use it.\n\nChange-Id: I2d4b5d04ded196e7c7602406d854bb35227d767a\n"
    },
    {
      "commit": "6ea095ad30bf13cc00b4fee7afbbe4731a349c83",
      "tree": "fa86d5b6e4876c0abab7727d5d9a10c0b1974eb6",
      "parents": [
        "8a436595d36c1e4935984fcac249d7d877e00383"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 16 15:26:54 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 16 15:44:55 2011 -0700"
      },
      "message": "Parse required options\n\nChange-Id: Ia534132dcb1bfc4adbde3ed8afb07535e26ba942\n"
    },
    {
      "commit": "8a436595d36c1e4935984fcac249d7d877e00383",
      "tree": "66e6ecb9afb1c9950285c52fe98b93206436fccd",
      "parents": [
        "a5b897eae4b6f9f9608faa9eada7ddf42bf1bfd2"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 15 21:27:23 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 16 13:50:46 2011 -0700"
      },
      "message": "Work on option parsing as prelude to image loading\n\nChange-Id: I13edbd9b341e603817941beaca676535a7e590c7\n"
    },
    {
      "commit": "f2682d5a6ce0f7de58da8fd4ec8aec200c43b92e",
      "tree": "e7669f0833a588eb5231fb4452bbac091cc5037e",
      "parents": [
        "0d666d8769714dcbc2acc4dd5b06f0deffa6e0a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 15 16:37:04 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 15 18:34:59 2011 -0700"
      },
      "message": "Fix the invocation interface.\n\nPreviously, we just cast the Runtime* to a JavaVM*, which blew up as soon as\nthe caller tried to use their supposed JavaVM*.\n\nThis also implements NewObjectArray. Running aexecd on the host, this gets us\nas far as not having an x86 CreateInvokeStub...\n\nChange-Id: Iba5f148797d053fba1c69af99b20508ea6aff5cb\n"
    },
    {
      "commit": "40ef99eb9dd91c2fa549f40973964529c927bb3c",
      "tree": "317dfd56abeacb4c0dd3cf7f63a4801828d7dff9",
      "parents": [
        "5381cf941d26030199fcdbe61a614ff01e55a27c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 17:44:34 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 22:02:10 2011 -0700"
      },
      "message": "Start implementing JNI.\n\nThis patch replaces our JniEnvironment class with the regular JNIEnv.\n\nThis patch also adds support for .jar, .zip, and .apk files in the\nboot classpath.\n\nThere\u0027s also an attempt at implementing JNIEnv::FindClass.\n\nI\u0027ve also fixed a few scoped_ptr/scoped_array bugs (this kind of thing\nbeing the reason we use UniquePtr in libcore), and removed some\nunnecessary .\n\nThe \u0027tools/art\u0027 script makes it easier to play with aexec on the command-line.\n\nChange-Id: Ic4f704c12e0071f17e95b6e182fdab9370ead9b0\n"
    },
    {
      "commit": "b0460eaa2cb131f1dbdd5a7217bd36b9a9f1b995",
      "tree": "7b06bde279ff798413a531728ce51aafb122aa5e",
      "parents": [
        "8989d990e5be3982ab5ba4e7aa574652f71632ca"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 29 10:08:05 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 02 22:17:44 2011 -0700"
      },
      "message": "Add support for opening classes.dex file from zip, jar, apk\n\nAdding new ZipArchive class and test\n\n\tsrc/zip_archive.h\n\tsrc/zip_archive.cc\n\tsrc/zip_archive_test.cc\n\tbuild/Android.common.mk\n\nChange from host only use of build dex file for libcore to using host\nand target core.jar containing classes.dex files. This requires\nsetting up an ANDROID_DATA directory to containing an art-cache file\nfor the extracted dex files, similar to the dalvik-cache for odex\nfiles. A unique ANDROID_DATA and art-cache is created and cleaned up\nfor each test run (similar to vogar).\n\n\tsrc/common_test.h\n\nAdd dependency for libcore jar files to test targets to support\nRuntimeTest use of core.jar\n\n\tAndroid.mk\n\nExtract common includes to ART_C_INCLUDES when adding zlib dependency\n\n\tbuild/Android.common.mk\n\tbuild/Android.libart.mk\n\tbuild/Android.test.mk\n\nAdding TODO regarding unordered map for ClassLinker::classes_ table.\n\n\tsrc/class_linker.h\n\nAdding DexFile::OpenZip (also changed OpenFile to take\n\tsrc/dex_file.cc\n\tsrc/dex_file.h\n\nAdding kPageSize of 4096, validated by Runtime::Init\n\n\tsrc/globals.h\n\tsrc/runtime.cc\n\n    Updated to use kPageSize where it seemed appropriate.\n\n\tsrc/jni_compiler.cc\n\tsrc/jni_compiler_test.cc\n\tsrc/space.cc\n\tsrc/thread.cc\n\tsrc/thread_x86.cc\n\nChanged thread_list_ and class_linker_ to be declared in Runtime::Init\ninitialization order.\n\n\tsrc/runtime.h\n\nChange-Id: Id626abe5b6c1990e4f93598256ee0fae000818f6\n"
    },
    {
      "commit": "fc322c72d7a89a6f7a05c8bdc232d780aecd9232",
      "tree": "c27f4b609a09f0fa647bc7307af54f17604d9bd9",
      "parents": [
        "a40f9bc48afe3a9d38be2fa298fece13ed82ba28"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Wed Jul 27 00:20:01 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Wed Jul 27 00:20:01 2011 -0700"
      },
      "message": "Initialize the bootstrap class path from standard sources.\n\nChange-Id: Ib49d21f98fd76504e5d3675fc731261426ca84ed\n"
    },
    {
      "commit": "2ed144c2b49ae1da6c464d7a1be0062870530802",
      "tree": "2cd7472e610494129bcfd0b65744b81030dd4f2f",
      "parents": [
        "27012039a909f8769e4a90200921db8f0fd0396e"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Tue Jul 26 16:52:08 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Tue Jul 26 16:52:08 2011 -0700"
      },
      "message": "Preliminary implementation of the JNI invocation interface.\n\nChange-Id: Ib144cb887864cd232a8cb8167b20d1540829a6a5\n"
    },
    {
      "commit": "7a90959d4ef7a69f3bcb7b8763f646e12d9267d3",
      "tree": "1324ba0128921ad5d1b5f74244b471a4431c0040",
      "parents": [
        "913af1bd90a6e8fd56f1f851db1f098636dae6a5"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Sun Jul 24 19:21:59 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Sun Jul 24 19:21:59 2011 -0700"
      },
      "message": "Make the RuntimeTest use Runtime instances instead of its constituents.\n\nChange-Id: I1005f279259917ff07d24e3bcd3643992ec8e3bd\n"
    }
  ],
  "next": "f615a61aef972cfc1dc23931ac2ed0da14c3fedb"
}
