)]}'
{
  "log": [
    {
      "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": "c56057e40938c587a74984651a510e320a8cb4fd",
      "tree": "6595bb7aa27ecf91dc9121d25722b40dec803ee6",
      "parents": [
        "0b8027003514c4fa6a850e5087076e991daaf4c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 04 13:18:58 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 05 15:46:09 2014 -0700"
      },
      "message": "Add lockless SynchronizedGet for indirect reference table.\n\nUsed for decoding global references without holding locks.\n\nResults on JniCallback:\nBefore: 615ms (3 samples).\nAfter: 585ms (3 samples).\n\nChange-Id: Ifcac8d0359cf658d87f695c6eb869d148af002e5\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": "5647d189c3ea5324e569d96cef67c87879d6cd05",
      "tree": "bdf872592ef681147d9b28af2c38b11f603fe910",
      "parents": [
        "aa00fe010eb7b61c2de82611ce3f6fc0918a4f9e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 15:00:39 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 15:28:43 2014 -0800"
      },
      "message": "Fix tests to pass with VerifyObject.\n\nA SIRT ref with a null class was causing object verification problems\nin space_test.\n\nChange-Id: I95cfc3da5e0fec0155387f75612b0a3f26f6d3c9\n"
    },
    {
      "commit": "c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b",
      "tree": "de6141864c1c011216c19dd99a2c1e2bc442dd6d",
      "parents": [
        "a9d7be62735e3356cef7e8ed797c519134a17061"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 18:11:53 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 12:09:04 2014 -0800"
      },
      "message": "Add more VerifyObject calls.\n\nAdded verify object calls to SirtRef, IndirectReferenceTable,\nReferenceTable.\n\nRemoved un-needed verify object in ScopedObjectAccess / DecodeJObject\nsince object sources are handled.\n\nBug: 12934910\nChange-Id: I55a46a8ea61fed2a77526eda27fd2cce97a9b125\n"
    },
    {
      "commit": "719d1a33f6569864f529e5a3fff59e7bca97aad0",
      "tree": "fcd84efd7b9806b93ec1a44e2317e6f882e7fe0e",
      "parents": [
        "5365eea9940269b662cfbe103caa348816ff1558"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 12:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 19:16:01 2014 -0800"
      },
      "message": "Enable annotalysis on clang ART builds.\n\nFix clang build errors aswell as restructure locking/mutex code for correct\nthread safety analysis support.\nReorder make dependencies so that host builds build first as they should\nprovide better compilation errors than target.\nRemove host\u0027s use of -fno-omit-frame-pointer as it has no value with correct\nuse of CFI, which we should have.\n\nChange-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90\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": "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": "cd2cfff09c916c9e72a7cfeb0686b441847dc62e",
      "tree": "8a5f6d4ecbe0df81178c0e560cd9426bd104e91e",
      "parents": [
        "0a9c5fdc671616dbe5c2b2b2f88fa0ad7c65876c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 19 15:46:55 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 19 15:59:35 2013 -0800"
      },
      "message": "Change IndirectReferenceTable::Add null DCHECK to CHECK.\n\nChange-Id: I7d3582bd5ef75c7fef6a94c0e4f1fea38fc8b526\n"
    },
    {
      "commit": "423d2a3dcbb260b020efb5da59f784c9f02accbf",
      "tree": "79ed739e6072f8308c1cd880f9420a1c63539c95",
      "parents": [
        "b048dd2b662c19644361f4396a1e8d6213445ee8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 12 17:33:56 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 10:30:24 2013 -0700"
      },
      "message": "Add support for changing roots through the root visitor callback.\n\nNeeded for copying collectors.\n\nChange-Id: Icc4a342a57e0cfb79587edb02ef8c85e08808877\n"
    },
    {
      "commit": "02e25119b15a6f619f17db99f5d05124a5807ff3",
      "tree": "7be4cbbf28033e5ee0621565b410fe5d8170a8fb",
      "parents": [
        "7d70a7932f0ba09eb01a93caab060aef1403d4e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 14 16:14:24 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 16 13:15:37 2013 -0700"
      },
      "message": "Fix up TODO: c++0x, update cpplint.\n\nNeeded to update cpplint to handle const auto.\n\nFixed a few cpplint errors that were being missed before.\n\nReplaced most of the TODO c++0x with ranged based loops. Loops which\ndo not have a descriptive container name have a concrete type instead\nof auto.\n\nChange-Id: Id7cc0f27030f56057c544e94277300b3f298c9c5\n"
    },
    {
      "commit": "9dcd45c60c691524bd8ef7d6f65075d9ee3e5554",
      "tree": "d27237f65c162318aed87da438431607f0a15ba6",
      "parents": [
        "46a1270fad27d81904ed60d0df56761356af500d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 29 14:40:52 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 29 14:40:52 2013 -0700"
      },
      "message": "Fix NewLocalRef to use AddLocalReference.\n\nBug: 10026664\nChange-Id: I06f8f75a92f73b3b58fa767c0d08d1b736f7d5b5\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\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": "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": "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": "63818dc8b06af4a1e65c41b453f1a42166c22728",
      "tree": "8d99894096a612c072b3bce521ae5ac24ffbbf7a",
      "parents": [
        "2e9f7ed8d00271cb1cf082d68b4f4bc60702d6ec"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 26 12:23:04 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 26 12:23:04 2012 -0700"
      },
      "message": "Fix segv in indirect reference table dump.\n\nReferenceTable::Dump is common code but can\u0027t handle NULLs. Process\nIndirectReferenceTable\u0027s use so that it doesn\u0027t pass NULLs for removed\nslots.\nImprove unit tests.\n\nChange-Id: Ia41375f8f2ecc907ceda8c39d146ce6ef607fb08\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": "0399dde18753aa9bd2bd0d7cf60beef154d164a4",
      "tree": "ea88327c01ca321074aaa59b97e4c54348802937",
      "parents": [
        "de5705dcf4ab5f92d48e144bcd7b59f7bcd18e16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 17:09:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 21 22:11:24 2012 -0700"
      },
      "message": "Remove Frame, merge shadow and quick representations.\n\nChange-Id: I5ae03a5e52111792d2df7e83cbd89ab25777844b\n"
    },
    {
      "commit": "73e66f73f5093b64f2b023ebbb85916a13d5c937",
      "tree": "fca2dcdf446aec9aad2a3096098c038279279e53",
      "parents": [
        "145d491d1a30b291eb3ea608507a04451237f327"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 09:34:45 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 09:34:45 2012 -0700"
      },
      "message": "Tidy up and finish reference table dumping.\n\nChange-Id: I9f0d214e27a75d373e3144b738f1e3da51bbc0ca\n"
    },
    {
      "commit": "0e57ccbbc2de9eeaeecd699575aab22a3f555619",
      "tree": "3137981abc7f07f3cdcc87bfbf5fbd73fa0c966a",
      "parents": [
        "0879504b6ac72f6d93dcccf9e1b7e1769a73b230"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 16:04:52 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 11:18:48 2012 -0700"
      },
      "message": "Start automatically generating operator\u003c\u003cs for enums.\n\nChange-Id: I0f53db089b9a1ba38ce82b75ab22448877be67e0\n"
    },
    {
      "commit": "28f1a147d77ec772db98bed890b50a9ddcff2365",
      "tree": "bebca04cea429109260854778da197ae594450d7",
      "parents": [
        "1cb0ae742072b5ea2c7f677e6ad220ba01255dae"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Thu Mar 15 21:51:52 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 20:53:38 2012 -0700"
      },
      "message": "Implement LLVM version of jni_compiler to pass 17 jni_compiler tests.\n\nBecause we now have both shadow_frame and sirt (which is just for SirtRef\u003c\u003e\nin the LLVM version), we define a new function NumStackReferences() as follows:\n  NumStackReferences() \u003d NumSirtReferences() + NumShadowFrameReferences().\n\n(cherry picked from commit 18fe89a14d212da9ec6841f4d19d08482a9610b7)\n\nChange-Id: Idd95ee4276801b1555be87934cd9c4f33ab8a88a\n"
    },
    {
      "commit": "3294429c8b80933d391e2440ec8f74f2c66fb070",
      "tree": "6bbd93a62455c2314c29838ab2c40b77074c7bf8",
      "parents": [
        "398f64b5805246765b699839b439e18c0dfbf2ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:26:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:26:15 2012 -0700"
      },
      "message": "Initialize the JNI indirect reference table to make Valgrind happy.\n\nThis eliminates the benign warning about the \u0027serial\u0027 field being\nuninitialized.\n\nBug: 5542417\nChange-Id: Ibce1df7fd1e340306982a8ec08d3cc38d6ab32a1\n"
    },
    {
      "commit": "467c9699c3de467f76f03494a9389ebba285cb6c",
      "tree": "6feed1eee61f319960c71350c32a360bd3f6ff7e",
      "parents": [
        "8dfcbea64ef8c9279329119e42a626771669044d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 21 11:05:16 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 21 11:05:16 2012 -0800"
      },
      "message": "Fix JNI work around for IRT removal\n\nIf we are in work around mode AND we have an invalid reference, try to\ncompute its index. Previous code would unconditionally try to look up\nindexes for all references even if they weren\u0027t invalid.\n\nChange-Id: I606689961f9aee6e5eba0ac8e15a1b8b2fc505b7\n"
    },
    {
      "commit": "ba8eee10607a524f43b55a6f33c13924fb16d435",
      "tree": "45f3c3728bcaee9ff04baeaf1706693e677757bf",
      "parents": [
        "844f9a072454eb9dca1022299b6bf99ef4294008"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "message": "Remove more lint.\n\nChange-Id: I48714db4169d9ea0536342809361210910ee2091\n"
    },
    {
      "commit": "d07986fad0d08cdf05505cf9230714a2cf0dd9ae",
      "tree": "731b6abf2c2e0a5e51453a80029e1a9073b12354",
      "parents": [
        "7fe2c691866ad643b9e21dd2c9d36fa79ec454c3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 06 18:27:45 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 09:16:24 2011 -0800"
      },
      "message": "Implement JDWP InvokeMethod and breakpoints on exception throwing.\n\nChange-Id: I1142bee843104f0850fd7270752104d5d73a44f0\n"
    },
    {
      "commit": "2ced6a534157d5d963693346904389c19775d2da",
      "tree": "469f865b0cca1c8388aad9b656258a7eef645c8c",
      "parents": [
        "7f14116b1daeb2d6c80ed93716f734d34865eae1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 16 18:44:48 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 10:52:26 2011 -0700"
      },
      "message": "Implement EnsureCapacity, PushLocalFrame, and PopLocalFrame.\n\nThese are as good as the old implementations, except that unbalanced usages\nwon\u0027t be cleaned up completely (you\u0027ll slowly grow the vector in your JNIEnv).\n\nThis patch also renames IndirectReferenceTable::Contains to the less misleading\nContainsDirectPointer, and fixes JNI::GetObjectRefType to not claim that\ninvalid local references are locals indefinitely.\n\nWe also now include detail messages in OOMEs where possible. (Test 061 still\npasses.) We still log regardless, since OOME should be a rare thing.\n\nChange-Id: I77b2f44ea066e92c517e5c96700ec533727b9c78\n"
    },
    {
      "commit": "06b37d91bb3d543002b1aee9829691f5e8bebc7e",
      "tree": "15d08cf8993856596ca8567507a8e87d4569bd32",
      "parents": [
        "3b6baaa203fa63f1522b2172a1645f90412afdae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 16 11:51:29 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 16 11:51:29 2011 -0700"
      },
      "message": "Always log the value when an alignment check fails.\n\nAnd move checking that the alignment is a power of two to compile-time.\n\nChange-Id: I551f364af05912958ed2d4d095b1ce35b6abaf6e\n"
    },
    {
      "commit": "726079d3e2e50854cd6ca4c393f4529a796dba58",
      "tree": "717baafeaeadead98668b9ae6e0323cbb6347a25",
      "parents": [
        "fe2e17f424584ad6969c6fcf7cf6364c69355d53"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 07 18:43:44 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 10 11:02:18 2011 -0700"
      },
      "message": "Finish the OutOfMemoryError implementation.\n\nThis copes with the double-OOME case.\n\nAlso check that I don\u0027t leave local references in a newly-attached thread\u0027s\nlocal reference table, and fix the leaks this discovered.\n\nAlso fix the code that implements fillInNativeStackTrace to cope with the\nsituation where we\u0027re not able to allocate (because we\u0027re throwing\nOutOfMemoryError and there\u0027s not enough space left for our arrays).\n\nAlso fix the order of checking for a pending exception and popping the\nlocal references in the JNI native method invocation stub. (This fixes\nthe warnings we\u0027d been seeing from the IndirectReferenceTable in test 064.)\n\nAlso improve some -Xcheck:jni output.\n\nThis fixes test 061.\n\nChange-Id: Icc04a2c06339bd28d6772190350a86abfc5734b8\n"
    },
    {
      "commit": "5a7a74a042e73a355f5cedffa0d2faf5340028fa",
      "tree": "7d28fe4828156e6bea2517c969099654488f116c",
      "parents": [
        "3116e85cec7373eb83f7e35e17c1de992a3ac671"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 26 16:32:29 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 27 10:24:38 2011 -0700"
      },
      "message": "Support for JNI local reference cookie.\n\nThis also fixes a cross compilation bug in reseting the top of the\nindirect reference table following a down call.\n\nChange-Id: I40d913a6f86dadfe87b58d6d13a1ff3613f270ac\n"
    },
    {
      "commit": "395520eaa47eca25b92e86188accf3095d60af49",
      "tree": "23cff36a71ea43eeb6a4bb7a7544c45aa3534c85",
      "parents": [
        "14357e842b611279d467b64d450c569af33a6936"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 25 19:35:00 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 26 10:56:37 2011 -0700"
      },
      "message": "Assorted fixes for running frameworks apps\n\n- Adding Heap::target_utililization_\n- Convert ClassNotFoundError to ClassNotFoundException in Class.forName\n- Finish String::GetHashCode\n- Changed Runtime.gc to unimplemented\n- Disable preload simulation in oat_process\n- Empty native placeholder for org.apache.harmony.dalvik.ddmc.DdmServer\n- Bonus: Fix problem with reflective invocation of constructors and private methods\n\nChange-Id: If11b273e2f82e8e0fa7161a756098514e1156a19\n"
    },
    {
      "commit": "dc51b79e65abcdad094ccd5e5a2caf5153433d49",
      "tree": "0a1b40cf58c98180407939bcc2431b33a52b9e20",
      "parents": [
        "d8b877a20c87e3c7ebef4a3ddd1d8896b2a5b822"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 20:41:37 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 00:08:33 2011 -0700"
      },
      "message": "Save/restore local table state on down calls.\n\nAlso add unit test.\n\nChange-Id: Ia1dc54eaac20c4bbb1ca3d9ac2933d6ab0241261\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": "c5bfa8f49d8548d7c685a99b411311ef56bedffa",
      "tree": "3f58bb3dce3bcaa03a6d3da27d0a2f85d1da1b0b",
      "parents": [
        "90a3369d3b6238f1a4c9b19ca68978dab1c39bc4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 14:32:49 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 14:42:22 2011 -0700"
      },
      "message": "Add back the work-arounds for broken apps that assume JNI uses direct references.\n\nNote that we\u0027ll need to add support for this to jni_compiler too.\n\nChange-Id: I7e31ab4314ba913cde4629544addd0aad9a89b3b\n"
    },
    {
      "commit": "a2501990dd0f68baf38ce19251949d7bb3ecfe5a",
      "tree": "3f72ceee0297d213dac66a9ce2c72592906c1803",
      "parents": [
        "82870720a9a2709fcde4a03d96be383cee4b25d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 19:39:54 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 29 22:06:55 2011 -0700"
      },
      "message": "Add -Xcheck:jni.\n\nI think this is as complete as possible right now. The remaining\ntwo #if 0 sections require:\n\n1. a way to get the Method* of the current native method.\n2. a way to get the Class* of the type of a given Field*.\n\nChange-Id: I331586022095fb36ccc10c9ac1890a59a9224d01\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": "408f79aeb676251ba35667a64e86c20638d7cb0b",
      "tree": "419c9dca6bc1fd5c13a997d4fad62f92960e5e45",
      "parents": [
        "72025e5f8f2743b4af33453df5b3bddada2078db"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 23 18:22:33 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 23 18:56:54 2011 -0700"
      },
      "message": "Add validate object, clean up stack indirect reference table.\n\nChange-Id: Ifb329ae7d3bede3e95d48e6761cee1412a33d867\n"
    },
    {
      "commit": "cdd1d2d3fee0711b8b11db99f2dfb80113520100",
      "tree": "3c88f60d82232e887a6a38e8b92066cd4802260a",
      "parents": [
        "bfaadc83460726b049614a8616effbb03a247552"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 18 09:58:17 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 19 10:35:57 2011 -0700"
      },
      "message": "Move JNI compiler tests to use pure JNI.\n\nImplement JNI upcalls for x86.\nFix off by 1 bug in JNI calling convention for x86.\nFix bugs in ARM JNI upcalls.\nStraw man JNI invoke nonvirtual implementations.\nMatch va_start with va_end in JNI internals.\n\nChange-Id: I64d62eca41ac726ae0d007c1f41d2193db5be82e\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": "6c1a394b47c85c8d1723fc3b156a3b1b0b29a757",
      "tree": "122185299351264d8e86db2399bbf8aef2a09e97",
      "parents": [
        "0db8cf440970b36d9511f20984150c06e504ab19"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 17 15:00:06 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 17 15:20:34 2011 -0700"
      },
      "message": "Add IndirectReferenceTable and initialize all the instances.\n\nWe\u0027re not _using_ any of the tables yet (except in tests), but all the\nreference tables are now in place.\n\nChange-Id: Ifd3fc114254460b4a1302520f2a4653319b113e5\n"
    }
  ]
}
