)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
