)]}'
{
  "log": [
    {
      "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": "3b074e60b2b906e9da5257d09de62b14867cb48e",
      "tree": "1ef980779ea131d817938badfc65febabd02c2c4",
      "parents": [
        "a6468f681b6e5feff940d0c32363847e795e97c6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 19 16:51:57 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 19 16:51:57 2013 -0700"
      },
      "message": "readdir is safer than readdir_r.\n\nThe upstream cpplint.py already made this change.\n\nChange-Id: I9614d51080557eab6730cffd476e01e7872729d0\n"
    },
    {
      "commit": "1895ea386ca78573302483f589ebabd8ce1480e7",
      "tree": "d8c2d27ac746f29c8248fe17fd6b8e9872556fc4",
      "parents": [
        "3e3d591f781b771de89f3b989830da2b6ac6fac8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 13:28:37 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 14:38:27 2013 -0700"
      },
      "message": "Fix cpplint readability/fn_size issues\n\nChange-Id: I1efdb07a948a2af49db1a9d21ccab16dacc03a54\n"
    },
    {
      "commit": "df62950e7a32031b82360c407d46a37b94188fbb",
      "tree": "038bf95a2ce296ae3e0c30a131ac22c0986f0f52",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 22:39:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:13:18 2013 -0700"
      },
      "message": "Fix cpplint whitespace/parens issues\n\nChange-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9\n"
    },
    {
      "commit": "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d",
      "tree": "5fc7f5b941724a62f8e3411df09fae431ff5e3cf",
      "parents": [
        "56d947fbc9bc2992e2f93112fafb73e50d2aaa7a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 14:40:12 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 16:49:05 2013 -0700"
      },
      "message": "Fix multiple inclusion guards to match new pathnames\n\nChange-Id: Id7735be1d75bc315733b1773fba45c1deb8ace43\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": "fa42b4410d49134a8e63dc2196be4013d286f2d6",
      "tree": "71e325089092167f202fbdf763daaf700cfd4a4b",
      "parents": [
        "7675e16bcae06c0fe258aad89b3d511037dec399"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 17 12:53:45 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 17 19:01:40 2013 -0700"
      },
      "message": "Move to new art dalvikvm\n\nChange-Id: Ib04bc9853b7084965fa0c9899c3e5f5ac42d4ce7\n"
    },
    {
      "commit": "7675e16bcae06c0fe258aad89b3d511037dec399",
      "tree": "7b1ef4555225ba2e6d9b63fe61549c52d291a757",
      "parents": [
        "5f4bd97519aad4f075346f8c5c0a84c6105951d8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 10 16:18:04 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 10 16:18:04 2013 -0700"
      },
      "message": "Rename art-cache to dalvik-cache\n\nChange-Id: I294995066aecc29fbd739c3e9e6f60934f743064\n"
    },
    {
      "commit": "addf1a8da2ece5ee9d6747a176f960ab7291f718",
      "tree": "9806306981ca16bab1671feac53d6810af5b2fb2",
      "parents": [
        "abe640f873536f4f0b5953558c086fe82123e6ca"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 19 10:50:50 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 19 10:50:50 2013 -0800"
      },
      "message": "Fix the last failing host -Xint JDWP test.\n\nThere\u0027s a test that asserts that the bootclasspath is non-empty.\n\nChange-Id: I9cd93f658255361cdd9dd73e6ecda6da37219cb7\n"
    },
    {
      "commit": "b6f0f78b0cbf53e2d551653911f1cda96f5e456b",
      "tree": "be6a4eed9f8f332cb5caadbdbf46f4193b6f4976",
      "parents": [
        "7db619bb2a4e01e8532a04b613745d4926b205d7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 10:28:23 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 10:28:23 2013 -0800"
      },
      "message": "Make the tools/art script appear to work from any directory.\n\nThis isn\u0027t the real fix, and it means that your oatexec will be running\nfrom $(ANDROID_BUILD_TOP) rather than your current directory, but it lets\nme use a modified vogar that just calls \"art\" instead of \"dalvikvm\", as\nlong as I use absolute paths.\n\nChange-Id: Iac35fcd2114316a06780b4f1f27eee9fbe95282d\n"
    },
    {
      "commit": "54b3747f197fec38f91b1b74e81d812d8b55f1ad",
      "tree": "ef2f96eb5103e85825d77328e146845e51c53f69",
      "parents": [
        "7688767f265f4f1e44018d3fa82e5b189e4bdf3e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 08 15:45:41 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 08 15:45:41 2013 -0800"
      },
      "message": "Fix art script argument quoting.\n\n$* is always a mistake, which is a shame because that\u0027s what everyone\nlearns first.\n\nChange-Id: I0c18d13a42653cdde72b55ba7a4284e3454a5ba8\n"
    },
    {
      "commit": "cae6f06d19da0eba4c6eb8480545a3ecb7c9fba9",
      "tree": "e7fd86589a3ce4384d96a4b85b7d8469a652a973",
      "parents": [
        "937b73eea7a473395f3572e0db1fdc9c6a094db5"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 02 17:16:27 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 02 17:16:27 2012 -0700"
      },
      "message": "Change art script to use exec\n\nChange-Id: I0ae2a7e35ba4bc2675836b45677aa535eccf0850\n"
    },
    {
      "commit": "08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6",
      "tree": "3e767d037fd3e47e792b88d982ad38bce26d39e9",
      "parents": [
        "f94404ead1f2e4a1b5a2ff8bbdb65c5e4d4a77ea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 26 17:34:00 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 12:18:25 2012 -0700"
      },
      "message": "Include held locks in SIGQUIT thread dumps.\n\nHandy if you have an ANR that\u0027s locking related. Quick tour:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniStaticSynchronizedMethod0(Native method)\n   - locked \u003c0x60135aa8\u003e (a java.lang.Class\u003corg.apache.harmony.dalvik.NativeTestTarget\u003e)\n   at java.lang.reflect.Method.invoke(Native method)\n   at C.whileTrue(Main.java:63)\n   at C.synchronizedOnClassString(Main.java:56)\n   - locked \u003c0x60002a70\u003e (a java.lang.Class\u003cjava.lang.String\u003e)\n   at C.nestedSynchronizationWithTryCatch(Main.java:44)\n   - locked \u003c0x61336b90\u003e (a java.lang.String)\n   - locked \u003c0x61336bd0\u003e (a java.lang.String)\n   at C.nestedSynchronization(Main.java:35)\n   - locked \u003c0x61336b18\u003e (a java.lang.String)\n   - locked \u003c0x61336b50\u003e (a java.lang.String)\n   at C.synchronizedOnClassC(Main.java:30)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at C.noLocks(Main.java:27)\n   at C.\u003cclinit\u003e(Main.java:24)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at Main.main(Main.java:19)\n\nA non-static synchronized native method works too:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniSynchronizedMethod0(Native method)\n   - locked \u003c0x613371a8\u003e (a org.apache.harmony.dalvik.NativeTestTarget)\n   ...\n\nNote that most stack traces don\u0027t look any different; the above is a\npathological example that exercises different kinds of locking. Testing\nwith system_server shows most threads don\u0027t hold any locks.\n\nFuture work (marked by TODO) is that explicit JNI MonitorEnter calls in\nnative code aren\u0027t shown.\n\nChange-Id: I2747f5cddb4ef64b1935736f084a68fe8e4005e9\n"
    },
    {
      "commit": "4e181288cc6bd67baa1024e2fdb7201dde3d100e",
      "tree": "f2e51b932e8446d87d41e1a724b2129f5e54a134",
      "parents": [
        "ba67d7d31efbbdc6e8e8870b2cf0faf7d22db454"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 25 10:07:40 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 25 10:07:40 2012 -0700"
      },
      "message": "Make art script work for the first time\n\nChange-Id: Iab8d5e1e3abf372d7a7a567bce55becdb5a139d7\n"
    },
    {
      "commit": "db385708bfcfbd64bdc9cb46fdc0e66344363848",
      "tree": "3e2172c857a6bae61bba54587e8fcdc5bbd65b6d",
      "parents": [
        "5937e047bd15b3ce48c95e0457e501ab6feb7234"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 10:41:20 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 10:41:57 2012 -0700"
      },
      "message": "Update cpplint.py.\n\nFrom https://code.google.com/p/google-styleguide/source/browse/trunk#trunk%2Fcpplint .\n\nChange-Id: Ie9c0efe36c9af5c1fead502ae673ca6693f3cf7b\n"
    },
    {
      "commit": "a9719eb4167b544438268d46692389761652fc5d",
      "tree": "cb4399b94b8e61b41818969940babc4fb461b414",
      "parents": [
        "7bda15835732b2ce874a093c136ca406d4f20e00"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 07 11:09:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 07 11:09:48 2012 -0700"
      },
      "message": "Clean up the confusing comment-related logic a bit.\n\nThis still passes 034, but is a bit clearer because we get all comments\nout of the way early on.\n\nChange-Id: I580ebdca24a4a0738ee102536c8d5b076427264d\n"
    },
    {
      "commit": "a91bc63a27a0201f58ced75ff85dcfe6a3d358c6",
      "tree": "9a15319ae9d31d2b7d5b4445287cc8cdf16923f0",
      "parents": [
        "d06dfe7b09de95c035fa736d2b62aa9fee2347b5"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 06 23:18:10 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 06 23:18:10 2012 -0700"
      },
      "message": "Make generate-operator-out.py only skip // line comments\n\nChange-Id: I5d279b735b383a901fd25034fdd9202c8e97582d\n"
    },
    {
      "commit": "4825756c621ff709079ef3cd3f981e7036c0ebdb",
      "tree": "29f2db93457dc7eca2ccc95d20e0e159283e9edf",
      "parents": [
        "6c564a8138d1b2a230d55e1f5850a95b6fb42582"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 17:42:44 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 17:44:43 2012 -0700"
      },
      "message": "Auto-generate operator\u003c\u003c for enum ::art:Class::Status.\n\nThis requires a bit more work in the script to support\nenums nested inside classes.\n\nChange-Id: Id0e3561c3675214f74f47ac9f36ba82c41fa775d\n"
    },
    {
      "commit": "08b82a99de4dfeb0a74b0922051f46516ca85398",
      "tree": "d1ecec26d1c0668e182ab2addf5e5580a98ab95e",
      "parents": [
        "c8eeb9b283d5053c1b1092363320646dc7c0deab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 05 12:13:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 05 12:13:56 2012 -0700"
      },
      "message": "Don\u0027t explicitly request python2.4.\n\nThis is obsolete historical cruft.\n\nChange-Id: I140a93ac04f5be0034812f90204e6f9ae36d2d5f\n"
    },
    {
      "commit": "460384f04f933f94546db7bfbfa02896b9e77962",
      "tree": "e95299a4a62f63c9a3ca981d26993f440f2b02c0",
      "parents": [
        "5e284224e5525ee0a8494a73d84c8ef86e022a0a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 16:53:10 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 16:53:10 2012 -0700"
      },
      "message": "Use the operator\u003c\u003c generator more widely.\n\nChange-Id: Iae3b8f32f49f4c91cd41c53bbafb95db071d57bb\n"
    },
    {
      "commit": "ef67aec56cfc8b43239027f8ddc331162eb103a1",
      "tree": "9157685396253f815cf130124af3d1887bc61be8",
      "parents": [
        "899214c7b94b2f21d2fee2b77e2482ea6b18c0d1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 12:01:27 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 12:01:27 2012 -0700"
      },
      "message": "Fix the operator\u003c\u003c generation to work with \"mmm\" as well as \"mm\".\n\nChange-Id: I457a74f1be68debfd351c63f282c3579c6becda2\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": "223f20fa939c386c695977263780dea2195093db",
      "tree": "642d1abe5dfbf2239bf239e8e91bebd333384378",
      "parents": [
        "a56fcd60596ae8694da21fccde5c56832e437c56"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 23:06:55 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 23:24:56 2012 -0800"
      },
      "message": "Remove old code to support multiple images\n\nChange-Id: I29bc2f216361ac4ed0cc0fefb7e3c46ee64e0ae8\n"
    },
    {
      "commit": "69b15fb098162f19a4c20e6dccdcead04d9c77f0",
      "tree": "84fdfc26f560fb618b652a0aff98347f875a2653",
      "parents": [
        "109bd6a38d0cd7c4b7797a9f2db8324c797d1368"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Sep 03 12:25:21 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 06 15:28:47 2011 -0700"
      },
      "message": "Working dex2oat and oatexec\n\nadb shell dex2oatd --dex-file\u003d/system/framework/core.jar     --image\u003d/system/framework/boot.oat --base\u003d0x50000000 \"\u0027--method\u003dLjava/lang/System;logI(Ljava/lang/String;)V\u0027\" \"\u0027--method\u003dLjava/lang/System;log(CLjava/lang/String;Ljava/lang/Throwable;)V\u0027\"\nadb shell dex2oatd --boot-dex-file\u003d/system/framework/core.jar --boot\u003d/system/framework/boot.oat --dex-file\u003d/system/framework/art-test-dex-HelloWorld.jar --image\u003d/system/framework/art-test-dex-HelloWorld.oat\nadb shell oatexecd -Xbootclasspath:/system/framework/core.jar -Xbootimage:/system/framework/boot.oat -classpath /system/framework/art-test-dex-HelloWorld.jar -Ximage:/system/framework/art-test-dex-HelloWorld.oat HelloWorld\n\n09-05 17:58:18.912  2385  2385 I System  : Hello, world!\n\nChange-Id: I53e534068584f0c3a837313e4d517a0e4a7154fc\n"
    },
    {
      "commit": "4b3b727d405da366f480f438e9b968ee09bf958d",
      "tree": "2330063ea97fdc96b5021ec05cc680454ee0bf46",
      "parents": [
        "b765be0d656c3073402693aeaf64e95a0e49f218"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 09:52:17 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 09:59:58 2011 -0700"
      },
      "message": "Add vogar-like --invoke-with to \u0027art\u0027, and fix a bug valgrind finds.\n\nAlso add -d to run aexecd.\n\nChange-Id: I38fefd9ad2e08b42039cb2a09351b4e6e30a9c5c\n"
    },
    {
      "commit": "f2682d5a6ce0f7de58da8fd4ec8aec200c43b92e",
      "tree": "e7669f0833a588eb5231fb4452bbac091cc5037e",
      "parents": [
        "0d666d8769714dcbc2acc4dd5b06f0deffa6e0a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 15 16:37:04 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 15 18:34:59 2011 -0700"
      },
      "message": "Fix the invocation interface.\n\nPreviously, we just cast the Runtime* to a JavaVM*, which blew up as soon as\nthe caller tried to use their supposed JavaVM*.\n\nThis also implements NewObjectArray. Running aexecd on the host, this gets us\nas far as not having an x86 CreateInvokeStub...\n\nChange-Id: Iba5f148797d053fba1c69af99b20508ea6aff5cb\n"
    },
    {
      "commit": "40ef99eb9dd91c2fa549f40973964529c927bb3c",
      "tree": "317dfd56abeacb4c0dd3cf7f63a4801828d7dff9",
      "parents": [
        "5381cf941d26030199fcdbe61a614ff01e55a27c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 17:44:34 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 22:02:10 2011 -0700"
      },
      "message": "Start implementing JNI.\n\nThis patch replaces our JniEnvironment class with the regular JNIEnv.\n\nThis patch also adds support for .jar, .zip, and .apk files in the\nboot classpath.\n\nThere\u0027s also an attempt at implementing JNIEnv::FindClass.\n\nI\u0027ve also fixed a few scoped_ptr/scoped_array bugs (this kind of thing\nbeing the reason we use UniquePtr in libcore), and removed some\nunnecessary .\n\nThe \u0027tools/art\u0027 script makes it easier to play with aexec on the command-line.\n\nChange-Id: Ic4f704c12e0071f17e95b6e182fdab9370ead9b0\n"
    },
    {
      "commit": "59848dad0b711856fc1bfb81748bbe944b045640",
      "tree": "2ab0551f1c6420deb34b3b81d67e8a34a42368f8",
      "parents": [
        "f615a61aef972cfc1dc23931ac2ed0da14c3fedb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jul 23 20:35:19 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jul 23 20:35:19 2011 -0700"
      },
      "message": "Import cpplint.py and make target cpplint-art\n\nImported without change from http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py\nWill start making local changes to cpplint.py in followup changes.\n\nChange-Id: I0fda185f4a9f96815739db8f862cf8537402bf3b\n"
    }
  ]
}
