)]}'
{
  "log": [
    {
      "commit": "c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6",
      "tree": "250455427da979409a075a2b3197bd43ccd40fe1",
      "parents": [
        "bb0b53f58f11c628f077603b56077dfed1a18f11"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 30 23:44:11 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 06 12:14:01 2014 +0100"
      },
      "message": "Fixed and refactored profiler options handling\n\n- extracted profiler options in a separate class\n- switched from system property reading to command line arguments\n- added profile based compilation options to CompilerOptions\n- removed no longer used kProfile compilation filter\n- optimize dex files only if the profiler is enabled\n- clean up unused arguments\n\nBug: 12877748\nBug: 15275634\nChange-Id: I37ff68e7694370950ce8db2360562e9058ecebb7\n"
    },
    {
      "commit": "b74cd29802f364b4cec88f4913fa38ade26b8fab",
      "tree": "73ccdce1c5a6e57d5763cae1f889e53dca2b5e24",
      "parents": [
        "11138c73e0c5f8a90d1eeed3c48a2b63b310671c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 29 14:31:33 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 13:58:22 2014 -0700"
      },
      "message": "Compaction cleanup for FindArrayClass.\n\nWe now pass double pointer in to signify that it can cause thread\nsuspension, this double pointer gets wrapped by a handle if don\u0027t\nfind the array class in the cache.\n\nChange-Id: I43436b6c35597c7252b65d1180baddb5ac4caabb\n"
    },
    {
      "commit": "0cd81352a7c06e381951cea1b104fd73516f4341",
      "tree": "fcc8ff9cdeb608d0913097aa1fb64d1879f11ffa",
      "parents": [
        "dfd301f19800a4f168283cf2d0b15b2c09071955"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 16:48:55 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 12:55:45 2014 -0700"
      },
      "message": "Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\n\nFixed the generic trampoline to not use ToJObject when unnecessary.\n\nBug: 15167269\n\nThis reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459.\n\nChange-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271\n"
    },
    {
      "commit": "3bdb873122964da7937eb070cbcf2ef638a8e459",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "message": "Revert \"Fix an outstanding compaction bug in interpreter.\"\n\nThis reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.\n\nChange-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1\n"
    },
    {
      "commit": "e09ae0920be57760fb390b6944bce420fa0b5582",
      "tree": "acc40266093df4289ffb6728c979cafd6b5114d2",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 15 12:39:19 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 10:47:44 2014 -0700"
      },
      "message": "Fix an outstanding compaction bug in interpreter.\n\nFixed a bug in DoFieldPut where the FieldHelper GetType could cause\nthread suspension which would result in a stale obj.\n\nAdded more handles in the class linker to facilitate moving fiels\nand methods in the future.\n\nRemoved un-necessarly passing handle references since these are value\ntypes and don\u0027t need to be passed by reference.\n\nAdded a special NullHandle type which allows null handles without a\nhandle scope.\n\nChange-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b\n"
    },
    {
      "commit": "a705376e3355fd307bfbf7bf72d6944c63a9f2f7",
      "tree": "9973ff31bd7d51ea1922a874725e62f4b15f739d",
      "parents": [
        "bf17a08fb48fa296acb09904d4c10ba42f63f55d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 16 16:56:45 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 22 10:29:16 2014 +0200"
      },
      "message": "Support new VMRuntime native methods\n\nImplements vmInstructionSet, is64Bit and isCheckJniEnabled methods.\n\nBug: 14888999\nBug: 14888124\nChange-Id: I8a2d3f22f84a093be2fbc74464af6aa7b2a2bebb\n"
    },
    {
      "commit": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "cbfb8b2f30de46632d3499a838661765451845c5",
      "tree": "1c1e2bacb0dd16a7bb22cf26cbd7ad84d6a7f370",
      "parents": [
        "6099df8c0695a81a8f25c47ff801998b12d09d1b",
        "2d10b206f9d0b97396b7dadb9a6415cd39efd341"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 14 19:09:45 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 14 19:09:45 2014 +0000"
      },
      "message": "Merge \"Ensure JNI primitive array type is appropriate.\""
    },
    {
      "commit": "2d10b206f9d0b97396b7dadb9a6415cd39efd341",
      "tree": "032625cf6175d1749739bca3c9d673b027ba92c1",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 12 19:15:18 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 14 12:03:16 2014 -0700"
      },
      "message": "Ensure JNI primitive array type is appropriate.\n\nCheck the primitive array type for GetPrimitiveArray, ReleasePrimitiveArray,\nGetPrimitiveArrayRegion and SetPrimitiveArrayRegion matches the given array\ntype. Check the GetPrimitiveArrayCritical and ReleasePrimitiveArrayCritical are\ngiven a primitive array.\nAdd unit tests that null parameters lead to fatal errors, not crashes. Fix\nissues where CheckJNI assumed non-null arguments.\nTidy testing code via the use of nullptr. Add a few extra checks.\nEnsure arrays of void are not able to be created, use RI compatible\nNoClassDefError.\n\nBug: 14817823\n\nChange-Id: I9903bcd800d0da1988ced07f61fb97b783c5deab\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "987560fee798e48fb725c44b796d8ca7a5872ad6",
      "tree": "d61f35a129847f3f5fbed1436649e75acd940b3f",
      "parents": [
        "44b0053fdb7ad8a30138d29f714172a7dc69efb8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 11:42:59 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 14:52:19 2014 -0700"
      },
      "message": "Remove support for app JNI workarounds.\n\nChange-Id: I4396df7e93fcace4b5b19c2c387e5c30089182a6\n"
    },
    {
      "commit": "53b8b09fc80329539585dcf43657bc5f4ecefdff",
      "tree": "cac0f82fbb89bd907104e3fed6c36203e11a3de0",
      "parents": [
        "0dea9872082bc3e576ed6cefed86b0d6c0c45ffd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 23:45:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 11:28:10 2014 -0700"
      },
      "message": "Refactor reflective method invocation.\n\nMove invocation code out of JNI internal into reflection, including ArgArray\ncode. Make reflective invocation use the ArgArray to build arguments rather\nthan allocating a jvalue[] and unboxing arguments into that.\nMove reflection part of jni_internal_test into reflection_test.\nMake greater use of fast JNI.\n\nChange-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057\n"
    },
    {
      "commit": "39c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13",
      "tree": "fa777039b3f7c34f3dd322d04307766246526080",
      "parents": [
        "0918614b7434783477e8668df7850a7aaf8d5611"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 28 18:33:52 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Mar 07 13:42:48 2014 -0800"
      },
      "message": "Make use of profiling information for dex2oat\n\nIf the profile file exists, the compiler driver will read it\nand store the data in an internal map.  Then, when we want to work\nout whether to compile a method or not, the map is consulted and if\nthe method shows up with a high enough percentage of use we compile it.\n\nThe profile file itself is created by installd and is writeable by the\napp.  The file is in /data/dalvik-cache/profiles and is named by\nthe package name.\n\nThis also modifies the profiler itself to:\n\n1. Only count runnable threads (not suspended threads) in the profile\n2. Use system properties to allow tuning of the profile parameters\n3. Merge profiles from multiple processes using file locking.\n\nBug: 12877748\nChange-Id: Iab2f3a327a2860db2a80d5724277d6c626227f2b\n\nConflicts:\n\tcompiler/dex/frontend.cc\n\tcompiler/dex/mir_analysis.cc\n\tcompiler/dex/verification_results.cc\n\tcompiler/driver/compiler_driver.cc\n\tdex2oat/dex2oat.cc\n\truntime/class_linker.cc\n\truntime/runtime.cc\n\truntime/runtime.h\n"
    },
    {
      "commit": "a5f9de040a7a740b7b4979bc8d47f95eb05718ae",
      "tree": "a06560b27a6e2ec1e7c90b3b8f0f1f6344f09c81",
      "parents": [
        "c7a8981098646b4e255d9ede1f3798023bac6e84"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 28 16:48:42 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 15:38:06 2014 -0800"
      },
      "message": "Defer heap transitions to heap trimming daemon.\n\nThis fixes the case where quick back and forth process state changes\nwould cause a lot of heap transitions.\n\nChange-Id: Ia5be792edcf26079b2aa23b9c115f6b0a9a39a1c\n"
    },
    {
      "commit": "6dda898d47b3e8931e4404330e81b7110108e34f",
      "tree": "d8a0a20b8ac1ce3cd44273cf5c748d09980bd800",
      "parents": [
        "8785d615122d4abbd22db702139584e8c472f502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 11:11:48 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 11:43:06 2014 -0800"
      },
      "message": "Disable compaction for jni workarounds.\n\nCompaction can\u0027t work when jni workarounds is enabled. Also some\nother refactoring.\n\nChange-Id: Ia7b0f2b39c79f5a0a5f50874d823b950ab02a0c3\n"
    },
    {
      "commit": "893263b7d5bc2ca43a91ecb8071867f5134fc60a",
      "tree": "a99238843a9caad00122c8f7d13e031f5d81bc38",
      "parents": [
        "2fece5941f12395a94e742313e7059a9e419994d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 11:07:42 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 14:21:58 2014 -0800"
      },
      "message": "Avoid marking old class linker and intern table roots during pause.\n\nThe new root visiting logic has a concept of a root log which holds\nnew roots which were added since the start of the GC. This is an\noptimization since it lets us only mark these newly added roots\nduring the pause (or pre-cleaning) since the other roots intern table\nand class linker roots were marked concurrently at the start of the\nGC.\n\nBefore (EvaluateAndApplyChanges):\nMarkConcurrentRoots:\tSum: 605.193ms\nAfter:\nMarkConcurrentRoots:\tSum: 271.858ms\n\nThis should also reduce pathological GC pauses which used to be able\nto happen when the intern table or class linker became \"dirty\"\nduring the concurrent GC.\n\nChange-Id: I433fab021f2c339d50c35aaae7161a50a0901dec\n"
    },
    {
      "commit": "491ca9e75fad381468dd7f5fdbff56d1a9738dd7",
      "tree": "4a88d05188aebbcbe868a27b58fc1a932f914ce2",
      "parents": [
        "82e3a8ef9cd776d7026b45fe7fb6c72bcfd61394"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 02 18:24:38 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 13:31:40 2014 -0800"
      },
      "message": "Add ART -help and -showversion\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d62149\nChange-Id: I5c21c0433f5f341f94e7d977e8d2d69cc46d6fe3\n"
    },
    {
      "commit": "f9c612f2e657adb0764285256b228622e0789254",
      "tree": "c4a94053d07fc089703694ba1406a295333fecad",
      "parents": [
        "95c2e440582f31f77a047797a5e2be4af53a8bfa"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 27 10:58:17 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 17:13:09 2014 -0800"
      },
      "message": "Support in VMRuntime for allocating \"unpadded\" arrays.\n\nBug: 13028925.\n\nChange-Id: I0a53645f0468aaf44d38aabe016cb610fcfefaf7\n"
    },
    {
      "commit": "6fac447555dc94a935b78198479cce645c837b89",
      "tree": "bcf1449999084b1e1dec3dac287f6f3670d7eda0",
      "parents": [
        "7f0ff7e7fff82566bca5f9353eaa2c4f81f0671a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 25 17:01:10 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 26 16:38:22 2014 -0800"
      },
      "message": "Make allocations report usable size.\n\nWork-in-progress to allow arrays to fill usable size. Bug: 13028925.\nUse C++11\u0027s override keyword on GCC \u003e\u003d 2.7 to ensure that we override GC and\nallocator methods.\nMove initial mirror::Class set up into a Functor so that all allocated objects\nhave non-zero sizes. Use this property to assert that all objects are never\nlarger than their usable size.\nOther bits of GC related clean-up, missing initialization, missing use of\nconst, hot methods in .cc files, \"unimplemented\" functions that fail at\nruntime in header files, reducing header file includes, move valgrind\u0027s space\ninto its own files, reduce number of array allocation routines.\n\nChange-Id: Id5760041a2d7f94dcaf17ec760f6095ec75dadaa\n"
    },
    {
      "commit": "9837939678bb5dcba178e5fb00ed59b5d14c8d9b",
      "tree": "00f0e6b54d7c4cac78a02752e268724157e50b6e",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 16:53:16 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 18:47:23 2014 -0800"
      },
      "message": "Avoid std::string allocations for finding an array class.\n\nIntroduce ClassLinker::FindArrayClass which performs an array class lookup\ngiven the element/component class. This has a 16 element cache of recently\nlooked up arrays.\nPass the current thread to ClassLinker Find .. Class routines to avoid calls\nto Thread::Current().\nAvoid some uses of FindClass in the debugger where WellKnownClasses is a\nfaster and more compacting GC friendly alternative.\n\nChange-Id: I60e231820b349543a7edb3ceb9cf1ce92db3c843\n"
    },
    {
      "commit": "815873ecc312b1d231acce71e1a16f42cdaf09f2",
      "tree": "18ba2fa951775e60b240271bfe975e6e2cfc654c",
      "parents": [
        "2befd09cf4fe89a18a655f3e1dd310831bfa769f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 13 18:02:13 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 18 10:45:12 2014 -0800"
      },
      "message": "Change root visitor to use Object**.\n\nSimplifies code and improves the performance of root visiting since\nwe usually don\u0027t need to check to see if the object moved.\n\nChange-Id: Iba998f5a15ae1fa1b53ca5226dd2168a411196cf\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "0cb50e58bcdab321378df3b86f1e914d30992b5b",
      "tree": "560146dfd200432b3e0cb83827e40e08bb1b67a8",
      "parents": [
        "4c863edfe99dd63550ee462d77820a007ec40a7d",
        "5ddb4104ac605d66693b55b79f26f8b8a5505e63"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 08 17:19:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 08 17:19:03 2014 +0000"
      },
      "message": "Merge \"Remove intialized static storage from dex cache.\""
    },
    {
      "commit": "5ddb4104ac605d66693b55b79f26f8b8a5505e63",
      "tree": "9231f1e54e9a1aaca640c590d5b4f318720e263b",
      "parents": [
        "5a2ced515a456f15dcf194843c024e835eda7dbe"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 07 08:58:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 08 09:15:46 2014 -0800"
      },
      "message": "Remove intialized static storage from dex cache.\n\nThe initialized static storage array is used by compiled code to determine if\nfor a sget/sput class initialization is necessary. The compiled code typically\ndoesn\u0027t require this test as the class is pre-initialized or the class being\naccessed is the same as the current method.\n\nChange-Id: Icbc45e692b3d0ac61e559e69edb6c9b29439e571\n"
    },
    {
      "commit": "0aded089f565008ba5908e395e5914ca4f91f2de",
      "tree": "3b1238d956e0181d00243604c83c3a0be368437d",
      "parents": [
        "98ba6cebd22489c959d845884ee045dcbd958d41"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Nov 07 13:15:11 2013 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 07 10:58:07 2014 -0800"
      },
      "message": "Add sampling profiler\n\nThis adds a sampling profiler thread that runs every so often, gathering\nprofiling data and writing the results to a file in /data/data (specific to\napp running).  The intention is to use these files as input to the compiler\nso that it can determine the best methods to compile.\n\nBug: 11539952\nChange-Id: I0bfbb4146fb7966673c792f017ffac8107b6272d\n"
    },
    {
      "commit": "ca2a24da53869a04e1947aa46d06ccce5247d6f4",
      "tree": "724eccc02dec0f0ff3fc4e0b505511d691e795e6",
      "parents": [
        "5da3778746375b73e7e77c5f1371f29684674776"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 25 15:12:12 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 25 17:25:15 2013 -0800"
      },
      "message": "Add interface for updating process state.\n\nCalled from activity manager to let the heap know when it should\nperform compaction and trimming.\nBug: 8981901\n\nChange-Id: Ib8ea48d2dc9d6901c3f2e0554391721d6691e726\n"
    },
    {
      "commit": "cbb2d20bea2861f244da2e2318d8c088300a3710",
      "tree": "9735d496716cf165ea0ee2d7e2f62d723ffc7734",
      "parents": [
        "d31fb9718a6180304cd951619dc36be8e090a641"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 14 17:45:16 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 11:14:11 2013 -0800"
      },
      "message": "Refactor allocation entrypoints.\n\nAdds support for switching entrypoints during runtime. Enables\naddition of new allocators with out requiring significant copy\npaste. Slight speedup on ritzperf probably due to more inlining.\n\nTODO: Ensuring that the entire allocation path is inlined so\nthat the switch statement in the allocation code is optimized\nout.\n\nRosalloc measurements:\n4583\n4453\n4439\n4434\n4751\n\nAfter change:\n4184\n4287\n4131\n4335\n4097\n\nChange-Id: I1352a3cbcdf6dae93921582726324d91312df5c9\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "cf5077ac14f0922b6104a8a03fd66d97a490a3dd",
      "tree": "e5a4c42b87f06dcf5dd8bce1de992d3e2a2430fa",
      "parents": [
        "1b8cb967143d5c46db1db8ac940a73d111be3628"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 31 12:37:54 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 31 12:37:54 2013 -0700"
      },
      "message": "Remove unused length from DexFile GetString calls.\n\nAddress extra review comments from commit\ndfb325e0ddd746cd8f7c2e3723b3a573eb7cc111.\n\nChange-Id: If76e81e7af5870431901de0bf561e0f827435fe3\n"
    },
    {
      "commit": "dfb325e0ddd746cd8f7c2e3723b3a573eb7cc111",
      "tree": "0b63738b04404f42015da7164dfe5ec506452b02",
      "parents": [
        "eda6df7374bf61c933d4a36635e2a9a30c9892a0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 30 01:00:44 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 30 01:00:44 2013 -0700"
      },
      "message": "Don\u0027t use UTF16 length as length for MUTF8.\n\nBug 11367555.\n\nChange-Id: Ia0b07072a1a49d435c3b71ed9a668b316b7ff5d8\n"
    },
    {
      "commit": "e2179ebd18f9b3c7b0ad4c1ce1a2b76a5781064c",
      "tree": "06bbbb32153613666994a09474b1ef3d898c4f6a",
      "parents": [
        "dbf39a79d17f226936430b025ce1f0beeac2f441",
        "881392f55e566a7c6407e7d321a31836d2d8865f"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Fri Oct 25 13:09:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 25 13:09:49 2013 -0700"
      },
      "message": "am 881392f5: Adjust the name of setTargetSdkVersion native method.\n\n* commit \u0027881392f55e566a7c6407e7d321a31836d2d8865f\u0027:\n  Adjust the name of setTargetSdkVersion native method.\n"
    },
    {
      "commit": "881392f55e566a7c6407e7d321a31836d2d8865f",
      "tree": "35043d24b73a5af6d90706aae9cffd96243c5b7e",
      "parents": [
        "7510d4cc0111258b53ae74cf8292f31c6ca5f001"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Oct 24 16:31:56 2013 -0700"
      },
      "committer": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Oct 24 16:31:56 2013 -0700"
      },
      "message": "Adjust the name of setTargetSdkVersion native method.\n\nChange-Id: I60f1febc1f8ddf2a97925a48ddf232508d5c44f9\n"
    },
    {
      "commit": "57e6d8a99058e5c74d5244b68a5f4d53526fa108",
      "tree": "bca484bbb16e9222a30337fa1c094b5b985df23c",
      "parents": [
        "4e6274692288d3e04b91e1319b0b48fc9d5b6deb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 20 22:53:26 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 20 22:53:26 2013 -0700"
      },
      "message": "Tracking change to InternTable::VisitRoots\n\nChange-Id: I260e8f07ae4c4dde048a1ad4bb6208624af965e9\n"
    },
    {
      "commit": "4e6274692288d3e04b91e1319b0b48fc9d5b6deb",
      "tree": "ab356d25b69c9a87b9719a510770e2757174538e",
      "parents": [
        "77a41a69201579792397ba33bc93f5f5a77da981",
        "5d79c5deba3fa27825a2d5a399713b9490f5ca28"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 20 21:44:11 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 20 21:44:11 2013 -0700"
      },
      "message": "resolved conflicts for merge of 5d79c5de to dalvik-dev\n\nChange-Id: I0afb78246053c5adf4b5ed4a062c9e0cfda8d398\n"
    },
    {
      "commit": "e810452722ac83b294d1f7aa80bdd88e547d5af0",
      "tree": "6000d7851d7e60936a2ec6e7ef6ca935bc374832",
      "parents": [
        "67fe2b41a6afccf6ab1a58879eae3e0e8f3d6c7a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 15 21:56:36 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 20 21:38:53 2013 -0700"
      },
      "message": "Preload DexCaches\n\nBug: 11045348\nChange-Id: I6f9c0d11613b6b4933a04ae23dbf4bc7879cea65\n"
    },
    {
      "commit": "1eb512d33f94d1dd7ea38263307ba0f7a0dfa653",
      "tree": "b4d4d9b16013ab90fb4b40d23013d7ef44bb5852",
      "parents": [
        "b917ea1a62aa0ab8eca3f689ef64b5be34e11abb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 18 15:42:20 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 20 14:55:26 2013 -0700"
      },
      "message": "Fast JNI support.\n\nUse a modifier to signal a native method is a fast JNI method. If the\nmodifier is set then don\u0027t perform runnable transitions.\n\nChange-Id: I7835b4d837bfdd1cb8e2d54b919c0d5e6cf90499\n"
    },
    {
      "commit": "be031fff278799984166ec866c2dd202447e0f23",
      "tree": "48c60def3d4727cd5d8ba5a83b12ed27092bbb4b",
      "parents": [
        "34633b22f74393344987a50b8aaee548a9dadc18"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Oct 08 16:42:37 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 09 17:29:11 2013 -0700"
      },
      "message": "Remove four counter increments out of the allocation path.\n\n- This change removes the four allocation counters (the number of\nbytes allocated, the number of objects allocated, the number of bytes\nallocated ever, the number of objects allocated ever) from the\ndlmalloc space allocation path. Now those counter values are computed\non the fly based on a combination of the two new counters that are\nincremented by the GC side (the number of bytes freed ever and the\nnumber of objects freed ever) and mspace_inspect_all() calls.\n\n- This results in a 1-2% speedup (though with some noise) in Ritz\nMemAllocTest on Nexus 4.\n\nBug: 9986565\nChange-Id: Id9a8e05a745ac1e5ea7a2b5fd9319814a9d4af13\n"
    },
    {
      "commit": "a436fde2762664a3ecdda5eefcadd20b2e104f59",
      "tree": "22431bc387483220728a3bc99ec7314abce3ad60",
      "parents": [
        "10cc81056261625902a8a073bafb9f499eec4ff7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 27 23:34:06 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 27 23:37:33 2013 -0700"
      },
      "message": "Handle OOMEs in class linker with grace.\n\nCheck for OOMEs and then fail due to them in class loading.\nMake the compiler driver spot OOMEs during resolution and abort compilation to\navoid needless GC thrash then eventual death.\nAllocate the pre-allocated OOME during Runtime::Init as Runtime::Start isn\u0027t\ncalled in the context of the compiler/tools.\n\nChange-Id: Id72199d0fe82001b5bf22758b3cdc9cc4b8efbb9\n"
    },
    {
      "commit": "1a4d6d809b4c24580b4667e3075d545738d83ec7",
      "tree": "2b1ba966630ab935e85aa8519d3ed33b907ce107",
      "parents": [
        "e2f77e7592842cad5a59e73535b8982c35e156ca"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 20:07:05 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 20:07:05 2013 -0700"
      },
      "message": "If CheckJNI is enabled don\u0027t allow app workarounds\n\nChange-Id: I030231d2b1ebcabb5c3922ea91230b40998711ba\n"
    },
    {
      "commit": "cc386f94631dd1d60b0b0b2d4e1e243dda363f32",
      "tree": "dab43dbcd94c1a92d32f88a90cf900c8c4d90da9",
      "parents": [
        "36e58b8ab7f2cf8609ecebb09dd302db3f51f40c",
        "c39e342317d77e701b4cd01cd5b05902e6512f4b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 09 13:49:35 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 09 13:49:35 2013 -0700"
      },
      "message": "am c39e3423: Use JNI to access activity manager process state.\n\n* commit \u0027c39e342317d77e701b4cd01cd5b05902e6512f4b\u0027:\n  Use JNI to access activity manager process state.\n"
    },
    {
      "commit": "c39e342317d77e701b4cd01cd5b05902e6512f4b",
      "tree": "b43a85e1c60377505d56d0d91fe4da704f4458fc",
      "parents": [
        "f6a7406e9210449ddd23bff23ad208e1877b35b7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 07 16:41:36 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 09 11:03:47 2013 -0700"
      },
      "message": "Use JNI to access activity manager process state.\n\nAfter a GC occurs, we use JNI to access activity manager process\nstate to decide whether or not we will trim.\n\nChange-Id: Iad981e3a7cdc694729d8792cc0f19e0262154388\n"
    },
    {
      "commit": "3839f7a4d482049cfb8d5a0a9e955e7ede27e1d3",
      "tree": "423184963c9824ae908d5e7f516f59ded973a1ed",
      "parents": [
        "d8de72f54f6076218373af4abf76dd2a548f13e3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 07 23:26:58 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 07 23:26:58 2013 -0700"
      },
      "message": "Fix portable build.\n\nChange-Id: Icec79ae87b027e49e9d71404b127d61601bbb3d6\n"
    },
    {
      "commit": "848871b4d8481229c32e0d048a9856e5a9a17ef9",
      "tree": "4be4602e3becc899f76a29a87618801458fe04b9",
      "parents": [
        "423fb4d70f2ac36bf9f630146b4150771a8e7e76"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 05 10:56:33 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 07 22:17:00 2013 -0700"
      },
      "message": "Entry point clean up.\n\nCreate set of entry points needed for image methods to avoid fix-up at load time:\n - interpreter - bridge to interpreter, bridge to compiled code\n - jni - dlsym lookup\n - quick - resolution and bridge to interpreter\n - portable - resolution and bridge to interpreter\n\nFix JNI work around to use JNI work around argument rewriting code that\u0027d been\naccidentally disabled.\nRemove abstact method error stub, use interpreter bridge instead.\nConsolidate trampoline (previously stub) generation in generic helper.\nSimplify trampolines to jump directly into assembly code, keeps stack crawlable.\nDex: replace use of int with ThreadOffset for values that are thread offsets.\nTidy entry point routines between interpreter, jni, quick and portable.\n\nChange-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e\n"
    },
    {
      "commit": "bbf8a09601f5379293b498b7d181ffc2a1f93b6a",
      "tree": "88ffc1d3de2b367154c4413d0471e7d96ede73b7",
      "parents": [
        "1359a18a4b9b7c9442afcbb1bf7eec1398b85ae6",
        "3da08f4d2cef02bd0a3cc45ae3b7555fc547d29a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 19 09:55:14 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 19 09:55:14 2013 -0700"
      },
      "message": "resolved conflicts for merge of 3da08f4d to dalvik-dev\n\nChange-Id: Ia237450dac762602bb159904a1032e6fccb2d7fd\n"
    },
    {
      "commit": "82353313bbe00d033b6733535d0dcd6f56c36d8d",
      "tree": "7f154381b5288793aedaff313a0b2e7e800e8967",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 18 10:47:51 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 18 14:33:24 2013 -0700"
      },
      "message": "Add interface for updating the heap\u0027s process state\n\nIn the future, the heap\u0027s process state will be used\nto determine GC behavior.\n\nChange-Id: Iba4f038d28dbf483b6573d8feb25e4246ead1d50\n"
    },
    {
      "commit": "1db9113bcc12368e405583804ceb8aa7c80cc0cd",
      "tree": "b826b626f901b6012adecf697cb979d371aca78f",
      "parents": [
        "bba5dd55b7deda3a3271be502f1d3b0c30a759d6",
        "7940e44f4517de5e2634a7e07d58d0fb26160513"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 18:05:20 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 18:05:53 2013 -0700"
      },
      "message": "resolved conflicts for merge of 7940e44f to dalvik-dev\n\nChange-Id: I6529b2fc27dfaedd2cb87b3697d049ccabed36ee\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "bba5dd55b7deda3a3271be502f1d3b0c30a759d6",
      "tree": "74bf9e72fbd66def253f317b9d8b6d7b8d67b86b",
      "parents": [],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri Jul 12 22:57:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 12 22:57:56 2013 +0000"
      },
      "message": "Merge \"Semi-pruned SSA support for sea-ir.\" into dalvik-dev"
    },
    {
      "commit": "cef450c613d8324db7c418130596182b8e9a5cdd",
      "tree": "2355aca9a92bd8ff515c7b5f759f92220c396467",
      "parents": [
        "55163b8c34f40c9107cc3aa72e0d2f542f7a164e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jun 28 14:38:26 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Jun 30 13:17:06 2013 -0700"
      },
      "message": "add dalvik.system.VMRuntime.vmLibrary implementation for ART\n\nChange-Id: Ibc1a5abb5a0ee49cb20e55dc2e169a224fcf9d8b\n"
    },
    {
      "commit": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\n"
    },
    {
      "commit": "4f6ad8ab428038129b2d0d6c40b7fd625cca15e1",
      "tree": "d1025ed9203d0cdf7aa959d9cecd8dc1f0c0bfeb",
      "parents": [
        "aabe8adacc7bf3a8ab6f6f3dd37fc839b6fd762f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:27:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:29:59 2013 -0700"
      },
      "message": "Various performance improvements.\n\nPerformance had regressed due to verify object and method invocation changes.\nAvoid trampolines for static calls in same class.\nVarious inlining changes.\nMake verify object something that\u0027s only compiled-in in debug builds.\n\nChange-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5\n"
    },
    {
      "commit": "c928de90ad22ecdf83c18a07008409595f13d3b1",
      "tree": "065a08f379960f7ba946318aaa742d7ddd0c94bd",
      "parents": [
        "0f827169742aad6209d830db773a101849c32a83"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "message": "Remove Iceland.\n\nART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER\nis used in #ifdefs.\n\nChange-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    },
    {
      "commit": "4893188d8ff9744f5d37b344e5a0bd582242eded",
      "tree": "dc5ac7a136b6b084fefb246ce2a2fde71bd06ebc",
      "parents": [
        "28d76682d591034a5bcb610487c1f2db32d01c84"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 22 14:35:16 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 22 16:24:35 2013 -0800"
      },
      "message": "Avoid heap trims in foreground and audio apps.\n\nHeap trimming the dlmalloc spaces holds their locks causing jank.\nImprove diagnostic message to break apart managed and native heap trims and\ndetail amount of heap advised back to the kernel.\n\nChange-Id: Ic08cf4749342cbd057b162b901d1676bb7e6418b\n"
    },
    {
      "commit": "3056d0ca38acc3d829a13ec8f97d35a002ee354e",
      "tree": "395028dc5fbfaf00f52594fe2df34b57b88e65f4",
      "parents": [
        "ec139de9e77663c13a907a5244267db8bed947b5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 19 10:49:56 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 19 11:33:07 2012 -0700"
      },
      "message": "Improve accuracy of heap trim times\n\nBefore, WaitForConcurrentGc was being called inside of Heap::Trim.\nThis caused the printed trim times to be larger than they should be.\n\nChange-Id: Icc76b5ed7fb99350536d48a5215e7c1fdb8b4567\n"
    },
    {
      "commit": "1c23e1edb7361bbaec6e57fca86d8d3797960ad2",
      "tree": "af8aa791777271fc5105f19a70aa972768493856",
      "parents": [
        "ed6d5ed3494648780b9e91422c90d6bc22c16b79"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 14:14:11 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 17:34:08 2012 -0700"
      },
      "message": "More space refactoring.\n\nAdd common interface, AllocSpace.\n\nRenamed the old AllocSpace to DLMallocSpace.\n\nAdded an new option enforce_target_size_, which when enabled, doesn\u0027t let\nthe heap grow past ideal heap size calculated during last Gc.\n\nRemoved redundant AllocationSize calls.\n\nMoved large object space to its own file instead of being in space.h/cc.\n\nChange-Id: I15e60531114bf213800599737cbd66ef44b46b15\n"
    },
    {
      "commit": "7469ebf3888b8037421cb6834f37f946646265ec",
      "tree": "b1eb8cd8d1e3b6263c2de77616020de4b4b5019f",
      "parents": [
        "d8195f19840911a73b1491dfc8e7c18139753731"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 16:28:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 08 18:02:42 2012 -0700"
      },
      "message": "Refactor and remove copy mark bits.\n\nRefactor code GC realted code to be in a GC folder.\n\nRemove copy mark bits by using pointer changing instead.\n\nEnable concurrent sweeping of system weaks.\n\nFix non concurrent GC plan.\n\nChange-Id: I9c71478be27d21a75f8a4e6af6faabe896e5e263\n"
    },
    {
      "commit": "50b35e2fd1a68cd1240e4a9d9f363e11764957d1",
      "tree": "4f3c58b7b293380f19e4f33357cb352e3330772e",
      "parents": [
        "8e9a1497f0d7da4d55f6e7ed8a7d96ba6db7222d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 10:09:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 11:07:39 2012 -0700"
      },
      "message": "Explicitly pass Thread::Current to MutexLock and Alloc.\n\nChange-Id: I8b75bc0617915465f102815b32306aa7760dcae4\n"
    },
    {
      "commit": "2fde53367dbe721e5273c34b590e67112322cc9e",
      "tree": "c5e10aa7d9d41b29298a42a0b96807787e27c574",
      "parents": [
        "2e447e0e8725503d975c50fbbd13df4c769ca85e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 14 14:51:54 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 04 10:14:03 2012 -0700"
      },
      "message": "Refactor spaces and add free list large object space\n\nAdded some more abstraction for spaces, we now have ContinuousSpaces and DiscontinousSpaces.\n\nAdded a free list version of large object space.\n\nPerformance should be better than the memory map version since we avoid creating more than\none memory map.\n\nAdded a cause for Gc which prints with the Gc message, dalvik has this as well.\n\nChange-Id: Ie4aa6b204fbde7193e8305eb246158fae0444cc1\n"
    },
    {
      "commit": "81d425b0b232962441616f8b14f73620bffef5e5",
      "tree": "cd1e46656269acf20e78817d675e56d9b9133e6c",
      "parents": [
        "bfaf917edbb1de8d158c3615e0da8ac3143d10c8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 16:03:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 17:19:25 2012 -0700"
      },
      "message": "Pass self to lock methods.\n\nThis avoids frequent recomputation of\nThread::Current/pthread_getspecific.\n\nAlso add a futex based reader/writer mutex that is disabled.\n\nChange-Id: I118fdb99ef1d1c4bfda6446ba3a0d8b6ab31eaee\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": "fd678beb171a4686a4f2d53ca4188a4ade8fa54e",
      "tree": "ab932e92d683d8033241bb2248da98e76249d3eb",
      "parents": [
        "5bfa60ffcc953340feb711ed05cf576ac821905e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 30 14:50:54 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 04 14:58:14 2012 -0700"
      },
      "message": "Additional heap verification for the Gc\n\nThere are now two verification booleans which can be enabled. When these get enabled, it verifies that each live object only references other live objects.\n\nChanged SetClass to use SetFieldPtr to avoid having an extra card mark. This is safe since all classes are held live by the class linker.\n\nChange-Id: I005bb59e5cc8153a79d3ccb3d7b5cabd29fb4051\n"
    },
    {
      "commit": "15bf2d34efa2218e287b584fb3653d268b9edc8d",
      "tree": "4435664bd2c9a041d8c355940f2b5c95e03d38f7",
      "parents": [
        "e4f0b2ab4abd8e942a099e9b9b4682fbdd9eb21c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 28 17:33:04 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 30 17:22:52 2012 -0700"
      },
      "message": "Use bionic\u0027s dlmalloc 2.8.5.\n\nAlso fix free space computations for DDMS.\n\nChange-Id: Icbc045b5461af89a0516f37f01acaaa815205348\n"
    },
    {
      "commit": "b18e77abdb06a443744fbb6589e0932fa89f6073",
      "tree": "0e77099cfedbbb13a1fee3c1b93c34305b447d1c",
      "parents": [
        "22ad71521f3006b9bf344738c0276a501934fc01"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 21 14:20:03 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 21 14:20:21 2012 -0700"
      },
      "message": "Switch art over to the new bionic dlmalloc 2.8.5 callback\n\nChange-Id: I1314e87a51553fd358dbf9c44f804a7eb2de3a7d\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": "b062fdd4cb097fbae69b4bcb479c34d83ecab8ca",
      "tree": "215ea8fb42828a0f753ac5bd424ca098ce748342",
      "parents": [
        "ca314c6a1be1b4cc11f4d284da90af7dc8a4ce25"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 03 09:51:48 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 11 17:17:46 2012 -0700"
      },
      "message": "Each space has its own bitmap(s)\n\nEach alloc space now has One mark+live bitmap. Each image space has only one live bitmap.\n\nChange-Id: I2e919d1bd7d9f4d35d0e95ed83a58df6f754df6e\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": "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": "9eebd3b36f1f04c430623d6a2cffff05d80513ba",
      "tree": "487a51f0f4e78c385e240ce7722d46d4ca220be9",
      "parents": [
        "a9719eb4167b544438268d46692389761652fc5d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 08 13:56:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 08 14:10:51 2012 -0700"
      },
      "message": "Trim the native heap too, like dalvik did.\n\nChange-Id: I240f33937ffe7a3d3df2a66cf5b4ee5296bce16d\n"
    },
    {
      "commit": "eac766769e3114a078c188ea26776a81f0edb3cf",
      "tree": "4b9b8dfc89725173431817baba4455c013e40577",
      "parents": [
        "3f9ace8d90bfc48c8d7bf35af66de8ce8238de7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 21:56:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 25 12:04:43 2012 -0700"
      },
      "message": "DO NOT MERGE Fix all unsafe caching to be like libcore.\n\nThis way, if a runtime is restarted within a process, we re-initialize all\nthe cached data.\n\nConflicts:\n\n\tsrc/native/java_lang_Runtime.cc -- nativeExit lost an argument in dalvik-dev\n\n(cherry picked from commit 7756d5473fa27ce7e6ac7c31770eef7030431da4)\n\nChange-Id: I6184fc20c2a9ec16c4b053584a4d1c3b64452d0f\n"
    },
    {
      "commit": "fbe5b757cff040a455f93388d6eebdee0653a089",
      "tree": "1cc69bee1f70aa8adae7fb32add6c46f8a3a0ddb",
      "parents": [
        "da83d972b1aa90ada23b592bcea00603d1ee78b7"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Apr 19 00:26:00 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Apr 19 00:33:43 2012 -0700"
      },
      "message": "Fix LLVM build. Otherwise, function not used warning.\n\nNote that we use -Werror.\n\nChange-Id: I14c2d1d040d392cf5b2866298dc9c62a216f329b\n"
    },
    {
      "commit": "264675757a1d1ba43f53634d1301b7d6b79fe02c",
      "tree": "de8ebe45f28c4c287d3be5e8cca7fee2fe5c587a",
      "parents": [
        "69eafaae2c910ea6f704a3867f9b78647174a0df"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Tue Apr 17 20:51:22 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Apr 18 18:44:23 2012 -0700"
      },
      "message": "Don\u0027t use work_around_app_jni_bugs for llvm now.\n\nChange-Id: Id698e60c09dc863311445498d8813e38a48b8cc4\n"
    },
    {
      "commit": "0dae08ead9112adb81ad507b81187f00f77bc168",
      "tree": "5c09e5ab16fa544360e6354796f999cfeaf991e7",
      "parents": [
        "776ac1fa61237db645adb4370a4aab888530caf4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:55:11 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:55:11 2012 -0700"
      },
      "message": "Move JNI methods out of top-level.\n\nChange-Id: Ia9c883ba9a13b205cda7b72024e2939f02583acb\n"
    },
    {
      "commit": "34e069606d6f1698cd3c33b39e72b79ae27e1c7b",
      "tree": "0feb7e9bde6cfe01c0df3ef2d8de3210570f7ce2",
      "parents": [
        "e62934d85fbc2d935afdad57eeade39ecbd7440a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "message": "Remove the useless \"suspend count already zero\" message for new threads.\n\nWe can actually detect the expected case of this warning ourselves, and\nnot emit it. Then we can upgrade the WARNING to a FATAL.\n\nI also tripped over the fact that the operator\u003c\u003c for Thread::State was out\nof date, so I\u0027ve moved the Thread enums up to namespace scope so the script\ncan automatically generate correct operator\u003c\u003c implementations for us. (All\nthe high-numbered thread states have been off by one for a couple of weeks.)\n\nChange-Id: I5de573d33d641e5a3cba87b370e9620c8c66e633\n"
    },
    {
      "commit": "c0f0933249cf516b37717faa766e1e9808f7c1f8",
      "tree": "04aedbf3e8502637673b82cf181dfab1b5aca1a6",
      "parents": [
        "942df41c03ddb9f7b47a34fcfc4414d8b8ca8ce1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 13:27:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 13:27:06 2012 -0700"
      },
      "message": "Add the missing link between compiled code and the debugger.\n\nWhen a debugger connects and disconnects, we now let compiled code know that we\nneed to be kept informed about what\u0027s going on.\n\nAlso fix a threading bug when threads exit with a debugger attached.\n\nAlso some minor tidying, mostly involving naming.\n\nChange-Id: Iba0e8b9d192ac76ba1cd29a8b1e6d94f6f20dea8\n"
    },
    {
      "commit": "1bac54ffa933fbe9b92b62437577f2f4583eff1a",
      "tree": "a27134343ed3cd45a286c3a68b9a4469e70f13e7",
      "parents": [
        "96970cdab3e28511322ce37fa578f6eff8931d72"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "message": "Fix all our unused parameter warnings so we let GCC report them.\n\nThere were a couple of genuine bugs here (fixed), plus there\u0027s a missing\nfeature in trace.cc that I\u0027ve just added a TODO for.\n\nAlso note that I haven\u0027t touched the compilers; this warning is still\nexplicitly disabled for that code. I\u0027ll do that when there\u0027s less going\non in those directories.\n\nChange-Id: Ic3570bf82411a07c7530bfaf1995ac995b9fc00f\n"
    },
    {
      "commit": "0512f02dd6623c0870c11fbf3274d7462f732136",
      "tree": "c90b32c42b285d3cea45272601b5cf007b4ea264",
      "parents": [
        "88c5c355fc3d881f905564911d746b2313d5fc89"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 22:10:52 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 22:10:52 2012 -0700"
      },
      "message": "Remove anonymous namespaces.\n\nNo one likes them and we\u0027re pretty inconsistent at using them. We\u0027re\nmuch better with \u0027static\u0027.\n\nChange-Id: I65eeffd0fb60633edca30923af0caedb06a0105d\n"
    },
    {
      "commit": "88c5c355fc3d881f905564911d746b2313d5fc89",
      "tree": "d5b11b85131064cb6200465e674060933f48ebd7",
      "parents": [
        "141b0c75986949da0adbf9c07ad92bc675f1bfed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 18:49:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 21:14:57 2012 -0700"
      },
      "message": "Make CheckJNI and JNI workarounds mutually exclusive...\n\n...in the opposite direction; needing workarounds turns off CheckJNI.\nThis isn\u0027t necessarily a good idea, but I like the cleanup parts of\nthis change.\n\nChange-Id: I708235ea3e5cc35ef90b01dd810e097e3ff9dd26\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": "a15e67d5ee5aa9615596cee2be42c2b2caf128c6",
      "tree": "cd126ce1e809688011385d521abf19c9c302d1b1",
      "parents": [
        "9b5ee8837b4864b6ac114e9fead17bdeb04c6d55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 13:51:55 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 15:21:27 2012 -0800"
      },
      "message": "Remove pad word from arrays\n\nThis change removes the 4 byte pad from all arrays except longs and\ndoubles. It saves 76kb from the boot image, and will also reduce the\nsize of arrays in the heap (and thereby reduce garbage collection).\n\nChange-Id: I3ff277d5bf14c57c0f7552215818e588ec6cc275\n"
    },
    {
      "commit": "475a6442b2b96d3b881aa0dcab9bccb64add5569",
      "tree": "2c570edf8219fb3109f5bafb38c1b7d58d73fa47",
      "parents": [
        "467c9699c3de467f76f03494a9389ebba285cb6c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 21 15:39:39 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 21 15:39:39 2012 -0800"
      },
      "message": "Don\u0027t enable JNI work arounds with check JNI\n\nChange-Id: I310b363126a4436163208ff618a6285061133a17\n"
    },
    {
      "commit": "60db5ab3a2e480db9236325a14cb5a867881d8bb",
      "tree": "c4a514941c2d41b82581d2c3d83ecb742e575231",
      "parents": [
        "6a91799974e992e915facb9d9372dc8847a09a64"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 20 17:02:00 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 20 18:15:35 2012 -0800"
      },
      "message": "SIRT work around JNI support for legacy apps\n\nLegacy apps may be broken and expect a jobject to equal an Object*. This\nis a work around to support outgoing SIRT arguments being converted to\nbe Object*s. It steals the unused GC map pointer on native methods.\n\nChange-Id: I8fb3701b0cdf15be9e8f9b722e47386505482666\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": "0d0ba69e764c54b21c463239136bfd5038d389a9",
      "tree": "194fdb5b604f9eea2fef537deec71b8e5759d25d",
      "parents": [
        "8323972b16642b8a3accf6fcbb6677b65a7a20fb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 17:28:52 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 17:28:52 2012 -0800"
      },
      "message": "A couple of logging changes people have asked for.\n\nHow many threads dex2oat uses, and more detail about heap trimming.\n\nChange-Id: Id60dbedf2480c639dc8c38b4a59eb0b15eb3b912\n"
    },
    {
      "commit": "37be8fb2f370449ccdf07e28866cedad53b41b0d",
      "tree": "b6026d1750ad54e232acb1512835be0bbd10ae85",
      "parents": [
        "f2e08b29d3e49f491cd1c29c226154e92380c179"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 09:34:29 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 09:34:29 2012 -0800"
      },
      "message": "We only need the heap lock when trimming.\n\nChange-Id: I217fb11738dbb6cd3a5b045e006042b79f45a596\n"
    },
    {
      "commit": "8cf5bc0ab8742df107f0f4fc8ec0e991b6568f11",
      "tree": "2c21156aa0314dfa4f5b0cea9489e3aa16ebe743",
      "parents": [
        "c27273f0508fb56ba35bead311151fbe45724d35"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 16:32:16 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 17:07:51 2012 -0800"
      },
      "message": "Simple heap trimming.\n\nChange-Id: I8a94b637e64c6b5586db3c41b6e9230e7c8250c8\n"
    },
    {
      "commit": "7d5ffb5ef4702e7a032db8a75783f1bac2ce04c9",
      "tree": "083507bf64a59741209f6f0dfdcb27a2fbef32c0",
      "parents": [
        "ed846c33412368bd8fea18f7353c4f4d3ceb0b26"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 01 14:27:54 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 01 15:23:08 2012 -0800"
      },
      "message": "Remove dex2oat warnings by providing \".\" class path defaulting only to JNI callers\n\nChange-Id: Ibc532b4a6e72ad92d7b537896447949a2a764166\n"
    },
    {
      "commit": "49b4f07b3b8b15ba8f87356d10ad533d34c40dd1",
      "tree": "e871a47a7d72b448c7ce8e9784f0758afcb4a021",
      "parents": [
        "5fedcf46538aeb036a1f68e022463703c372d825"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 18 14:23:48 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 18 14:23:48 2012 -0800"
      },
      "message": "Disable work_around_app_jni_bugs\n\nChange-Id: Ib214611e44fdb632eb961bfde0b4da530fd97195\n"
    },
    {
      "commit": "c2dc62d1c9241dfe880a81698713c314b13aa63f",
      "tree": "b84921ea9b805afe24592e37a2e6163013d70e6a",
      "parents": [
        "b4807ec95e8ba663b47c13da3e065874b1b586e6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 17 20:06:12 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 17 20:32:22 2012 -0800"
      },
      "message": "Wire up work_around_app_jni_bugs.\n\nThis removes the cached value from struct JNIEnv. YAGNI.\n\nChange-Id: Iad1a9182e86d7bf533af14000b99bb0340d6af9b\n"
    },
    {
      "commit": "c3b77c7c2971124cbf3b2d9da64e7a8a9a649f2e",
      "tree": "b8f2b70fb281d2d8b617491755bcdb7f798af837",
      "parents": [
        "90040194a1b5c441dde5c8a8b6d637c23972e0f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 15 20:56:48 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 16 14:17:50 2011 -0800"
      },
      "message": "Avoid copying and strlen(3) in the FindClass path.\n\nChange-Id: I789f3c883596d1852a2c1954ce7a207e6f937117\n"
    },
    {
      "commit": "6d4d9fcb4f01e287ee29e81cd1c941ee5d11d379",
      "tree": "4c715bef86a3c5a47f9cea43c4a092cf4766ed4b",
      "parents": [
        "86b0010c79ef95b5333cd540b7d3af34a9f1a643"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 30 16:24:48 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 06 14:02:09 2011 -0800"
      },
      "message": "Reduce meta-data object sizes, introduce meta-data helper classes.\n\nChange-Id: Id14ad218f1c74c659701352fdf1a45bf6444daa3\n"
    },
    {
      "commit": "b82b6878fb000d4731063b1bf15c39ff7c50b61f",
      "tree": "8764bcc9307fb2f57820b25b1d098e15166a24bc",
      "parents": [
        "bfe487be25652c5456236661b9d9c3579d2296c1"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 26 17:18:07 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 26 21:43:27 2011 -0700"
      },
      "message": "Make sure threads allocating are in the kRunnable state\n\nChange-Id: I55a08fcd38b3388698ef571d2d4fa9553210e197\n"
    },
    {
      "commit": "f6a1e1e44b94221c4e6b063b36921c712a33910b",
      "tree": "868c28cb66e1a1d34dd4060592e48e1a598342ed",
      "parents": [
        "94e60fb48459f3173c8abd6afcee85df68ab1b55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 16:28:04 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 16:28:04 2011 -0700"
      },
      "message": "Implement more DDMS support.\n\nYou can now launch DDMS without killing running oatexec processes...\n\nChange-Id: I13e1d6df4f0cbd0c06b69471823a13e4e820b93b\n"
    },
    {
      "commit": "6a4be3a6226cec645cf905dd352e44f7968a7fa4",
      "tree": "15c98c404db44f60850a94d9b3cff29ff16e1cd5",
      "parents": [
        "fb8a127fd2ca8eb6cbbc9d62b708c1fc2b3003a4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 20 16:34:03 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 20 17:01:32 2011 -0700"
      },
      "message": "Fix calling conventions for UnresolvedDirectMethodTrampolineFromCode\n\nChange-Id: I1b35c33d89f0526c80bc8d21e064617d0eac6cd1\n"
    },
    {
      "commit": "5cb5ad27944efb08d4556b3c0d362302e37e832b",
      "tree": "63334f19072ca2ba7179973f0ce62101ee89605d",
      "parents": [
        "d6fe38d96b6116bd53cf2cb14734af8d69e08661"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 12:13:39 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 12:13:39 2011 -0700"
      },
      "message": "Fix exception throwing to support no detail message.\n\n(The empty string as a detail message is distinct from a NULL detail message,\nand is treated differently by Throwable.printStackTrace.)\n\nChange-Id: I8c65deac9f18c5782dcf6e72e4c37e6dd4174fe9\n"
    },
    {
      "commit": "01158d7a57c8321370667a6045220237d16e0da8",
      "tree": "f62e0bef39f7f04c969327f6a8540d7cff6e373d",
      "parents": [
        "6699709cf27b706b5221527d9815dd9365911710"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 19 19:47:10 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 11:48:27 2011 -0700"
      },
      "message": "Implement most of VMStack and some of Zygote.\n\nChange-Id: I07e18259a0452a2a9b077148f4f1ca67d3f63427\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"
    }
  ]
}
