)]}'
{
  "log": [
    {
      "commit": "18c24b6e05e7591069f1a2ac9c614b28fc0853ac",
      "tree": "cf1d9507d4cba52017f71fd7073ff565a90b8c36",
      "parents": [
        "1a0806c6847a9dc5cc6d73460d7e8ad3183b5c49"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 10 08:54:25 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 10 09:42:13 2012 -0700"
      },
      "message": "Add new_array type info to dex dump output.\n\nAlso cleaned up a bit of the field printing.\n\nChange-Id: Ia731d58b16f554fde9a9ac733f4d4f0148e55ac9\n"
    },
    {
      "commit": "0325e6296d2370c42e7be80d846bfc7f8b28423b",
      "tree": "3e7e2192b3756ed1ee70921910ded374189dd5ad",
      "parents": [
        "581b2ea85d9b382f6b14efadc9d2d36b526ef7c5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 05 14:22:51 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 06 15:57:22 2012 -0700"
      },
      "message": "Cumulative timing logger\n\nAdded a new class: Cumulative timing logger. This logger enables us to get an average of how long each Gc phase takes.\n\nChange-Id: I87874d4c25b5935ef30ef593a9bd36a27e45ae14\n"
    },
    {
      "commit": "f3a26411e0e8b56b64d184d3e946e72f9c31e4c7",
      "tree": "c1a552f7d21691d4c5c4b7632cfcfd1edc213a13",
      "parents": [
        "a5d602c87ca780030caf82a64701b60ce118fb2f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 24 11:06:02 2012 -0700"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Aug 24 15:49:48 2012 -0700"
      },
      "message": "Make Mutexes work on Mac OS X 10.6\n\nChange-Id: I1692f78df5891be91d620050b7214083fbafb10f\n"
    },
    {
      "commit": "5db7ea037e9acad434efe8ab4ce798c513fdb49a",
      "tree": "7103ef5f625ea0dd8f174e17fa7cb37b09a25667",
      "parents": [
        "0088689b77a3e310a9e269d72113b63eab3552c7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 14 13:33:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 14 13:33:49 2012 -0700"
      },
      "message": "Run the verifier single-threaded.\n\nAlso improve crash dumps so the frame numbers are the same as when you\u0027re\nin gdb, and add a more memorably-named environment variable for waiting\nfor gdb.\n\nChange-Id: Icbeba9b60cc98102e49eee9266d97fbcc1783f53\n"
    },
    {
      "commit": "02fb9f7d83813805141da741d8fbfc45751741dd",
      "tree": "3aae602bc4bcf7815042306d2cfa45b295bc118b",
      "parents": [
        "5c599943f8c347acd84c4d9fda56a9df70649b78"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 13 22:22:33 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 13 22:22:33 2012 -0700"
      },
      "message": "Flush libcorkscrew\u0027s /proc/self/maps cache before a crash dump.\n\nChange-Id: I682282b7162312db71b7222d89b4e5592fe1c8a1\n"
    },
    {
      "commit": "95aff770aad557685411775994bf2ec6bb370367",
      "tree": "360add38920eb519830b86859d53cc7afba79c76",
      "parents": [
        "a168c83a1d247094e9efb1244b0f73a5f1e1ed97"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 17:44:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 13 15:27:51 2012 -0700"
      },
      "message": "Fix ridiculous pc offsets for static symbols in .so files.\n\nExample before:\n\n  static\tart::HandleUnexpectedSignal(int, siginfo*, void*)+4146013245 [0xf75f6fcd] (libartd.so)\n\n...and after:\n\n  static \tart::HandleUnexpectedSignal(int, siginfo*, void*)+1085 [0xf7e9872d] (libartd.so)\n\n(This matches what gdb\u0027s x/1i said.)\n\nChange-Id: I0f1ce29ad09bbe6f1f27aa8ef654e7fab2f2378e\n"
    },
    {
      "commit": "289be85116aaf7c48413858b5d0448868b4e61f3",
      "tree": "b9302aa89850df080b43d0ca0ddb3636463fb22c",
      "parents": [
        "08fcb2591b4e60eee41d0aab92f3bcc36784fa5a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 13:57:20 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 13:57:20 2012 -0700"
      },
      "message": "Include the crashing thread\u0027s name in crash dumps.\n\nChange-Id: I7fd821e3f390fde3a7280689292373d413218893\n"
    },
    {
      "commit": "225f5a1df25241babd16cdba54056b9e2cd166a2",
      "tree": "d3846f2f3a97a59124084d8fd503a3238346e66d",
      "parents": [
        "7664f5cd118b355a5fe0c7536cb48ac991ed2b62"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 11:23:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 11 11:37:58 2012 -0700"
      },
      "message": "Don\u0027t pre-allocate one OOME per thread.\n\nThere\u0027s no associated stack trace, so we can share one between all\nthreads, saving a little memory and thread start-up time. Speaking\nof stack traces: dump the stack to the log at the point where we\nrealize we\u0027re not going to be able to throw an exception with a\nstack, so the developer has _something_ to work with.\n\nChange-Id: I2246d291855bd9b9ee13f2be5b1ce14f669e9410\n"
    },
    {
      "commit": "c4c3ee2b77064f6def92d394aec9a2ac7dee4e90",
      "tree": "5375e32bb41fee9a8ce561b1be99bf68d5e15917",
      "parents": [
        "12a95026721fb872c5d273130efc7ddecdae359c"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri May 25 16:16:32 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 01 11:38:12 2012 -0700"
      },
      "message": "Return if DumpKernelStack can\u0027t find the kernel stack file.\n\n(cherry picked from commit 05c09ece5312ebb4e1c661dde2bbc67798d63f8b)\n\nChange-Id: I78265f13fea936b7fda37e24f9e0999b417fc17a\n"
    },
    {
      "commit": "12a95026721fb872c5d273130efc7ddecdae359c",
      "tree": "fd771d922e1fe645d04054f0eeced7ae2a48aed4",
      "parents": [
        "058a6de784e5337c550e8b45bfa1f54e6d16fbf2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 21:41:38 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 01 11:36:01 2012 -0700"
      },
      "message": "Don\u0027t show the useless kernel stack for the thread that\u0027s reading /proc.\n\n(cherry picked from commit 1f92871d20f804913f460bb69dc4d605cabf30cc)\n\nChange-Id: Ib88cd89c13911742abf793dc9eebbeb7fbe98492\n"
    },
    {
      "commit": "058a6de784e5337c550e8b45bfa1f54e6d16fbf2",
      "tree": "767387657aa125eff1d92f6264348f064a95c277",
      "parents": [
        "46e251bf7200cc06f5a9a82ee2030e650f5e1443"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 19:13:02 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 01 11:23:21 2012 -0700"
      },
      "message": "Switch completely over to libcorkscrew for Mac OS.\n\n(This patch requires my Darwin libcorkscrew changes.)\n\n(cherry picked from commit 51e916f5b7baf0b0391f55a314a97b12279fe0d5)\n\nConflicts:\n\n\tsrc/runtime_linux.cc\n\nChange-Id: Ife7789597402989e6b8282cc0c0cc1d1832b044a\n"
    },
    {
      "commit": "46e251bf7200cc06f5a9a82ee2030e650f5e1443",
      "tree": "9cfe6a0184fd07cd77819702cd63394e3475383b",
      "parents": [
        "6f3d0518f06dc0eb0fb40e03b4b35e840c81e95f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 22 15:10:45 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 01 10:42:55 2012 -0700"
      },
      "message": "Switch to libcorkscrew for native stack traces.\n\nThis is both for the current thread (which backtrace(3) could do) and other\nthreads, which is functionality we didn\u0027t have on x86 before.\nWe jump through the appropriate hoops to get static symbols as well as dynamic\nones.\n\nAlso unify the existing native stack dumpers so they can share the best code.\n\nExample x86 check failure:\n\n  *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n  Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) fault addr 0xdeadd00d\n  Registers:\n      eax: 0x00000000    ebx: 0x55a966f0    ecx: 0x55d523c0    edx: 0x09225a50\n      edi: 0x559d9b84    esi: 0xfffd8bcc    ebp: 0x55a9aba0    esp: 0xfffd8b90\n      eip: 0x558e2e98                    eflags: 0x00010246 [ PF ZF IF ]\n       cs: 0x00000023     ds: 0x0000002b     es: 0x0000002b     fs: 0x00000007\n       gs: 0x00000063     ss: 0x0000002b\n  Backtrace:\n  \t#00 unwind_backtrace_thread+536 [0x55d76bb8] (libcorkscrew.so)\n  \t#01 art::DumpNativeStack(std::ostream\u0026, int, char const*, bool)+79 [0x55924fcf] (libartd.so)\n  \t#02 art::HandleUnexpectedSignal(int, siginfo*, void*)+1431814659 [0x5597cc23] (libartd.so)\n  \t#03 __kernel_rt_sigreturn [0x55573410] ([vdso])\n  \t#04 art::Runtime::Abort()+600 [0x558e2e98] (libartd.so)\n  \t#05 art::LogMessage::~LogMessage()+1052 [0x5580c16c] (libartd.so)\n  \t#06 art::EnsureResolved(art::Class*)+336 [0x5570dad0] (libartd.so)\n  \t#07 art::ClassLinker::FindClass(char const*, art::ClassLoader const*)+144 [0x5571bc90] (libartd.so)\n  \t#08 art::ClassLinker::FindSystemClass(char const*)+43 [0x5572287b] (libartd.so)\n  \t#09 art::ClassLinker::FinishInit()+82 [0x557228d2] (libartd.so)\n  \t#10 art::ClassLinker::InitFromImage()+1469 [0x5572451d] (libartd.so)\n  \t#11 art::ClassLinker::CreateFromImage(art::InternTable*)+60 [0x5572583c] (libartd.so)\n  \t#12 art::Runtime::Init(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e const\u0026, bool)+943 [0x558e882f] (libartd.so)\n  \t#13 art::Runtime::Create(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e const\u0026, bool)+119 [0x558e9057] (libartd.so)\n  \t#14 art::Dex2Oat::CreateRuntime(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e\u0026, art::InstructionSet)+42 [0x80ac68a] (dex2oatd)\n  \t#15 art::Dex2Oat::Create(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e\u0026, art::InstructionSet, unsigned int, bool)+60 [0x80ac87c] (dex2oatd)\n  \t#16 art::dex2oat(int, char**)+3167 [0x80894cf] (dex2oatd)\n  \t#17 main+17 [0x8086a01] (dex2oatd)\n  \t#18 __libc_start_main+230 [0x55c12bd6] (libc-2.11.1.so)\n\nExample x86 SIGQUIT dump (note the three stacks, and note the absence of all\nthe crap that makes dalvik\u0027s attempt so unreadable):\n\n  \"Thread-10\" prio\u003d5 tid\u003d11 VmWait\n    | group\u003d\"main\" sCount\u003d1 dsCount\u003d0 obj\u003d0x612d6620 self\u003d0x884f8f0\n    | sysTid\u003d30512 nice\u003d0 sched\u003d0/0 cgrp\u003ddefault handle\u003d1458686832\n    | schedstat\u003d( 1249502 8995 26 ) utm\u003d0 stm\u003d0 core\u003d14 HZ\u003d100\n    | stackSize\u003d1044KB stack\u003d0x57905000-0x57906000\n    kernel: futex_wait_queue_me+0xcd/0x110\n    kernel: futex_wait+0x1e5/0x310\n    kernel: do_futex+0x101/0xb00\n    kernel: compat_sys_futex+0x75/0x160\n    kernel: sysenter_dispatch+0x7/0x2e\n    native: __kernel_vsyscall+14 [0x5557342e] ([vdso])\n    native: pthread_mutex_lock+54 [0x55cd8bf6] (libc-2.11.1.so)\n    native: art::Mutex::Lock()+86 [0x55823a86] (libartd.so)\n    at java.lang.AbstractStringBuilder.\u003cinit\u003e(AbstractStringBuilder.java:75)\n    at java.lang.StringBuilder.\u003cinit\u003e(StringBuilder.java:54)\n    at java.lang.Thread.create(Thread.java:427)\n    at java.lang.Thread.\u003cinit\u003e(Thread.java:223)\n    at ThreadStress$1.run(ThreadStress.java:134)\n\n(cherry picked from commit 00e446e5d912100b831fdcdbc276e7c31447f0c4)\n\nConflicts:\n\n\tsrc/thread.cc\n\nChange-Id: I4712f8235992eafe6d8d6f915aa96f684bceaff2\n"
    },
    {
      "commit": "6f29d0e6d5444ff84157c922c23c221567dcc6c5",
      "tree": "bd59a7c1006507d5d230876e703814191db9f0df",
      "parents": [
        "71e85b74eb5710a689e83623706b3bb372762eb5"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 11 15:50:29 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 11 16:51:58 2012 -0700"
      },
      "message": "Skip compilation of dead code from duplicate methods\n\nChange-Id: If6114b3cd8e9a2d9a901dc93c352cee6afa3361f\n"
    },
    {
      "commit": "8a31b50daf530a28c8ce2be8d758c737cb32897b",
      "tree": "d2cabe590eef1e1b6c5f23a6be3063956a1c9689",
      "parents": [
        "b57e952a167d3f72ee5c8e80267052b70c0f6308"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 30 19:36:11 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 30 19:36:30 2012 -0700"
      },
      "message": "Remove two unnecessary .c_str() calls.\n\nChange-Id: I48a604e13e678bc74b3745ceafcb8d0367e51f8b\n"
    },
    {
      "commit": "e188419b971936086a188843378375f5ced13724",
      "tree": "176f45c1395b3efee8a6330512ee023960522797",
      "parents": [
        "90dc30f4b9967e850d0594e57dfa8e7cb0369575"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 23 12:38:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 23 12:38:15 2012 -0700"
      },
      "message": "Make Thread::InitStackHwm work on Mac OS.\n\nChange-Id: Id0170dbdff8112d8e48d41ab50a311076863151e\n"
    },
    {
      "commit": "795e33081c73a6fead31f45b03fdfb022ef7eab8",
      "tree": "6e7c5d4ac9bd9dfc04c9bb271538b829c69e62f5",
      "parents": [
        "5b04728e9a61cf038e38820eb8a82a412015d5e3"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Apr 21 00:20:57 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Apr 21 00:40:10 2012 -0700"
      },
      "message": "Set materialized file names correctly.\n\nChange-Id: I0848ad4da4f2033dd7804686e65bd44c690a2036\n"
    },
    {
      "commit": "7b9d996e4cd7d154bb1a244d67139aff0c363cf2",
      "tree": "a9dabe8f910b4b8bf29c2f4285d860995e25f58d",
      "parents": [
        "934100aea5a0f498c17e2c4a1fd0193af1557b42"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:48:18 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:57:19 2012 -0700"
      },
      "message": "Tidy up some C-isms.\n\nChange-Id: I53b457cab9067369320457549071fc3e4c23c81b\n"
    },
    {
      "commit": "c967f78cd29b6019f7cfca40a02e9b677112da70",
      "tree": "60458d56fc398c9fb7b67b6d834b85f626ac2b31",
      "parents": [
        "fd8ea97f64fb6d32cbfe35729b816a22dfa18224"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 10:23:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 10:23:15 2012 -0700"
      },
      "message": "Include a new heap summary line in the SIGQUIT output.\n\nLooks like this:\n\n  Heap: 87% free, 4MB/32MB; 6327 objects\n\nWhile I\u0027m here, fix another long-standing TODO to make PrettySize have the\nusual google3 behavior. (I took the specific thresholds from Chromium.)\n\nAlso distinguish between the more general \"Dump\" member functions and the\nspecific SIGQUIT-related ones by consistently calling the latter DumpForSigQuit.\n\nChange-Id: I76e783adc18dd089bac9b348f53dc9860a0fe4b9\n"
    },
    {
      "commit": "548250302e93570e2e65ac63b88bda7b39c8dc01",
      "tree": "8710a463542d4e9943c5e609f7fc874b7a729dbe",
      "parents": [
        "b4e331bd50dff797df2c9d00eb6bd6a3c3c01f58"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Wed Apr 11 10:45:23 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Apr 11 12:05:33 2012 -0700"
      },
      "message": "Code cleanup, fix MicroTime.\n\nChange-Id: I1bd265a85bf036dde9393c7e6a7fe2dbc67dd509\n"
    },
    {
      "commit": "82914b6164fd0109531391975389e4f0ff6832c8",
      "tree": "822f3769c8aa27713dccaacfafbabd9b049ac655",
      "parents": [
        "34e069606d6f1698cd3c33b39e72b79ae27e1c7b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 15:56:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 15:56:29 2012 -0700"
      },
      "message": "Use PrintableString in oatdump.\n\nAnd enhance PrintableString to assume modified UTF-8, which is all we ever give\nit. \\u0000 is more readable than \\xc0\\x80 to most people.\n\nChange-Id: I45bd8d65694eda0ef4ef03abc40f41a76f07a671\n"
    },
    {
      "commit": "409d273a3a57158faaa520ff5f33508367f759f1",
      "tree": "6f57ebaf4c92669dcc60d95c8c28688d6041efb6",
      "parents": [
        "6a144338023bdc0ca6954fc71a1f9b4d94088ee4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 13:34:44 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 13:34:44 2012 -0700"
      },
      "message": "Be consistent about \"kilo\" versus \"kibi\".\n\nI\u0027m a binary man myself, but we\u0027ve mostly used decimal so far, and wider\nAndroid is mostly decimal, so...\n\nChange-Id: Ibef78f61176569e0023a7f43196a3969c7fe794b\n"
    },
    {
      "commit": "b08e8a3e32498ef3b03505917c83f28a284bd0a9",
      "tree": "8b08dd6952d112700bba4b1a46837129603728e0",
      "parents": [
        "2d7021776f10fe666ecd197713bcf88507851c37"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 02 10:51:41 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 02 10:51:41 2012 -0700"
      },
      "message": "Restrict Mac OS 10.5 devices to 1 dex2oat thread.\n\nAlso make extra sure we\u0027ve included the header file that tells us what Mac OS\nversion we\u0027re compiling for.\n\nChange-Id: Ie57f01a325217e638df4e9b90d94b27303149124\n"
    },
    {
      "commit": "d23f5206cf72ca3fb53ac3049649bb7d018232bf",
      "tree": "24005b3acfa8fb80a6e6d0403ecfe40ec2ceda2d",
      "parents": [
        "c1503430c715f9d71cf4297a186a9a3442f5b9ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 19:50:04 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 19:50:04 2012 -0700"
      },
      "message": "Another crack at implementing a usable GetTid() for Mac OS 10.5...\n\nChange-Id: Ic607bc99fa665e81bbbaea1ea0bd1b35f26196ba\n"
    },
    {
      "commit": "5d6d5dc456bc0066979e9593df13c5533347095d",
      "tree": "9cd7710d1c7b8a3eecab3d78c0fb25cb4f5f695f",
      "parents": [
        "68aefb06c449df0bd8a34f3491f7594ee3f9dd0b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 29 11:59:27 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 29 11:59:27 2012 -0700"
      },
      "message": "Try to work around Mac OS 10.5 lossage.\n\nUntested, since 10.5 is obsolete and the only 10.5 machines I have available\nare the build servers...\n\nChange-Id: Icbd7a052069e0664f0c2dfef3dd755b4435dda0c\n"
    },
    {
      "commit": "f1498437b0d6beb9f4f91980b98cbeb0b5c773ce",
      "tree": "99c89626bda53f5c4e6654a467f0494d582064e3",
      "parents": [
        "deaac40ea7e7d3754d917808fcc1aad52d8f52b7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 28 19:34:27 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 28 19:34:27 2012 -0700"
      },
      "message": "Clean up Mutex a little and add the missing pieces for Mac OS.\n\nThis -- as you\u0027d expect, given that we\u0027re fine on bionic and glibc --\ndidn\u0027t find any bugs. But it\u0027s another step towards completeness and\nlets me rule out Mac pthread_mutex_t weirdness as a potential cause of\nour Mac dex2oat crashes.\n\nChange-Id: If3f4aacf8dbc7c7b9fd6b8932bc01616ccf86b47\n"
    },
    {
      "commit": "7a967b3d4468ab56bf1b75ebd4d7bf9e6798761b",
      "tree": "b100ef49346ef43dc301951a3a416a1393eeac1a",
      "parents": [
        "0ce131582cc78d1fcd918620e7da992df93fdff7"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 28 15:23:10 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 28 16:31:49 2012 -0700"
      },
      "message": "Warn if oat file does end with expected extension\n\n(cherry picked from commit 272df23ebb17297b53a60906304a35bc56eebdd9)\n\nChange-Id: If126ee29811546698f2a8f9bb62300c2a9391017\n"
    },
    {
      "commit": "22869a9026a08b544eca4cefd67386d347e30d2c",
      "tree": "814001ed308907e6562516c247658291cc805545",
      "parents": [
        "ab7b9dcbfc4264a0bc4889c3e463ff88a67f6a30"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 14:08:24 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 14:08:24 2012 -0700"
      },
      "message": "Warn if a thread attaches without a name and blow up if a thread detaches while running.\n\nAlso don\u0027t crash if a thread attaches without a name. Doing so is allowed, even\nif it\u0027s not a good idea.\n\nChange-Id: If5796af689e9221ce21f443023b0d793a8be15b0\n"
    },
    {
      "commit": "398f64b5805246765b699839b439e18c0dfbf2ee",
      "tree": "de3f86de82289b1734b12cdc7c4292f4aff16f55",
      "parents": [
        "ee0fa76b2e5d39ad36d1ff144b2d0270df81e606"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:05:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:05:48 2012 -0700"
      },
      "message": "Remove more lint, mostly C-style casts.\n\nChange-Id: Iaf1f23290e35ed48e5795fb20690953a9a834457\n"
    },
    {
      "commit": "b25c3f6a86dc634ce44fb2849385b49465caa84d",
      "tree": "f359c72d821d913f78b977d8dde0fc7023afb511",
      "parents": [
        "fc9e6fabed89d948fa8c0e9d673e430076712c60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 16:35:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 17:11:59 2012 -0700"
      },
      "message": "Fix cpplint\u0027s whitespace complaints.\n\nChange-Id: I11fd2db2badf7bd98e7866ca2155d8ef1e112408\n"
    },
    {
      "commit": "f8c11935a232138684219a0d5e3247c0b96bd664",
      "tree": "bcce2a96ef71353de7c5f704943f5bf1d5e2d81f",
      "parents": [
        "dfaf67fb5fc575874ee9f6471de35926458b6d8b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 19:53:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 19:53:59 2012 -0700"
      },
      "message": "Fix crashes when a resolution method is passed to PrettyMethod.\n\nFound by dump-oat-boot.\n\nChange-Id: Icf670e37663c9761f64a683ea22a7a9c4df68b97\n"
    },
    {
      "commit": "9058f2bf308871bd43c194c6a771587ecf79740d",
      "tree": "256f51b2af0977f65d0ab18de72fad16e8d850fe",
      "parents": [
        "634eb2eb14f87753519d0ef2c5f256e55888f378"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 18:06:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 18:06:48 2012 -0700"
      },
      "message": "Make our new NullPointerException detail messages more readable to Java programmers.\n\nTwo to-dos to-done.\n\nChange-Id: I0276dd8b9c062e8e9523cb51defed2c3eda77e2b\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": "4ae722af0d45b71a29407fe9939117b22c6dd090",
      "tree": "865da481fea9fb219d7a085cda91b0dfa7ed4653",
      "parents": [
        "e0bb2f7374188cc6f63ea9caae606eac8957ff19"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 13 11:08:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 13 11:08:51 2012 -0700"
      },
      "message": "Mac OS only gained pthread_setname_np in 10.6...\n\n...and our build servers apparently run 10.5!\n\nChange-Id: I69c2f2212e616d83c043bb24e683b5437bceea54\n"
    },
    {
      "commit": "7c6a61eeac2a8a0c744a8d1f21faf357474a0f23",
      "tree": "ad99211b225711d2e89ad63e56312e3035ce1d45",
      "parents": [
        "b5d09b2f87202bc132ac3991d4b6d71f4f6d9264"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 12 18:01:41 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 12 18:01:41 2012 -0700"
      },
      "message": "Fix SetThreadName for Mac OS.\n\nChange-Id: Id05585c097af0317aff85253b3f935f87362d2ff\n"
    },
    {
      "commit": "2435a5751431152aaeaa2faaa86b2a30d3eecfe3",
      "tree": "ec5c4a2140364e6342aad6c02606dd8885d0d8be",
      "parents": [
        "dd6aa87f0484c6097df0657f242eeef9ac9ff9e8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 16:07:41 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 16:07:41 2012 -0800"
      },
      "message": "Support for single-stepping by line.\n\nPlus various other test fixes.\n\nChange-Id: I2ef923e56a16a14380eda150685b5e3db944616e\n"
    },
    {
      "commit": "c308a5d8c1993ff51be355531548e91409bdbd82",
      "tree": "0d0e88307b368d310be077363702c7b28b0a20f4",
      "parents": [
        "b6744c5a8a619501d89c0a137b61ca5b4ec93411"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 16 17:12:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 16 17:39:56 2012 -0800"
      },
      "message": "Fix a bug in Dbg::GetClassDescriptor.\n\nThe callers were incorrectly assuming we always returned a descriptor, which\nisn\u0027t true when handed bad input.\n\nChange-Id: I5509d18d8c234d97fa5ec2e0a01d4cdb44acfc55\n"
    },
    {
      "commit": "91bf6cd47174f5c17265320f7a350722720390a5",
      "tree": "f4823c09793162e00b2fdd43990e12f2837d7562",
      "parents": [
        "f05d0dd011d3dbcf78bf35d0771f67371f5f6b58"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 14 17:27:48 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 14 17:27:48 2012 -0800"
      },
      "message": "More debugger support.\n\nThis wires up method-entry events and fixes a bug in exception events.\n\nChange-Id: Ia7c46786a8073434fbb4546615072622f301ef84\n"
    },
    {
      "commit": "f1a5adc87760f938b01df26d906295063546b259",
      "tree": "99f9a917b667cdaab69fa7df0978e4310eb6c207",
      "parents": [
        "5b1f162d9cbec1c6b2863bd220bdaecdcb18b139"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:09:35 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:09:35 2012 -0800"
      },
      "message": "Reduce StringPiece usage a bit.\n\nVarious easy cases, in case we want to move towards making the StringPiece\nconstructors explicit.\n\nChange-Id: I49e5efc5b787f847ab4cb12d66d1d16aed03fa67\n"
    },
    {
      "commit": "48436bbff87aae61bba20029b4382fa41ce787fe",
      "tree": "f05982ea479f43a86c81ab715341238fa56a4d42",
      "parents": [
        "06e3ad4a651c2c58dba5e865cd06d2f98462bf1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 15:23:28 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 15:52:48 2012 -0800"
      },
      "message": "Split should have a matching Join, if only for convenient debugging output.\n\nChange-Id: I68275a6410af706875f53540db4ef0242f414470\n"
    },
    {
      "commit": "06e3ad4a651c2c58dba5e865cd06d2f98462bf1d",
      "tree": "8110ea5a4880e0a6b2c39ce26dab934af29a91c0",
      "parents": [
        "bd411021057416e56a1544b98831b92faf66a1a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 14:51:57 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 15:09:59 2012 -0800"
      },
      "message": "Turn on some basic tsan annotations.\n\nThe most useful bit here is that tsan now knows the names of our threads.\n\nChange-Id: I8eef8f31e954ffc373555b392d6d9678d76ead34\n"
    },
    {
      "commit": "a56fcd60596ae8694da21fccde5c56832e437c56",
      "tree": "522352376c179e452706bacad29c00f6fc5acb7f",
      "parents": [
        "b12552a95d68b9e4a567103190074ae47b6a61dc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 21:23:01 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 22:48:30 2012 -0800"
      },
      "message": "Honor ANDROID_ROOT and ANDROID_DATA\n\nChange-Id: I8e43093830a734694bbf7308d08dd18527302270\n"
    },
    {
      "commit": "2faa5f1271587cda765f26bcf2951065300a01ff",
      "tree": "c59557857c36741cfcd1b6bf5ae039886a8ad6e7",
      "parents": [
        "0850c69c88d49efd4075288511b70d6c032bd0c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:42:07 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 16:46:29 2012 -0800"
      },
      "message": "Fix copyright headers.\n\nChange-Id: I5b7bc76a370238d810d78522bd5531600746700f\n"
    },
    {
      "commit": "d8c00d04361366a0156943bd98fee57392743e80",
      "tree": "e7c2b5ad0bc9486cef0343b1b5abda80d0611e15",
      "parents": [
        "160f3e20e81a9137e75a18a8613c09c51c8c004f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:08:31 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:08:31 2012 -0800"
      },
      "message": "More complete JNI name mangling.\n\nChange-Id: Ifd8ed7d00ce44c7404b6d728b7e5e673afb563d3\n"
    },
    {
      "commit": "3bb17a644e2945c3913cfbde245d2f520d62a3ff",
      "tree": "5b9abb315069c2103d7bbaabc5a07d2a13bddb87",
      "parents": [
        "715112b4551b6ead2643b5e4e9bd796331417115"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 27 23:56:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jan 29 12:50:16 2012 -0800"
      },
      "message": "Space trim and other unit tests. General space clean up.\n\nThe space unit tests now include checks on space invariants, in\nparticular relating to footprint and size.\nOut-of-date comments have been removed.\nThis patch adds PrettySize and PrettyDuration methods to make these\nstrings more human readable.\n\nChange-Id: I6bc05b2db0d0115b97d666b832fce57bcdd2e091\n"
    },
    {
      "commit": "bb551fa68ffc57f679b8c914ac856666f0348b77",
      "tree": "98bc7c51b0a8c20934bf6ae27574036b616566ae",
      "parents": [
        "2748b49cb889f6e2539c77a09064db0459508467"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 25 16:35:29 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 25 17:11:37 2012 -0800"
      },
      "message": "Collect and output a few dex2oat statistics.\n\nNot sure how useful this is. Suggestions welcome.\n\nChange-Id: I339de66a9964d18b11a482f549e891a57831e10e\n"
    },
    {
      "commit": "10037c866b04550fc5461058c398c2e3e509381a",
      "tree": "91ef9ebf54962b25c2faf6e66e2b9ca4d383cbbe",
      "parents": [
        "20e1ebb6d7b9959971baf0903beb0c7f7169e716"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Jan 23 15:06:23 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 25 16:30:59 2012 -0800"
      },
      "message": "Added pass to verify structure of dex file.\n\nWhen a dex file is first opened, this pass runs through to make sure\nsizes and offsets of the various sections of the dex file match the\nheader and don\u0027t overlap.\n\nChange-Id: I4900c9665d6572ccfca2fe5f79d5d48ce7252036\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": "11d1b0c31ddd710d26068da8e0e4621002205b4b",
      "tree": "8d9c9c0dd5741214466775b86069032d609fd91c",
      "parents": [
        "bbdb1437f55948e5395b4dcb306e25605539a444"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 16:57:47 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 17:26:10 2012 -0800"
      },
      "message": "Reduce namespace pollution.\n\nThis leaves us with just the mspace stuff and three libdex functions to clean\nup. We deliberately expose the JII API, and I don\u0027t think there\u0027s anything we\ncan really do about the art_..._from_code stuff (and at least that starts with\n\"art_\").\n\nChange-Id: I77e58e8330cd2afeb496642302dfe3311e68091a\n"
    },
    {
      "commit": "ad6c9c3dbf7541340f22ccbb333f08556ad7e000",
      "tree": "dc11a1165c0f145cf3e6b5edc16bea8b57ba62fe",
      "parents": [
        "d1029981c8ec2341f76376c8d8e15d72dda4c45f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 19 17:39:12 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 20 14:04:02 2012 -0800"
      },
      "message": "Mac build fixes.\n\nThis gets us pretty close. There are a few problems with libraries we depend\non (system/core/liblog and external/icu4c) that I have workarounds for, and\na problem with gtest that I haven\u0027t yet worked around that prevents us from\nlinking any of the tests. But this at least gives us a Mac dex2oat binary.\n\nChange-Id: Iac39a6c2963c3d37ab2165d7d1a70e303ba22c45\n"
    },
    {
      "commit": "e1aee697ea9f060592a2431cbc0bd44868e801e4",
      "tree": "c50befbbe4a238a419e0042ea33da536f7c8fd93",
      "parents": [
        "20ee660cf7cc1038af40d5c6b43b3b6b426c3fc5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 17 16:40:10 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 17 16:40:10 2012 -0800"
      },
      "message": "Expand art::GetTid() to cover Mac OS.\n\nChange-Id: I8d5cea26fe108d81c4bd83ba0e8e3ee290e90211\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": "a9ef3fd82bebc6370fc3ddbb094988feb6c83022",
      "tree": "3832d0b31fdf28b6f67e4a16148a461ba299727b",
      "parents": [
        "dbf05b722af99ba2fd2f4c4fc7eb6c3e9880e5d1"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 13 18:33:43 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 15 13:10:04 2011 -0800"
      },
      "message": "Updates to tracer to log events.\n\nThe tracer can now generates traces for ddms or output to a logfile.\nAlso includes bugfixes to allow stack walking to work properly when\ntracing.\n\nChange-Id: I8894272d9a678eeb1d376734f7822daf2ab298e4\n"
    },
    {
      "commit": "91250e0c3fb0ad758b9b97042a3fa86d5ae76763",
      "tree": "bb6f32bfc5178a9d56445b79ae0fd6763162e0a8",
      "parents": [
        "42298fab70318f39e53c0595e9fc570548dc253c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 22:30:35 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 22:30:35 2011 -0800"
      },
      "message": "Knock 0.5s off the Calculator startup time.\n\nDown to 2.5s on mysid. We now only mess around with std::strings when we need\nto synthesize a descriptor. If we can just hand out a const char* straight from\nthe dex file -- which most of the time we can -- we now do.\n\nChange-Id: Iddec7062d8bd578bd25f671eb4d597e9ed064d65\n"
    },
    {
      "commit": "955724179c6c739524f610023287f56b24dc31de",
      "tree": "64f751693e72173ae0d044d8c54989b01f1195af",
      "parents": [
        "b87f73ea7524f6eb9da6da1af931a3d3fbb833ff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "message": "Don\u0027t default-construct std::strings and then assign them.\n\nChange-Id: I8c994d1e6a8d2ebe52eaa4f0132e0deb2ecfa5f3\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": "c1f143de3d0370a17a4561eb83bf10a5d7908aa3",
      "tree": "a4839595b944473d3bd2c06e83dcb276a460de2f",
      "parents": [
        "c5b734a27a64c81590015dd12a7901c396818a99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 17:31:10 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 17:31:10 2011 -0800"
      },
      "message": "Remove some lint.\n\nChange-Id: Ieecd7c10e62bce27e2db38f96d5df9782ef0cff6\n"
    },
    {
      "commit": "0571d357843c53e042f370f5f2c2e9aa3fe803a9",
      "tree": "197e5b1c0b1bf0ee8cc0e1960470d0a8d203b4af",
      "parents": [
        "33dc7717cd16592bcc825350bea6305be9eb2ea1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 03 19:51:38 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Nov 13 11:57:18 2011 -0800"
      },
      "message": "Refactor the use of Method by the compiler.\n\nRemove the dependence on the Method object in dex2oat, allowing lazier\nresolution.\nIntroduce new find and iterators in DexFile to simplify common\noperations and avoid misuse of class data items.\n\nChange-Id: I39fb8252190f543d89d8b233076355cec310fe08\n"
    },
    {
      "commit": "906e685ce43092812bf403016057376d0657a671",
      "tree": "e2badcc3005f66acc7a847ae265437627ba4f7a6",
      "parents": [
        "47179f76e3f03fe3eb21dfb081d50733ca316371"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 28 14:52:10 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 28 14:52:10 2011 -0700"
      },
      "message": "Fix the unintelligible IsValidClassName API by breaking it into three.\n\nThere are only three of the four possibilities you actually want, so we may as\nwell just call them by name.\n\nChange-Id: I481d91d98d6d47430f1972891fa81a61c57ad331\n"
    },
    {
      "commit": "7162ad937f5f6bec32bf78d4675ff65cd6d1a233",
      "tree": "78bd960316746977400a9fc1772fbedeb821faae",
      "parents": [
        "f7c3b6625d710a8700325eea447f65e9f963b7f2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 27 14:08:42 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 27 14:08:42 2011 -0700"
      },
      "message": "Implement DDMS heap info (\"HPIF\") chunks.\n\nThis lets you see how many bytes/objects are in your managed heap.\n\nChange-Id: Ie925207e9c48989a24968633e60b99314d220865\n"
    },
    {
      "commit": "bfe487be25652c5456236661b9d9c3579d2296c1",
      "tree": "03e98cfc794946a85a5dfcc3170ae138f78da9b1",
      "parents": [
        "234ab15b00f8120282d1833e5d7480eca2e35a29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 15:48:55 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 16:52:02 2011 -0700"
      },
      "message": "Makes objects known to the debugger GC roots, implements the THST message, and lets DDMS request stack traces.\n\nThis fills out correct data in all columns of the \"Threads\" table, and\ndouble-clicking on a thread shows that thread\u0027s stack.\n\nChange-Id: I48f63c3612e12d35269158dc3a283f07db28c8e7\n"
    },
    {
      "commit": "6b4ef025af12b158d117fc80fc79acf620f411a0",
      "tree": "223c580477cbb7bde240b599da4bbee793b8dcaf",
      "parents": [
        "21b9f1355f0311b5c67bfdfa9dd63cacb1fba502"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 23 14:59:04 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 25 00:03:03 2011 -0700"
      },
      "message": "Make ResolveField not rely on Field::GetType resolution\n\nChange-Id: I10f4a874809ac9db2cd54e200cf10eb7c8979fce\n"
    },
    {
      "commit": "d81871cbbaa34c649e488f94f61a981db33123e5",
      "tree": "a3adf3b7469fee507a4d4c4491942fbd48b4483d",
      "parents": [
        "262bf46ddc91e5b4fbd367127ff21a1877d939f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 03 13:57:23 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 24 11:56:15 2011 -0700"
      },
      "message": "Verifier clean up.\n\nThis is the first part in trying to move to a more rigorous mode of\nasserting the validity of garbage collection maps.\nIn the bring over of the verifier from Dalvik a large class had been\ncreated where all of the Dalvik/Dex functions were static methods of\nthat class. This rewrite introduces 3 key classes, Verifier that\norchestrates the verification of a method, RegisterLine which describes\nthe types associated with registers for a particular PC and RegType\nwhich describes the current type of a register within a line. The\nfunctionality is brought over from Dalvik but cleaned up to not do\nthings like goto. Failing within the verifier is also cleaned up. By\nvirtue of having stateful objects the interfaces between different\naspects of the verifier are greatly simplified.\nTo save space, RegTypes are cached upto a maximum possible 2^16, and\ngiven an Id. As the number of RegTypes is typically small this means\nthat we have a full OO implementation but at a lower space cost than the\ncurrent convention that uses botched together enum values requiring\n32bits of storage in a RegisterLine rather than 16bits (ie half the\nspace requirement per register in a register line). To make use of\nthis space more rigorous monitor verification is brought back, and\nultimately I think we can work around bug 3215458 with richer RegTypes\nthat are aware of literal objects.\nThe code removes short cuts that had been added to Dalvik\u0027s verifier and\nappear illegitimate, it also fixes a large number of bugs in the\ndescription of the verifier.\nWhere possible the spaghetti of code is replaced with straight line\nif-then-elsif.. code that clearly follows the ordering semantics of the\nspecification. The code is also aiming toward having a more type\nrigorous description of the verification process, and when this isn\u0027t\npossible following the description convention of the specification.\n\nChange-Id: Id25b742018a2ad5ea95687973cca610d7e19513c\n"
    },
    {
      "commit": "262bf46ddc91e5b4fbd367127ff21a1877d939f2",
      "tree": "a8c775ccabe058392fb008bc523605e34ed01bdb",
      "parents": [
        "ecbce8f17a80ddc8e5d80b075a8e334f1c2daf3c"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Oct 20 18:36:32 2011 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Oct 24 11:23:14 2011 -0700"
      },
      "message": "dex2oat invoked by system if it can\u0027t find an oat file for a dex file.\n\nThis allows the old dalvik tests to be run without ever explicitly\nrunning dex2oat on anything. Just upload the jar files and the system\nwill take care of generating the files it needs.\n\nChange-Id: Iad553bf6f57e28da4edb8eb0df47e62e08a0be44\n"
    },
    {
      "commit": "3b6baaa203fa63f1522b2172a1645f90412afdae",
      "tree": "7de428a7d53f2b2b9c2274d49181befd5786b8fa",
      "parents": [
        "7abe9c933402f01d638086b2715b09b64b8595e0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 14 19:13:56 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 16 11:01:28 2011 -0700"
      },
      "message": "Bring our native stack usage down.\n\nI\u0027d have preferred to have a 512-byte limit, but there are some monsters\nin the verifier; 2000-line functions and the like. I\u0027m also not policing\ntests (except for one silly one). They can use all the stack they like.\n\nThis fixes the IntMath test (the stack overflow test was failing because\nwe were using more than 4KiB to throw!).\n\nChange-Id: I7e53e2fde2b39fde1910f8ee5b1712e8a66069c7\n"
    },
    {
      "commit": "b7bbba49d88eae58223d9878da4069bf6d7140bf",
      "tree": "00d1a0758d762903e648bb550434320822228c46",
      "parents": [
        "30646836b4a1c6e5e80ddaea246cf9669eaa0628"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 13 14:58:47 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 14 00:24:28 2011 -0700"
      },
      "message": "Add oatopt drop in replacement for dexopt\n\nChange-Id: I094375230af2d9a88e30245b390cac71be7b50f4\n"
    },
    {
      "commit": "a9f19787df870456f5ae654bc9967d319d1bffe0",
      "tree": "103fd896e6db17804fa65e28b9ec6072f3817972",
      "parents": [
        "47a0d5a6f221066c3daf7f67f2122ed9c9cd217c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 13 00:14:47 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 13 09:43:47 2011 -0700"
      },
      "message": "Add support for oat files in /data/art-cache\n\nAlso implement Zygote_nativeForkAndSpecialize\n\nChange-Id: I7dfb257b2897279a4cdac4b1ca194c1ac84eb047\n"
    },
    {
      "commit": "83df2ac4a051ee10eafde7587de2faf3f0150fad",
      "tree": "f9733df44993a8ea798b19a6845fd3744913552a",
      "parents": [
        "d958820ec84df7a698e7ba2b3ba5ab2d88f75e0a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 16:37:54 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 16:37:54 2011 -0700"
      },
      "message": "Basic GC logging (and class initialization timing).\n\nChange-Id: Ibb09e556fbd42b1bb8cbd72974e8ca226aa073a5\n"
    },
    {
      "commit": "aded5f7ab991f3c1132851599d3bc60ff6707eed",
      "tree": "7fb5e92c224adf98cadd67b7df99cc2d2851cbcb",
      "parents": [
        "bcbaaf3df56178263dbc110dcb0d1cf6c9d167c3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 07 17:15:04 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 10 12:51:28 2011 -0700"
      },
      "message": "Working ClassLoader\n\nChange-Id: Ia1122165e47f846a1d4506111849f830d9f14c1b\n"
    },
    {
      "commit": "f5a7a476e7ea63e094ff0f011dccc170607e6f6b",
      "tree": "4f07e57d5e3d2a82eeefcb7c6409f36b383b1d96",
      "parents": [
        "c2858561314513cc7bce2da7e13664aefef5a2ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 07 14:31:02 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 07 15:08:48 2011 -0700"
      },
      "message": "Enhance CHECK_EQ and friends to allow extra detail to be appended (like CHECK).\n\nChange-Id: Iaa980892ab31621c8bcca9ea7c6c4ee743333f45\n"
    },
    {
      "commit": "6c8867daab4af4667e0e816f6beafa7c5d13e043",
      "tree": "103d25d3a799042c1746d2f05567dda27d8ed38a",
      "parents": [
        "33f741eefef8f8012f6c190b39355f2e0430d535"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 03 16:34:05 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 03 16:34:05 2011 -0700"
      },
      "message": "Implement artThrowVerificationErrorFromCode.\n\nChange-Id: Ib7f2ad06f20bd0a83fbab573bb16a9d2f872826a\n"
    },
    {
      "commit": "e24fa61603a60ade3797e4a0c8b3fccb346cb048",
      "tree": "9ec5ed942eb9ece6d4d261ffd21956c94f9968fe",
      "parents": [
        "06cbeb990e94f9c4576601e27145fe132e34a686"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 29 00:53:55 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 03 10:28:05 2011 -0700"
      },
      "message": "Separate oat from image\n\nChange-Id: If2abdb99826ead14e3465d90ba2acffd89709389\n"
    },
    {
      "commit": "f91c8c328c922ecd522e1d3508d2603e78de8a7b",
      "tree": "9ae1b28516bfac8698f34e56b4a07037b5c81c28",
      "parents": [
        "ff1ed4770bf7ff024a807b9f909b1a26abb78341"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 21 17:30:34 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 22 11:28:21 2011 -0700"
      },
      "message": "Adding JNI code for dalvik.system.DexFile and java.lang.Class\n\nChange-Id: I079c037db77aeaca0dec06660f7551f57adf2607\n"
    },
    {
      "commit": "64bf5a33d55aa779ef452552a466943002d39e4f",
      "tree": "2aac5abebb39f55f28940093212f20ed5ba59fb7",
      "parents": [
        "6bbe8b053c1b6177c6fbe0ff88a96d863ce76d3b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 14:43:12 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 14:43:12 2011 -0700"
      },
      "message": "Implement VMClassLoader\u0027s native methods.\n\nChange-Id: I6e617f415e54ce29c3a0a470b58e79d3aaa0a4bf\n"
    },
    {
      "commit": "54e7df1896a4066cbb9fe6f72249829f0b8c49c6",
      "tree": "c7889163c116637001c98270f897d41ca02ce8a5",
      "parents": [
        "a0a764a1f5757f0f7ffa695b855b9d0ac8c2e455"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 11:47:04 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 11:47:04 2011 -0700"
      },
      "message": "Various bits of cleanup.\n\nMost notable: PrettyField now includes the type (but, like PrettyMethod,\nlets you turn this off), and there\u0027s a new PrettyClass, and PrettyType\nhas been renamed to PrettyTypeOf.\n\nI\u0027ve also moved the dalvik \"sync\" stuff into files named \"monitor\", and\nmade some of the implementation details private.\n\nChange-Id: I39ea79b45e173f9ebbf9878bcead207766a5653f\n"
    },
    {
      "commit": "8daa0929f08a3080ea64dbd4e997e72f411e6fc9",
      "tree": "cecee23131d5e0357c17c44bcccc7ddcfb31b925",
      "parents": [
        "4b620ffb1b4d0c96a94bb3afe314f35d53990ec6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 13:46:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 14:01:57 2011 -0700"
      },
      "message": "More threads work.\n\nAdds stubs (and sometimes implementations) for dalvik.system.VMStack and\njava.lang.Thread native methods. There was a bug in the dalvik\nthread priority setting code, where the current thread and the passed-in\nthread were confused.\n\nI\u0027ve also pulled Mutex and ThreadList out into their own files, and\nmoved some functionality around (with the aim of having more stuff\nprivate, especially locks).\n\nChange-Id: Ieb0f22669cac3df44ca34f7868f8e7d4dfa09ab6\n"
    },
    {
      "commit": "92b3b5623ec8b65f3e099c076e247bb8273692f8",
      "tree": "94f85f0a8d33884b41227a1a560a755deccfffa2",
      "parents": [
        "15041f433341f111665943ecfb9ca88c77d5c19a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 16:32:26 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 18:11:55 2011 -0700"
      },
      "message": "Add locking to the heap.\n\nNow tsan is happy with us too, at least on the host.\n\nChange-Id: Ib4657f56be2014de832dff8886b63843a40ea788\n"
    },
    {
      "commit": "dcc247493fd8fb243e335c3ec08e5e625896a47c",
      "tree": "5eedb27fb6a295a1daec4cee276ba05c28abe483",
      "parents": [
        "f5ecf06388960bc1424ed0a8652c78e345d82106"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 14:02:44 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 14:02:44 2011 -0700"
      },
      "message": "A little bit more of the threads implementation.\n\nThe most important change here is understanding that Thread\u0027s id_ field\nwas unrelated to java.lang.Thread\u0027s id field.\n\nChange-Id: I832b92145332e1ded63a7824033dae684eeacf28\n"
    },
    {
      "commit": "42ee14279065352a4b9a3e8028d02c567e847d05",
      "tree": "55b1ba08ff4202f13cfa0a0b303b62e48183805e",
      "parents": [
        "82f3e09e27284056a4007a6c38fce832d877f672"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 06 12:33:32 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 06 12:47:47 2011 -0700"
      },
      "message": "Log line-at-a-time to work around Android logging lossage.\n\nAlso deduplicate the two copies of gettid, and switch image_test over\nto using SignalCatcher\u0027s SIGQUIT dumping rather than rolling its own\nsubset.\n\nChange-Id: I8b70aaa3a3b9258c8258728c6a66e5dc4fa6399e\n"
    },
    {
      "commit": "d92bec457dc6c506c80e9da6b8e0c958266b5cdc",
      "tree": "50f28fd96411f68d4b91cc5943d159a00fcf88cb",
      "parents": [
        "4cdeec9686e1cd2d0118c96443e8c882dc849b7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 17:04:36 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 17:40:19 2011 -0700"
      },
      "message": "More SIGQUIT handling, various Thread fixes.\n\nChange-Id: I3233c300d1c838c2eee0ba9be6018b7fbd907386\n"
    },
    {
      "commit": "90a3369d3b6238f1a4c9b19ca68978dab1c39bc4",
      "tree": "b66ec9b2cced5713bd5902c499d57b533d2e7a9a",
      "parents": [
        "34023801bd544e613d6e85c9a5b2e743f3710e8f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 13:27:07 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 13:27:45 2011 -0700"
      },
      "message": "Switch to UniquePtr.\n\nOnly one use of scoped_ptr was incorrect (but then again, I spent an afternoon\nwith valgrind finding and fixing them just last week).\n\nChange-Id: If5ec1c8aa0794a4f652bfd1c0fffccf95facdc40\n"
    },
    {
      "commit": "34023801bd544e613d6e85c9a5b2e743f3710e8f",
      "tree": "cf42aadf76cd6c1104e75f20b223716ed44dbb16",
      "parents": [
        "881dd56c9b6ea2c922956650b763d36d2eeb799b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 12:06:17 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 12:06:17 2011 -0700"
      },
      "message": "Remove uses of scoped_ptr_malloc.\n\nChange-Id: I355fcfc93e8d689bea8b9388423ca12cb3e6566f\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": "e27955ca3ca960928d4dbd6cb79711fce06950b3",
      "tree": "bbf56dbaecba643099e5831ea502d57901dcb714",
      "parents": [
        "ba5ebb944b7c5c6a1b754b6dd47eed96f39aea29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 15:21:24 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:30:02 2011 -0700"
      },
      "message": "Add the signal catcher (for SIGQUIT and SIGUSR1).\n\nAlso fix some of the thread implementation.\n\nChange-Id: If2d1b59a149ba1ac192ad9bc74319c8dff228549\n"
    },
    {
      "commit": "79082e367845bbd68ec44ef2ddd1be8ef0e1550f",
      "tree": "71334eaf121c7662949464f7a8e7ca65bb78d73d",
      "parents": [
        "04ec7f0f244ef36fac1c7e590d2ea14e35dfe95a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 12:07:32 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 12:07:32 2011 -0700"
      },
      "message": "Add the runtime lookup of native method implementations.\n\nPlus other bits of cleanup.\n\nChange-Id: I8584001d7eeb118f8e29c4a62652a18b94333be8\n"
    },
    {
      "commit": "5174fe6e4e931c423e910366ff22ce0838567940",
      "tree": "6eaa36ae0cfb476ddfac9fcf46c2a3918d9510f6",
      "parents": [
        "814e40397fe6c8a2c645bae99f356dbddd6dbe18"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 15:12:35 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 15:12:35 2011 -0700"
      },
      "message": "Add the condition variable to System.loadLibrary and implement UnregisterNatives.\n\nAlso change PrettyDescriptor now descriptors are String*s rather than StringPiece\u0026s.\n\nChange-Id: Id07affb26038f5f4a3bee4396c65f71d7bc38be3\n"
    },
    {
      "commit": "c143c55718342519db5398e41dda31422cf16c79",
      "tree": "b2d80bd5dc63e0eb0bea372651de12dcaf2e7f0d",
      "parents": [
        "195487cb0b11e64917df01f8d55671344db2e97f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 20 17:38:58 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 21 17:42:55 2011 -0700"
      },
      "message": "Updating the compiler to use the new-world model\n\nNew compiler is integrated and passes first test (Fibonacci).\n\nChange-Id: Ic5448ab89ebd22baa30fafc3d1300324687d1fc2\n"
    },
    {
      "commit": "a0b8feb34a8492c6b8d430f6ca0716e7ff4f4c57",
      "tree": "4c7c1613f5b7af65bfabde2091a2bf106171a9de",
      "parents": [
        "9cff8e13d41825c4f3f0127af061e94b06114fc8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Aug 20 09:50:55 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Aug 20 09:54:46 2011 -0700"
      },
      "message": "Turn off the \u0027public\u0027 check for main, and improve diagnostics.\n\nWe\u0027re likely to be able to invoke a static main method before we can invoke\na virtual getModifiers, and right now we don\u0027t care whether we\u0027ve been asked\nto run a non-public main.\n\nAlso adds PrettyMethod for improved diagnostics.\n\nChange-Id: Iea08f0be980386adbe408b476449c2066c4e6da8\n"
    },
    {
      "commit": "9cff8e13d41825c4f3f0127af061e94b06114fc8",
      "tree": "3425941132a8b1406126015cf9c45fd661b574a2",
      "parents": [
        "67bf885d62b1473c833bece1c9e0bb624e6ba391"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 18 16:47:29 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 19 22:01:22 2011 -0700"
      },
      "message": "Convert Class::descriptor_ from StringPiece to String (as part of image loading)\n\nChange-Id: Iab5ffa353661a7c06ee79af1f40d399a53777174\n"
    },
    {
      "commit": "11e45077acba2e757799a00b3be9d63fec36a7cc",
      "tree": "3538d83b1bdb862d657a93aa894ad74fc6ec9c68",
      "parents": [
        "e2ff782c0cf770c3f72916ba9072bc24bf732ce0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 17:40:46 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 18:00:12 2011 -0700"
      },
      "message": "Add a reference table implementation.\n\nThis is suitable for pinned array references and the like.\n\nI\u0027ve also brought in some of the human-readable type printing stuff\nfor the benefit of the reference table dumping code.\n\nThis patch includes tests, but doesn\u0027t yet wire anything up.\n\nChange-Id: Iaf6066201bbd254e033dee4fd0b8dfd0bc17afa9\n"
    }
  ]
}
