)]}'
{
  "log": [
    {
      "commit": "57aba86f29d7e795bf7e68c65cc464d2291b6af1",
      "tree": "6d03848a0d66c686092d03c063298bac6cefa2f2",
      "parents": [
        "72e401c59bce47fdf0274a0d47f0340b05e4f27f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 20 14:00:47 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 20 14:00:47 2012 -0700"
      },
      "message": "Throw OOME if pthread_create(3) fails.\n\nThis is how dalvik behaved, though we offer useful detail messages.\n\nThis patch also fixes a bug where we weren\u0027t actually including detail\nmessages in OOMEs (not just the pre-allocated one).\n\nChange-Id: If6c8f47008a9bd058d9773f2f2e6e9a4f0d843e1\n"
    },
    {
      "commit": "3f6635a2c84d645002f651c312d53f8348646c1f",
      "tree": "e46caa5d1199aca6f6b3c1cbd5f0e706606682c3",
      "parents": [
        "c553b95527b78c1fcf9b719a87d8875f71280f71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 19 13:37:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 19 14:26:32 2012 -0700"
      },
      "message": "Improve JniAbort (and JNI tests).\n\nThis has been on my to-do list for a while, but it actually bit people\nin the ass yesterday. This change enables us to write a lot more (and\nbetter) tests, but for now I\u0027ve just improved the tests that already\nexisted.\n\nChange-Id: I04a18656de60b47e5a6b5777204c144209d1448e\n"
    },
    {
      "commit": "6cf23884730574ca364b357e823259f4993e6908",
      "tree": "50ad618096847b2dfe423ece38246891870c84ce",
      "parents": [
        "cee4d0c1c2faacf0eae748a24cc7e455e067d977"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 15 15:42:07 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 15 15:42:07 2012 -0700"
      },
      "message": "Simplify the default stack size handling.\n\nThe extra 16KB was just silly. We only need a notion of \"default stack size\"\nif there\u0027s an explicit command-line override.\n\nChange-Id: Ia63e00047a420546656ac8d2dad46789994157a3\n"
    },
    {
      "commit": "a168c83a1d247094e9efb1244b0f73a5f1e1ed97",
      "tree": "d0fb5a91a00227eda6b430fd64f2a1bff5271723",
      "parents": [
        "289be85116aaf7c48413858b5d0448868b4e61f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 15:34:20 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 15:34:20 2012 -0700"
      },
      "message": "Convince tsan that the card table isn\u0027t a problem.\n\nAlso move the #include \u003csys/mman.h\u003e into \"mem_map.h\", since it\u0027s\ncurrently not possible to make any use of the latter without the\nformer. If we care about the pollution, we should offer our own\nconstants as part of our API.\n\nChange-Id: I01ec451d23c1d8afb8cb8a6660af8d9723faf5f5\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": "7664f5cd118b355a5fe0c7536cb48ac991ed2b62",
      "tree": "0564c36316e2aa0a892ff9914258433f14641a07",
      "parents": [
        "9eb5f03e0dd90ac25e01fcf81f832c50a1f09d2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 08 18:15:32 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 11 11:17:13 2012 -0700"
      },
      "message": "Fix GC performance regression\n\nEnable CMS and fix performance regression due to recursive marking image spaces. Dependent on my java change list.\n\nChange-Id: I4765792aa8226e811ac158f04ab88217db755573\n"
    },
    {
      "commit": "0d39c12238499ca9ccc34d1532c443335e7c1044",
      "tree": "78a6befc07c5f24691234759eb2a8ddb488d0ef1",
      "parents": [
        "ebe2e0f2e5145ef8433c1459b9cd60ecd853ee76"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 16:41:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 17:31:26 2012 -0700"
      },
      "message": "\"InitGoogle\"-style argv stashing.\n\nThis lets us give the command line in crash dumps when dex2oat dies in the\ncontinuous build on the Mac. I\u0027ve also taken the opportunity to use the\nbasename of argv[0] as the default log tag, so dex2oat will now show up in\nlogcat as \"dex2oat\" instead of \"art\" (and we can probably stop manually\nprefixing dex2oat log output).\n\nAlso stash pthread_self() so we can _correctly_ report \"handle\u003d\" in the\nSIGQUIT output.\n\nChange-Id: Ia8249cd19bab5b816cb94a531a65becdfacaa98b\n"
    },
    {
      "commit": "abbe07d095547ded03c2e9d0d53943d43471278d",
      "tree": "f63555369a0e40574ee30ff634904e5eb3a467b5",
      "parents": [
        "2ab7f486ba73b2846bdbdde65cc2d41f62a26015"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 05 17:42:23 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 05 17:42:23 2012 -0700"
      },
      "message": "Include non-attached native threads in the SIGQUIT output.\n\nThese threads look something like this:\n\n  \"droid.phasebeam\u0027 prio\u003d5 tid\u003d? (not attached)\n    | sysTid\u003d5369 nice\u003d-4 sched\u003d0/0 cgrp\u003ddefault\n    | schedstat\u003d( 0 0 0 ) utm\u003d1 stm\u003d8 core\u003d0 HZ\u003d100\n    native: __futex_syscall3+8 [0x40074678] (libc.so)\n    native: __pthread_cond_timedwait_relative+48 [0x40079474] (libc.so)\n    native: __pthread_cond_timedwait+72 [0x40079528] (libc.so)\n    native: android::renderscript::Signal::wait(unsigned long long)+58 [0x418bf117] (libRS.so)\n    native: android::renderscript::LocklessCommandFifo::wait(unsigned long long)+38 [0x418bab97] (libRS.so)\n    native: android::renderscript::LocklessCommandFifo::get(unsigned int*, unsigned int*, unsigned long long)+22 [0x418babbb] (libRS.so)\n    native: android::renderscript::ThreadIO::playCoreCommands(android::renderscript::Context*, bool, unsigned long long)+126 [0x418bf84b] (libRS.so)\n    native: android::renderscript::Context::threadProc(void*)+382 [0x418b7347] (libRS.so)\n    native: __thread_entry+48 [0x40079d30] (libc.so)\n    native: pthread_create+180 [0x40079884] (libc.so)\n\nAlso fix running tests on Mac OS, which has no /proc/self/cmdline.\n\nChange-Id: Ib5e6f7e23dd45aecdf814e84f573361a5d91bac6\n"
    },
    {
      "commit": "de479be99328d2113bf483e082c9ecf235a34d69",
      "tree": "7a51b8512e12561b9b05238f489d98c1d4a4fdb9",
      "parents": [
        "af543476661966c83a1e1c4db4fbef0d9a2d3afa"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Thu May 31 08:03:26 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Jun 03 09:02:22 2012 -0700"
      },
      "message": "Refactor runtime support builder.\n\nAlso, add inline assembly for load offset from current thread.\n\nChange-Id: I5c32c04a5ab9a8574acbaf8ee3e08761ebe33d4f\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": "a4f94740f9d66b21f4bcd3a225c434aa29cfa323",
      "tree": "88e3834418ac3e12d2c270fed3a370bda2643d0b",
      "parents": [
        "214d307f3d5bbfe6254ae9e96d504d3e665baa2c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 16:28:38 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 16:28:38 2012 -0700"
      },
      "message": "Finish cleanup of class/field/method caching.\n\nChange-Id: I289ae724cbd98487429275837d23b7b2d7096156\n"
    },
    {
      "commit": "af8d15a3267343dec135cc6df1db740c0a5c7b52",
      "tree": "8fb28f60c50ca9c6d0f2bfa14e855a2a0a980ab4",
      "parents": [
        "8029cbe626a467b344ff84d86170d757aa12ecd4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 09:12:18 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 11:38:43 2012 -0700"
      },
      "message": "Move the thread.cc Class*/Field*/Method* caching over to WellKnownClasses.\n\nJust heap.cc left to do, plus maybe some of the less convincing ClassLinker\nroots.\n\nChange-Id: Ib8adf3e28e00025e0c016dcd8d7b17e42f96796c\n"
    },
    {
      "commit": "8029cbe626a467b344ff84d86170d757aa12ecd4",
      "tree": "3747d139b98cf31f924328d1c2f03176e70860aa",
      "parents": [
        "081a47c90bcf2c42bb75a6b5611266cf28df2816"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 22 09:13:08 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 09:14:42 2012 -0700"
      },
      "message": "Remove a workaround for a bionic bug we\u0027ve fixed.\n\n(cherry picked from commit 335889ac12794803d6b2d72037b6a90fcdb1081a)\n\nChange-Id: I50f739d82ba949dbf8dc6e135c99dad383c41494\n"
    },
    {
      "commit": "633703ffb2d25b0cc30404eb057d18eb2f81f07c",
      "tree": "c0286440ed40c0d050feae86ec6c1b490c4146bb",
      "parents": [
        "eac766769e3114a078c188ea26776a81f0edb3cf"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri May 25 16:00:02 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri May 25 16:00:02 2012 -0700"
      },
      "message": "Return if DumpKernelStack can\u0027t find the kernel stack file.\n\nThe x86 emulator works... kinda.\n\nChange-Id: I5ce5277ea64b86c882727e38570340fb2d0be3cb\n"
    },
    {
      "commit": "eac766769e3114a078c188ea26776a81f0edb3cf",
      "tree": "4b9b8dfc89725173431817baba4455c013e40577",
      "parents": [
        "3f9ace8d90bfc48c8d7bf35af66de8ce8238de7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 21:56:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 25 12:04:43 2012 -0700"
      },
      "message": "DO NOT MERGE Fix all unsafe caching to be like libcore.\n\nThis way, if a runtime is restarted within a process, we re-initialize all\nthe cached data.\n\nConflicts:\n\n\tsrc/native/java_lang_Runtime.cc -- nativeExit lost an argument in dalvik-dev\n\n(cherry picked from commit 7756d5473fa27ce7e6ac7c31770eef7030431da4)\n\nChange-Id: I6184fc20c2a9ec16c4b053584a4d1c3b64452d0f\n"
    },
    {
      "commit": "c073b075241640c94c27e661ed6f29ff5fcee5d8",
      "tree": "bdc40c3c4c25a5bc4b5d769d7394a2667a2683ba",
      "parents": [
        "e119a3623ffbd55ff856d4eaac4dc4ef0c90a089"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 19:29:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 19:38:01 2012 -0700"
      },
      "message": "Switch the handful of std::endl users over to the predominant \"\\n\".\n\n(cherry picked from commit f6ee3605a88dec1114c60963a626aeec29d47220)\n\nChange-Id: I8124de153cb34657d22fb8bbca37864ff2f7abe0\n"
    },
    {
      "commit": "7dc5166ea740359d381097a7ab382c1dd404055f",
      "tree": "8b429913befc8ad0bf8e7e2247e0ec8ef684aaa6",
      "parents": [
        "0aac50652ef961ba3aafa44d43871190d23be1ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 16 14:48:43 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 16 14:52:35 2012 -0700"
      },
      "message": "Improve our check for whether a thread is still starting up.\n\nIt turns out that there was a race in Thread::Create that could confuse our\nsuspend-count sanity checking. Tested by manually inserting a sleep(3) there.\nI could have added an extra field to Thread, but since we only need to check\nthis once if we do a GC while a thread is still starting up, a simple string\ncomparison will be fine.\n\n  thread_list.cc:79] Thread[10,tid\u003d7447,VmWait,Thread*\u003d0x00d23060,peer\u003d0x60f1b350,\"\u003cnative thread without managed peer\u003e\"] suspend count already zero\n\nI\u0027ve also added some logging so we\u0027ll be nagged to remove a work-around for\na bionic bug when we\u0027re in a tree where the bionic bug is fixed.\n\nChange-Id: I78ac3c58245c1ecff3e86dcf297b94ae0085f7a2\n"
    },
    {
      "commit": "faf4ba01738400f418b45c4323aa9e8e6b6ba2a0",
      "tree": "2dab668947046ccbc45363144b7f46ceedaba33b",
      "parents": [
        "736df0253aa65ebccb29ddb6443c31b7730ca3e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:12:19 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:12:19 2012 -0700"
      },
      "message": "Only warn about limiting unlimited thread stacks when -verbose:threads is on.\n\nChange-Id: I4ee358c090285a701d91a105607ef3c0073ea7ed\n"
    },
    {
      "commit": "beb3240889846c0c196c8b14cc8d595458f25ed4",
      "tree": "05ade16ef22a1ec232fcd795dc68ba68d1a664c2",
      "parents": [
        "6ee997605c9f5a029250e50330ac764d1eb8112a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 01 22:09:16 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 01 22:09:16 2012 -0700"
      },
      "message": "Fix Mac build.\n\nChange-Id: I0f72f4c73a64d11889d6d7f08bc4b5d5231d150b\n"
    },
    {
      "commit": "e85d2e924953f1a13b7152edba1c13853e6f3a86",
      "tree": "c7f26aba9b1e65a66d468da51956f77d7be91d43",
      "parents": [
        "8a31b50daf530a28c8ce2be8d758c737cb32897b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 01 14:02:10 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 01 14:02:10 2012 -0700"
      },
      "message": "Include kernel stacks on non-ARM hardware.\n\nAlso explicitly say when we have no managed frames (so their absence\nis clearly deliberate in those rare cases where it happens).\n\nChange-Id: I5cd60235faad9297dcbeaa2aea62a101b8e20e89\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": "98e2017cac7ca554602480fcefabbbe630a4a39b",
      "tree": "343df607f7735b57c4e066e9fbdccf0e8baca58a",
      "parents": [
        "72395bf298b7707ad9d93c3e51b57e1b8e010311"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 15:38:13 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 15:38:13 2012 -0700"
      },
      "message": "Remove the explicit dump of \"THREAD ENTRY POINTS\" from oatdump...\n\n...but ensure that the new code (which decodes references to the\nentry points in situ) gains the extra sanity checking that the\nexplicit dump had.\n\nChange-Id: I08802d6a0dc4295bf86f961b536c9adeab27396f\n"
    },
    {
      "commit": "5b17d08be8f9508ead25891c4d3e707f9dddfbc5",
      "tree": "7ff4d953cc0ec18761e318d3e23afbc4b1397bc9",
      "parents": [
        "4ba528faea217d7fc2b858cf878f6f4d8c6173d2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 23 16:57:28 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 23 16:57:28 2012 -0700"
      },
      "message": "Include stack sizes and address ranges in the SIGQUIT output.\n\nChange-Id: Idf96c5ccc6e33c8d58e8c05f830a41d7ef54a941\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": "c8dc101f8e89feb588de3326bd9be0b84228ca2a",
      "tree": "22a62a4fa08fcada514f6d6f4497dcef5a2221e5",
      "parents": [
        "8cfa88200fcae8dd0a9c4d3cadffc9284985c771"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Thu Apr 19 07:03:33 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Apr 21 15:08:42 2012 -0700"
      },
      "message": "Use dex_pc instead of line_number.\n\nChange-Id: I3759319562428bccabccc66d7afd691682ecca55\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": "174651dea03956e160a2cff0d842954823c49134",
      "tree": "cee1f154612afe918a0640ee8aa33644b604c039",
      "parents": [
        "640529bdc78deaeb8d1f3e95da90f9eb5ce9806d"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 19 15:27:22 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 19 16:01:28 2012 -0700"
      },
      "message": "Fixed x86 division and modulus and merged their entry points.\n\nAlso enabled compilation of fill-array-data instructions in x86\n(untested), and improved x86 disassembly.\n\nChange-Id: Ia3d8d0766080d01f1c228f9283085024cadd528b\n"
    },
    {
      "commit": "4c5231d2cd83536584f7f1063d0afffa124fcec4",
      "tree": "73287cf769bd5214812be6da87e33809818198f2",
      "parents": [
        "a7e6cb4efd9384ac1520976f2d620c72bb08b758"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 18 16:54:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 18 16:54:31 2012 -0700"
      },
      "message": "Work around a Mac OS libc bug.\n\nIf you\u0027re dismantling the alternate signal stack the ss_size field should be\nignored, but isn\u0027t on Mac OS.\n\nChange-Id: Id6e93ed5089e375f0bd84a68efee36c34462cdf0\n"
    },
    {
      "commit": "36ecb789775eb5bd284ce5dd35d2e31e42354f24",
      "tree": "5265dd2a4cf859a2e5cee4b59197dfc3f4099e33",
      "parents": [
        "2acf36d8cfeb5ddb293904148aa70f25ef6d8845"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 17 16:55:45 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 17 16:55:45 2012 -0700"
      },
      "message": "Fix stack overflow handling.\n\nChange-Id: I829001fdf52d33fdeac599ba9225e9f8a40b7881\n"
    },
    {
      "commit": "2acf36d8cfeb5ddb293904148aa70f25ef6d8845",
      "tree": "5c62c963b8f46dadee9ab24a0264603dacd42fad",
      "parents": [
        "d8af1592a97f7447ecf93f85098cb36340ab0fe2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 17 13:30:13 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 17 13:30:13 2012 -0700"
      },
      "message": "Don\u0027t rely on transitive #includes.\n\nChange-Id: I76af535da581002b7c5315d432e5c19db62a86eb\n"
    },
    {
      "commit": "d8af1592a97f7447ecf93f85098cb36340ab0fe2",
      "tree": "3dd133bce3d71626a9662e6e44bafe80167b06fe",
      "parents": [
        "99250ba6a2cc72b8894dffa77c1fca5570087e3c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 20:40:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 17 13:11:30 2012 -0700"
      },
      "message": "Use an alternate signal stack for the unexpected signals on the host.\n\nThis lets us report native stack overflow somewhat sensibly.\n\nChange-Id: I841c285b2481aecc6edb0800f385ccc5665067ff\n"
    },
    {
      "commit": "99250ba6a2cc72b8894dffa77c1fca5570087e3c",
      "tree": "14f2ae6f7a229ed1c12d039a0dbf09e81f28afa5",
      "parents": [
        "a093362689f39f9c59a6e06782e028d2ddfe24bc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 17 11:09:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 17 11:09:17 2012 -0700"
      },
      "message": "Fix Mac build.\n\nChange-Id: I290a782268af1171de971331e85661d68eebb2a6\n"
    },
    {
      "commit": "6e94f144e2d41c75c17c11f41ee8daba3455980b",
      "tree": "dbf12b488676c3208447795da00060a3279740d4",
      "parents": [
        "53d160d2bf4ae21fa524b7476da1feab8f1b819c"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Apr 16 18:14:14 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Apr 16 18:39:47 2012 -0700"
      },
      "message": "Fix LLVM runtime failures.\n\nChange-Id: I39b35696687e00f7c3153b65fd49d741ce4625d0\n"
    },
    {
      "commit": "3ea0f42467790809fcfc9fc861605d465808090f",
      "tree": "a82b6c09bdc3819fc2da571a631401b5973888f2",
      "parents": [
        "4047efcc2fd4147a044a799400851a3bc470b738"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 17:01:43 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 17:01:43 2012 -0700"
      },
      "message": "Make failures caused by unimplemented entry points much clearer.\n\nBefore:\n\n  F 32344 32344 runtime_linux.cc:183] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n  F 32344 32344 runtime_linux.cc:183] Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) fault addr (nil)\n  F 32344 32344 libartd.so:-1] \t#00 ??+0x3adc15 [0x5592ac15]\n  F 32344 32344 libartd.so:-1] \t#01 ??+0x3ae5b9 [0x5592b5b9]\n  F 32344 32344 ??:-1] \t#02 [0x55573410]\n  F 32344 32344 libartd.so:-1] \t#03 ??+0x24cb86 [0x557c9b86]\n  F 32344 32344 libartd.so:-1] \t#04 ??+0x24d0c3 [0x557ca0c3]\n  F 32344 32344 libartd.so:-1] \t#05 art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+0x48 [0x557d76e8]\n  F 32344 32344 libartd.so:-1] \t#06 art::CheckJNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+0xce [0x556e5cee]\n  F 32344 32344 oatexecd:-1] \t#07 _JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+0x29 [0x8085739]\n  F 32344 32344 oatexecd:-1] \t#08 ?? [0x8073c35]\n  F 32344 32344 oatexecd:-1] \t#09 ?? [0x8073fd7]\n  F 32344 32344 libc.so.6:-1] \t#10 __libc_start_main()+0xe6 [0x55afcbd6]\n  F 32344 32344 oatexecd:-1] \t#11 ?? [0x8071fc1]\n\nAfter:\n\n  F  5527  5527 thread.cc:81] void art::UnimplementedEntryPoint() unimplemented\n  F  5527  5527 runtime.cc:160] Runtime aborting...\n  F  5527  5527 runtime.cc:160] \"main\" prio\u003d5 tid\u003d1 Runnable\n  F  5527  5527 runtime.cc:160]   | group\u003d\"main\" sCount\u003d0 dsCount\u003d0 obj\u003d0x6121e928 self\u003d0x8c0c618\n  F  5527  5527 runtime.cc:160]   | sysTid\u003d5527 nice\u003d0 sched\u003d0/0 cgrp\u003ddefault handle\u003d1439185696\n  F  5527  5527 runtime.cc:160]   | schedstat\u003d( 66360090 54151 15 ) utm\u003d6 stm\u003d0 core\u003d20 HZ\u003d100\n  F  5527  5527 runtime.cc:160]   at java.lang.Math.ceil(Native method)\n  F  5527  5527 runtime.cc:160]   at java.lang.RealToString.longDigitGenerator(RealToString.java:269)\n  F  5527  5527 runtime.cc:160]   at java.lang.RealToString.convertDouble(RealToString.java:111)\n  F  5527  5527 runtime.cc:160]   at java.lang.RealToString.doubleToString(RealToString.java:59)\n  F  5527  5527 runtime.cc:160]   at java.lang.Double.toString(Double.java:317)\n  F  5527  5527 runtime.cc:160]   at java.lang.String.valueOf(String.java:1676)\n  F  5527  5527 runtime.cc:160]   at java.io.PrintStream.println(PrintStream.java:479)\n  F  5527  5527 runtime.cc:160]   at ReflectionTest.testFieldReflection(ReflectionTest.java:40)\n  F  5527  5527 runtime.cc:160]   at ReflectionTest.main(ReflectionTest.java:269)\n  F  5527  5527 runtime.cc:160]\n  F  5527  5527 libartd.so:-1] \t#00 ??+0x3adcb5 [0x5592acb5]\n  F  5527  5527 libartd.so:-1] \t#01 art::Runtime::Abort(char const*, int)+0x99 [0x558a1439]\n  F  5527  5527 libartd.so:-1] \t#02 art::LogMessage::~LogMessage()+0x3d0 [0x557dc060]\n  F  5527  5527 libartd.so:-1] \t#03 ??+0x33f644 [0x558bc644]\n  F  5527  5527 ??:-1] \t#04 [0x60735b9a]\n  F  5527  5527 libartd.so:-1] \t#05 ??+0x24cb86 [0x557c9b86]\n  F  5527  5527 libartd.so:-1] \t#06 ??+0x24d0c3 [0x557ca0c3]\n  F  5527  5527 libartd.so:-1] \t#07 art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+0x48 [0x557d76e8]\n  F  5527  5527 libartd.so:-1] \t#08 art::CheckJNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+0xce [0x556e5cee]\n  F  5527  5527 oatexecd:-1] \t#09 _JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+0x29 [0x8085739]\n  F  5527  5527 oatexecd:-1] \t#10 ?? [0x8073c35]\n  F  5527  5527 oatexecd:-1] \t#11 ?? [0x8073fd7]\n  F  5527  5527 libc.so.6:-1] \t#12 __libc_start_main()+0xe6 [0x55afcbd6]\n  F  5527  5527 oatexecd:-1] \t#13 ?? [0x8071fc1]\n\nChange-Id: Id55f10f910ace94de3c985fabfd9a0fe15c3c8bf\n"
    },
    {
      "commit": "6414a97a3c6dc101ae8ebc9480114d0c327e8e8d",
      "tree": "23163e12928771d37c6156fd4bf31900793ce02f",
      "parents": [
        "d668a06b5dcc3b0f7f788da4d756cd4ee6f1d0fa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Apr 14 14:20:04 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Apr 15 17:58:26 2012 -0700"
      },
      "message": "Add additional stack space to account for the dalvik native stack size\n\nChange-Id: Iede575cf5b2185f374c0617208e924cc88cdba6c\n"
    },
    {
      "commit": "776ac1fa61237db645adb4370a4aab888530caf4",
      "tree": "fbdfe1dec5f1c890d479f700f2b11549d5574119",
      "parents": [
        "42f302c1da4cf1abf935d7aee29ece8d90441e0c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 13 23:36:36 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:38:06 2012 -0700"
      },
      "message": "Separate out more of LLVM build. Move verifier.\n\nMove the verifier to its own directory and break out major components.\nAvoid compiling unused files as part of the LLVM build, increase the use\nof unimplemented for LLVM.\n\nChange-Id: Icd3b1708363fb70ae99417d06ef8669d60446533\n"
    },
    {
      "commit": "8a8b9cbe158ee13477f2381f164c519762a06fef",
      "tree": "df162a67ab78e40f8baf515f5d7bd18de1f368c4",
      "parents": [
        "e5eb1914de86129d78e965fb9f2e1bfb2aa68640"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 13 18:29:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 13 18:29:22 2012 -0700"
      },
      "message": "Improved OOME detail messages.\n\nExample (from logcat):\n\n  Throwing OutOfMemoryError \"Failed to allocate a 1036-byte byte[] (143176 total bytes free; largest possible contiguous allocation 976 bytes)\"\n\nChange-Id: I4c83cafef775aa0590613f26080981eae5ce7da4\n"
    },
    {
      "commit": "f24d3cedd395690f6904aaac80f84a100420f7a3",
      "tree": "1867ff0b6f3bebb4f611eaf72b05b14843c55d93",
      "parents": [
        "14fe6aea00598ba5d40d3e5bfa62f26a1c8cfdff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 11 17:43:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 11 17:43:37 2012 -0700"
      },
      "message": "Enforce the use of accessors on JValue so we can ensure sign extension.\n\nChange-Id: I34810af7661d8674c84707afe5cfdf9e2c233f8b\n"
    },
    {
      "commit": "3d71d0799748aac23ce5935d61b909bec6e96461",
      "tree": "e9df4425b3f6aeb889c0e30d0a54fb667b8a70ea",
      "parents": [
        "836eb8086a58cefb2cd7c31df86ac071f80f0fda"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 10 18:28:35 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 10 18:28:35 2012 -0700"
      },
      "message": "Improve ARM disassembler to cope with JNI stubs.\n\nAlso decode r9-relative loads/stores, and add the Thread::state_ offset.\n\nAlso lose the implicit \u0027s\u0027 on the test instructions, and don\u0027t show the\ndestination register for those instructions, since they don\u0027t use it.\n\nExamples:\n\n            0x60cdd718: e599c060    ldr     r12, [r9, #96]  ; top_sirt_\n\n            0x60cdd754: e589c06c    str     r12, [r9, #108]  ; state_\n\n            0x60cdd760: e35c0000    cmp     r12, #0\n\n            0x60cdd7c4: 1a00000b    bne     44 (0x60cdd7f8)\n\n            0x60cdd814: e1200070    bkpt    #0\n\nChange-Id: I4afa9f47267daefded46211d62718fd7fb87cf97\n"
    },
    {
      "commit": "28fa76d17d741238da86dbdb47f721ae97c9eac8",
      "tree": "de34f96fbbda6d650db267bd595a20191b9a07cf",
      "parents": [
        "82914b6164fd0109531391975389e4f0ff6832c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 17:31:46 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 17:59:35 2012 -0700"
      },
      "message": "A dirty (but useful) hack to decode thread offsets in disassembly.\n\nPlus more readable x86 formatting.\n\nAlso fix a bug decoding LDR (immediate, Thumb) encoding T1.\n\nChange-Id: I95c79d3fb4d912d1ef386b5843abd37d3652a476\n"
    },
    {
      "commit": "34e069606d6f1698cd3c33b39e72b79ae27e1c7b",
      "tree": "0feb7e9bde6cfe01c0df3ef2d8de3210570f7ce2",
      "parents": [
        "e62934d85fbc2d935afdad57eeade39ecbd7440a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "message": "Remove the useless \"suspend count already zero\" message for new threads.\n\nWe can actually detect the expected case of this warning ourselves, and\nnot emit it. Then we can upgrade the WARNING to a FATAL.\n\nI also tripped over the fact that the operator\u003c\u003c for Thread::State was out\nof date, so I\u0027ve moved the Thread enums up to namespace scope so the script\ncan automatically generate correct operator\u003c\u003c implementations for us. (All\nthe high-numbered thread states have been off by one for a couple of weeks.)\n\nChange-Id: I5de573d33d641e5a3cba87b370e9620c8c66e633\n"
    },
    {
      "commit": "e62934d85fbc2d935afdad57eeade39ecbd7440a",
      "tree": "4792b15a3e58728d85adeed068d08d7e0dbfb67f",
      "parents": [
        "b0aa9d313b2cc36a0b6420266131631bee2da807"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 11:24:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 11:26:39 2012 -0700"
      },
      "message": "Like Mutex, failure to destroy a ConditionVariable on shutdown is a special case.\n\nChange-Id: Id9b710a4676169abab5eabb0603947e599012be3\n"
    },
    {
      "commit": "9c750f9b6283f62b3e6a93c0c6b2838abde5000e",
      "tree": "ba9d030321e0528a18159e74e23a6b65218b2555",
      "parents": [
        "c8eeb9b283d5053c1b1092363320646dc7c0deab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 05 12:07:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 05 12:07:59 2012 -0700"
      },
      "message": "Ensure we don\u0027t AddLocalReference a bogus value when returning to native code from an upcall that threw.\n\nAlso add a few missing CHECKs.\n\nChange-Id: Icf29506b258a2177b5e80c75cd2710761431ba4b\n"
    },
    {
      "commit": "0791adc2249366c50684935a4c42ba5e58bc3746",
      "tree": "bc667e81a3528952ad144da7e181189eb9804727",
      "parents": [
        "540a5b768bf5f76bd71ebf66612fb2298899480f"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 04 11:14:32 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 04 11:26:11 2012 -0700"
      },
      "message": "Fix method tracing and allow alloc counting during tracing.\n\nForcing alignment on art_trace_exit_from_code was preventing the LR of\nprofiled frames from matching. Also, the merge of the different types of\nstalk walks introduced a small bug.\n\nThe metrod tracer now also supports the TRACE_COUNT_ALLOCS flag to count\nallocations during method tracing.\n\nChange-Id: Ief9e4612471a134a90eabf15432135162b633b92\n"
    },
    {
      "commit": "540a5b768bf5f76bd71ebf66612fb2298899480f",
      "tree": "fcba13f1694e25289f0dc79e6c097c03e65e386e",
      "parents": [
        "4165a83d250165c839850651e1b2a69e06128000"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Tue Apr 03 18:56:08 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Apr 04 00:42:30 2012 -0700"
      },
      "message": "Compiler_LLVM doesn\u0027t use reference map.\n\nAlso, for runtime_support_llvm, we fix the throw_exception_from_code bug.\n\nCompiler LLVM haven\u0027t done the write barrier, so we need to scan image space.\n\nChange-Id: I2be8b5fb1cf2a677d90f568480e58c10b315f42d\n"
    },
    {
      "commit": "20efe54063f2740d16f01190b280cdba384c869b",
      "tree": "271e06250a2f738901c632bdca91dd4d8dcc52eb",
      "parents": [
        "64f884de66d0eb888a215e276f9b10ade0690413"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Tue Apr 03 17:40:49 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 03 23:27:29 2012 -0700"
      },
      "message": "Fix the GetCurrentMethod bug.\n\nChange-Id: I1f28dd991ed209afe42d785887bc15344baa4526\n"
    },
    {
      "commit": "17057b15cb8d8da97b2bc28fd38bdcc7a34e846e",
      "tree": "68112562cc3bece94ac075c918bdb1f91bce96ee",
      "parents": [
        "c5f40bf576e2acc148366b84a22842f321290aab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 10:22:39 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 10:22:39 2012 -0700"
      },
      "message": "Fix shutdown when the current thread has been manually detached.\n\nChange-Id: I76990a88c31ff671c13e1e1a90710749911d185c\n"
    },
    {
      "commit": "3db5285b363553ea81bd8dd88ec448b66cf33d71",
      "tree": "a077922e6fe93d197dffc5ef196446e12e9fe1e4",
      "parents": [
        "2d7d319eb9161a6520709e33eaaa4fbb038d3019"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 01 15:11:43 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Apr 01 21:35:39 2012 -0700"
      },
      "message": "Don\u0027t check gcmap while using LLVM compiler.\n\nChange-Id: If7b7113e3dd20b42b34cde1267cfe80e9122845b\n"
    },
    {
      "commit": "ee0d3fb2fbd736484fe8c3177a4e965ea86d1c65",
      "tree": "ea4c94a803007cb51faca6b520073e95d9f5de1a",
      "parents": [
        "f058c0fc5c32b45620d8e3ddc2758faf3be22a2c"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 01 14:55:33 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Apr 01 18:25:21 2012 -0700"
      },
      "message": "LLVM doesn\u0027t use Frame.\n\nChange-Id: I34200a874739598c33cc8fe17db4f70d29073310\n"
    },
    {
      "commit": "0045a290e6b79a274250e3112880c04bde437d4a",
      "tree": "a125d556b6c817218b14f6f3f72079b83d0032c4",
      "parents": [
        "d23f5206cf72ca3fb53ac3049649bb7d018232bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 31 21:08:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 31 22:38:22 2012 -0700"
      },
      "message": "Avoid a case of eager initialization.\n\nDon\u0027t mark as initialized classes that contain static field\ninitialization.\n\nChange-Id: Iedcabbdf355e8861eb7731650eee1467f68ae0cd\n"
    },
    {
      "commit": "b5db3bb5b17f2bb42f3c62408938f4bf939f8a39",
      "tree": "c807681e5c5bab85d858bda8ce31b391131f5740",
      "parents": [
        "630e77d4648093ce9870c7558d78edea24eab06d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 29 20:00:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 29 20:00:31 2012 -0700"
      },
      "message": "Include more detail in a few CHECKs.\n\nChange-Id: Ie8142ebb8c353bcbca27708bf662f21018c2c915\n"
    },
    {
      "commit": "57b86d47b66322693a070185fadfb43cb9c12eab",
      "tree": "81d53304a63a660a683917a19f7dd83723a397ad",
      "parents": [
        "68aefb06c449df0bd8a34f3491f7594ee3f9dd0b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 27 16:05:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 29 11:51:44 2012 -0700"
      },
      "message": "Refactor runtime support.\n\nChange-Id: Id7470a4105838150d5ceb73ab2c8c83e739660df\n"
    },
    {
      "commit": "534da072d3db3beecbd74e5aa23d630d73695f2c",
      "tree": "7967a15e2a3963d02fd0853e0d3c1941db4c635e",
      "parents": [
        "22869a9026a08b544eca4cefd67386d347e30d2c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 15:17:42 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 15:17:42 2012 -0700"
      },
      "message": "Reinstate code accidentally removed while moving it from ThreadList to Thread.\n\nChange-Id: I640741a4a64bccb408ac8c053a3538588fa9a8e1\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": "ab7b9dcbfc4264a0bc4889c3e463ff88a67f6a30",
      "tree": "bc178657f840f31aeeb5ddf049c63b5091342d0b",
      "parents": [
        "0e6b28ca17396ce3fb6137391b1c30c34fde7fde"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 13:16:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 13:16:29 2012 -0700"
      },
      "message": "Actually track the JNI MonitorEnter/MonitorExit calls.\n\nAlso log if we do end up having to clean up behind a detaching thread.\n\nAlso add a few missing \"static\"s.\n\nChange-Id: I4ba1734b04b9a6dde112f3693a6dd171b42cd69c\n"
    },
    {
      "commit": "02f01fedc5180d1d5a795674f8c5bd0a3ce974d2",
      "tree": "a7984e631466aa39943082a771043b36855a0bde",
      "parents": [
        "b4669208ee02f16c198eb21332701b6a0c5af278"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 12:58:11 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 21:13:11 2012 -0700"
      },
      "message": "Fix exception_test for (USE_LLVM_COMPILER) build.\n\nFinally tdy\u0027s patch marks the passing of all gtests on host.\n\n(cherry picked from commit daadfea12645ffafefa1c7debe1178ffc0db1148)\n\nChange-Id: I73ad33cba74d728716cee3656cd76b4be6febe1e\n"
    },
    {
      "commit": "9b2ba2ee9fafe46a08473657a2387fd20ab49a35",
      "tree": "fd2fd68fac377d3c342f511f5cc20fdaed94b75c",
      "parents": [
        "31a9933bfe68ef1241c74c6586b3bc259a0244ea"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Mon Mar 19 10:12:32 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 21:07:56 2012 -0700"
      },
      "message": "Implement LLVM version of stack walking. Fix Jni_Compiler tests.\n\nThread.cc has many visitors such as CatchBlockStackVisitor and\nReferenceMapVisitor that assume non-LLVM stack layout. LLVM version\u0027s\nexception handling and gc have no use of those. Per Ian\u0027s suggestion,\nthis LLVM CL relies on ShadowFrame to implement stack walking. And\nwe use the same Frame class in LLVM version. Result: The Thread.cc\nruntime is common across LLVM and non-LLVM compilers, except for\nWalkStack utility in Thread.cc.\n\nKey: LLVM\u0027s Frame has its (only) field point to the method* in the\nShadowFrame. With this, we finally pass all the jni_compiler tests.\n\n(cherry picked from commit aa4923361d850f8094a546e84ec18672ebbb19fb)\n\nConflicts:\n\n\tsrc/stack.cc\n\nChange-Id: I77098ee5fa7b16cb7e21c0de667e3d7ca5be256f\n"
    },
    {
      "commit": "28f1a147d77ec772db98bed890b50a9ddcff2365",
      "tree": "bebca04cea429109260854778da197ae594450d7",
      "parents": [
        "1cb0ae742072b5ea2c7f677e6ad220ba01255dae"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Thu Mar 15 21:51:52 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 20:53:38 2012 -0700"
      },
      "message": "Implement LLVM version of jni_compiler to pass 17 jni_compiler tests.\n\nBecause we now have both shadow_frame and sirt (which is just for SirtRef\u003c\u003e\nin the LLVM version), we define a new function NumStackReferences() as follows:\n  NumStackReferences() \u003d NumSirtReferences() + NumShadowFrameReferences().\n\n(cherry picked from commit 18fe89a14d212da9ec6841f4d19d08482a9610b7)\n\nChange-Id: Idd95ee4276801b1555be87934cd9c4f33ab8a88a\n"
    },
    {
      "commit": "f7ad17e108b9357d7c94c6218a8521140a667f3d",
      "tree": "79ab38c8ff414cd3ccd81782b14de88406f761be",
      "parents": [
        "eeb7edf786abf6dbcfc37964af8854caafda6b0b"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Mar 15 03:10:03 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 20:49:44 2012 -0700"
      },
      "message": "Split shadow stack from SIRT.\n\n(cherry picked from commit 4455f868a9a6553827ccbe1d25e29cf528a74422)\n\nChange-Id: I4f467cf5be812c600dc5fdb56a9236fe144bd380\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": "fc9e6fabed89d948fa8c0e9d673e430076712c60",
      "tree": "12e01ab3a937729d9482ab7fded1f1e0ab73dbd7",
      "parents": [
        "67d920071fe4a0aa8b8bc339e93b18276238c320"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 23 15:14:29 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 26 16:06:01 2012 -0700"
      },
      "message": "Compiler intrinsics\n\nAdd intrinsic support.  Some of these appear to be of\nlimited value, so we may end up removing a few.  In general,\nthe instrinsics provide small, but measurable, gains.\n\nOnly Arm is currently supported, but most of these should\nwork for our other targets as well.\n\nThis is an interim solution.  My plan is to the intrinsic\nrecognition action up into the basic block building phase once\nwe start doing inlining.\n\nChange-Id: Ia2913f2cdecaa4e80469caf69dbf8e2f61d4506a\n"
    },
    {
      "commit": "c0f0933249cf516b37717faa766e1e9808f7c1f8",
      "tree": "04aedbf3e8502637673b82cf181dfab1b5aca1a6",
      "parents": [
        "942df41c03ddb9f7b47a34fcfc4414d8b8ca8ce1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 13:27:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 13:27:06 2012 -0700"
      },
      "message": "Add the missing link between compiled code and the debugger.\n\nWhen a debugger connects and disconnects, we now let compiled code know that we\nneed to be kept informed about what\u0027s going on.\n\nAlso fix a threading bug when threads exit with a debugger attached.\n\nAlso some minor tidying, mostly involving naming.\n\nChange-Id: Iba0e8b9d192ac76ba1cd29a8b1e6d94f6f20dea8\n"
    },
    {
      "commit": "462c94449720e0dc6b93d7138d835d345ccf67ae",
      "tree": "e719ceab0e64e0cc2ca4acb6ee715623ab458215",
      "parents": [
        "81ff3184e7eb8de4605c7646674ea4f9fa29b5f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 18:47:50 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 08:42:04 2012 -0700"
      },
      "message": "Fix AttachCurrentThread to use the right thread group.\n\nChange-Id: I9818845c005563d894a571edc4f9be9862312380\n"
    },
    {
      "commit": "81ff3184e7eb8de4605c7646674ea4f9fa29b5f3",
      "tree": "eaf443fcc575d3a793af3ab3e435211981a1c1b1",
      "parents": [
        "5147733292cd0b80ca7da3099e43cc549d67526b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 20:35:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 08:38:34 2012 -0700"
      },
      "message": "Nomenclature improvements.\n\nChange-Id: I809ab04b6ee74bb8141791e1f3f5d7e3f4efb61c\n"
    },
    {
      "commit": "e66ac79b90a12b01b9d67ee9f7f586e638e67fab",
      "tree": "aec673a015a0b6ef3107a2612b2dc455ea163561",
      "parents": [
        "250455229aa0cc07bbd18174efe510bd52631a99"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 19 16:08:46 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 23 16:53:08 2012 -0700"
      },
      "message": "Fix to use a new context when verifying the stack.\n\n(cherry picked from commit 19ff5e52f1409838a505c7f63fd57604c3b48fb3)\n\nChange-Id: I45e8cc09a81d41b250a4496e2d010746b208a715\n"
    },
    {
      "commit": "250455229aa0cc07bbd18174efe510bd52631a99",
      "tree": "1499cfc216d6092057a4c4bf996c2ce1a2c360ca",
      "parents": [
        "eb5701498830a406e957d11481296eb11734e850"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 13 19:34:37 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 23 16:49:39 2012 -0700"
      },
      "message": "Added option to allow verification of objects on the stack.\n\nCurrently it\u0027s defined out by VERIFY_OBJECT_ENABLED. Also made various\nfixes to allow heap object verification to work again.\n\n(cherry picked from commit d4983495782be8d54c9c1f0266dc52395b947724)\n\nChange-Id: Icd625e1e0dc240c0ad1d10e2c58c7d5d63fec030\n"
    },
    {
      "commit": "c6f3bb87ffbb44d902c4a1f67a71bb108bd01560",
      "tree": "c423db1d6e7914e57559ab5a4325094e6f1ea5c0",
      "parents": [
        "e5b7894351ecc5ef99442eea0700c913178c95ce"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 21 20:40:33 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 21 20:41:16 2012 -0700"
      },
      "message": "Further x86 progress and image creation.\n\nChange-Id: Idafadfc55228541536f25d2c92d40d9e0510b602\n"
    },
    {
      "commit": "b3ab25b58945f1bd22da1be2eb49dc3eb121011e",
      "tree": "e17de76e6be5e2b1bbeea8c66cecc782bc7fb417",
      "parents": [
        "19daac61b9e73c0c805538e77f6e75ef273caa0f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 19 01:12:01 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 19 08:39:59 2012 -0700"
      },
      "message": "Enable compiler_test on host.\n\nChange-Id: I67a745ba78567af6c967cc44cd9c9640ef5ba398\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": "77405796564c6c1353807cda18b28678a719bd68",
      "tree": "948781c769760d71c7aff4e8db57aa5a9e311372",
      "parents": [
        "f8bbb8448c733e9e3ad43aad69774c37888329b1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 15:22:12 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 15:46:59 2012 -0700"
      },
      "message": "Rewrite the invoke stubs to use JValue[]s.\n\nThe tests were only testing the static stubs, so extend the tests to include\nnon-static stubs too.\n\nAlso add just enough of an ARM disassembler to disassemble the invoke stubs.\n\nChange-Id: If71dfb66b8b8188f9d871914f0eaf1013c9993b9\n"
    },
    {
      "commit": "f8bbb8448c733e9e3ad43aad69774c37888329b1",
      "tree": "b0f488b0d95c1fe79bc0473e4a98670ceb905139",
      "parents": [
        "98d39884f64d13aada5e716bb38e2f069c7ad0a7"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 14 03:01:42 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 15 03:30:20 2012 -0700"
      },
      "message": "Add code size to oat files\n\nChange-Id: Ic2519551864dd7090ba98f2fc92318f95f92947f\n"
    },
    {
      "commit": "530fa005e2944d3b12712f80d974f0e753f568ef",
      "tree": "0a98404cd017ee5dc1c717039d5caad02fd38f18",
      "parents": [
        "4d26534f6a65d7af89cc32da8fbc32beed693201"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 12 11:44:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 12 11:44:49 2012 -0700"
      },
      "message": "Give WalkStack\u0027s callback a way to terminate early.\n\nAlso combine WalkStack and WalkStackUntilUpcall.\n\nChange-Id: Ida25665de72e5fd8e17946886a387b27cf841457\n"
    },
    {
      "commit": "0ece7b950dc5821e79c930acf31fb7e73c570849",
      "tree": "ce4006468c5ea8b068055b5f770b058477e35a25",
      "parents": [
        "e663a5b5b218deae32de739d89f888ceeeba65df"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 18:14:40 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Mar 10 09:51:21 2012 -0800"
      },
      "message": "Remove an unnecessary \"art\" prefix on functions in the art namespace.\n\nChange-Id: I160bc78ef9000364f657a9972dd8c648ca2f53aa\n"
    },
    {
      "commit": "b3bd5f07884f5a1f2b84224363b1372d7c28d447",
      "tree": "6e2997ab64b4a4f32d7ef539a4649adc736ea553",
      "parents": [
        "ddbd01ac1660d57416879d5a576482f1048dde64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 08 21:05:27 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:37:46 2012 -0800"
      },
      "message": "Refactor the compilers out of libart.\n\nThis builds three separate compilers and dynamically links with the right one\nat runtime.\n\nChange-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b\n"
    },
    {
      "commit": "a433b2e8edf91c8124abd8eb5b3bd558a40fc987",
      "tree": "d0c6b2cd101ed66897193ac03f4738d6a7473da3",
      "parents": [
        "f5a9d80f6afaf714c1afeaf2e869ff194aa2556a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 09 08:40:33 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 09 08:59:48 2012 -0800"
      },
      "message": "Tidy MIPS floating point helpers.\n\nFix initialization bug in thread.cc.\n\nChange-Id: Ibdc81d6f5c8b1a245044bf901003179167a5d4f1\n"
    },
    {
      "commit": "9a8a8889418e09bf2d4ae3f683fbb40a71c3c8f4",
      "tree": "706ce6181dfd046845a82d60b3b66ee7270131d3",
      "parents": [
        "680b1bdd7e5d112ba4b95d6c81a43b65119b3b9c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 08 02:30:55 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 08 02:30:55 2012 -0800"
      },
      "message": "Disable virtual call sharpening.\n\nA regression in voice search was seen. Disable for now. Add a few\nassertions to aid future diagnostics.\n\nChange-Id: I635b1126b3e45293489b6b7ad54d838773ae7030\n"
    },
    {
      "commit": "11f9d2130e938511efceb6d2a4793cee7dfdde35",
      "tree": "cf6a63ad64a66c5ee225c789adc15ba4962d526c",
      "parents": [
        "e8267506ac2d64351e21ce90e8643b9247e1803c"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 03 20:03:18 2012 -0800"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 03 20:03:18 2012 -0800"
      },
      "message": "Mips portable floating point support\n\nFleshing out the portable floating point.\n\nChange-Id: Ie7a6dcb168a4eb2a61a52e6d747da4118d54f3aa\n"
    },
    {
      "commit": "a4060e5fe4729fa30bde965efc35779690478fa4",
      "tree": "c1689d50ddc3914c64d53ca345157702cdd4e661",
      "parents": [
        "1f729aac2e3a4924d09cdb1a17f72ee2e22745b4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 02 16:51:35 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 02 16:51:35 2012 -0800"
      },
      "message": "Fix a deadlock caused by my big threading change yesterday.\n\nAlso add even more locking diagnostics that catch this class of error and\nexplain what you\u0027ve done in clear terms. In this case:\n\n03-02 16:42:46.040 20768 20785 E art     : holding ThreadListLock while doing condition variable wait on ThreadSuspendCountLock\n...\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #01  pc 00149e5f  /system/lib/libartd.so (art::Runtime::Abort(char const*, int)+338)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #02  pc 00113c0b  /system/lib/libartd.so (art::LogMessage::~LogMessage()+1026)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #03  pc 0015a723  /system/lib/libartd.so (art::Thread::CheckSafeToWait(art::MutexRank)+290)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #04  pc 0012481f  /system/lib/libartd.so (art::ConditionVariable::Wait(art::Mutex\u0026)+26)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #05  pc 001631fb  /system/lib/libartd.so (art::ThreadList::FullSuspendCheck(art::Thread*)+154)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #06  pc 00159ffd  /system/lib/libartd.so (art::Thread::SetState(art::Thread::State)+128)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #07  pc 00161bb5  /system/lib/libartd.so (art::ScopedThreadListLock::ScopedThreadListLock()+64)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #08  pc 00164a31  /system/lib/libartd.so (art::ThreadList::Unregister()+92)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #09  pc 0015e537  /system/lib/libartd.so (art::Thread::CreateCallback(void*)+230)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #10  pc 00013b08  /system/lib/libc.so (__thread_entry+48)\n03-02 16:42:46.493 23421 23421 I DEBUG   :     #11  pc 0001363c  /system/lib/libc.so (pthread_create+180)\n\nChange-Id: I9cdb770e766f63359ab7d11ee1993dd7a6fc1c90\n"
    },
    {
      "commit": "ffb465f23d9549dd591e6aa62e9250523cb00233",
      "tree": "2108ba79a4ec8031faa56ef0806f93bc2217c237",
      "parents": [
        "71ac99485e79ad7eb1ba3ea2d404d53bb5784c13"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 18:46:05 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 21:15:36 2012 -0800"
      },
      "message": "libcorkscrew native stacks, mutex ranking, and better ScopedThreadListLock.\n\nThis change uses libcorkscrew to show native stacks for threads in kNative or,\nunlike dalvikvm, kVmWait --- working on the runtime directly I\u0027ve found it\nsomewhat useful to be able to see _which_ internal resource we\u0027re waiting on.\nWe can always take that back out (or make it oatexecd-only) if it turns out to\nbe too noisy/confusing for app developers.\n\nThis change also lets us rank mutexes and enforce -- in oatexecd -- that you\ntake locks in a specific order.\n\nBoth of these helped me test the third novelty: removing the heap locking from\nScopedThreadListLock. I\u0027ve manually inspected all the callers and added a\nScopedHeapLock where I think one is necessary. In manual testing, this makes\njdb a lot less prone to locking us up. There still seems to be a problem with\nthe JDWP VirtualMachine.Resume command, but I\u0027ll look at that separately. This\nis a big enough and potentially disruptive enough change already.\n\nChange-Id: Iad974358919d0e00674662dc8a69cc65878cfb5c\n"
    },
    {
      "commit": "1984651929744dd603fd082e23eacd877b9bc177",
      "tree": "ffa10973a88f0f2743f3fbfaf5e7e4235d5f262d",
      "parents": [
        "f3c01c530ab3a645bd5a980522df4d396dcbf228"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 24 11:42:47 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 27 16:08:56 2012 -0800"
      },
      "message": "Invoke static/direct dispatch change.\n\nThere was a subtle race in static/direct dispatch via the code and methods\ntable. This patch removes the table in preparation of architectures like\nx86 which will more aggressively sink loads.\n\nRemoves unused fields, code.. Brings back resolved methods table\nshort-cut and associated fast paths to use this (such as in Proxy). Adds\na resolution method that is used as the trampoline for static and direct\nmethods.\n\nAdd source file and line number to Throwable::Dump.\n\nMethodHelper knowledge of runtime methods.\n\nChange-Id: Ieae1b74c24072e6327a5bb2cad466f04e3c46c4d\n"
    },
    {
      "commit": "8be2d40d42223b515de12629216151a558895969",
      "tree": "eec01e24385066b60b93a239f65f195a232a5ddd",
      "parents": [
        "229feb7a09317919ee51c06d1c3e715cea25da75"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 23 14:22:41 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 23 14:22:41 2012 -0800"
      },
      "message": "Fix GetCurrentMethod to return the actual native PC.\n\nPreviously we were returning the PC of the caller. The \"LR\", if you prefer :-)\n\nChange-Id: I20e9816bb7b720b33e1b89a1a67740abfea35464\n"
    },
    {
      "commit": "c8b306f5221658c7e4b5516be8917dc8c9288e7e",
      "tree": "d8d3499030152361129f002e99d2b4a10d36660d",
      "parents": [
        "6c6f12d0ed64e0f4bcbb7139eca8fe564302f385"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 17 21:34:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 17 23:52:39 2012 -0800"
      },
      "message": "Run time illegal access checks on static and direct methods\n\nFixes test 075.\n\nChange-Id: I28b20451dcae8000dc0e2cb9068dfa5166659d43\n"
    },
    {
      "commit": "77f74c1455bd8d29deb8a9367cea35deb930ed10",
      "tree": "b8bd1a605f74c32473a68e93b07196a01453717a",
      "parents": [
        "6818c463c29b8ea54f4ad537ae757d70ecc4a8be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 22:35:30 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 22:35:30 2012 -0800"
      },
      "message": "Fix exception regression.\n\nChange-Id: Ibb977d16bfc31ccce9c1508bc9a240ff66c2f40c\n"
    },
    {
      "commit": "267364429db05d964c0922a8b4e49591c00bdc35",
      "tree": "748cbfd0b73858824614f67a1e06a3811639da9b",
      "parents": [
        "a004aa933a58428489e42d77f707c2b063b73747"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 16 18:24:26 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 16 18:24:26 2012 -0800"
      },
      "message": "Fix SEGV when allocation does not fail in stack trace building\n\nChange-Id: Ic01f95d4b4b90b38510c448b05d2efbac95d9c7c\n"
    },
    {
      "commit": "283ed0d9db3084d0fee46d47cd73bf84bd0cfc16",
      "tree": "41144bcf3ce1c85632696e66bf5878e163a00e0f",
      "parents": [
        "a466c161210855d9f43eb2f811dcb4654d625381"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 15:25:09 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 15:25:09 2012 -0800"
      },
      "message": "Fix SEGV when allocation fails in stack trace building\n\nChange-Id: I8f462b43a7d1f9e8ea24eae227baff50de96f394\n"
    },
    {
      "commit": "f3773f0913f8b76eee2088bfd999aaca6a50e750",
      "tree": "d9c2f8ce0736a6260d96586cbb3fcdb75430d4b2",
      "parents": [
        "a32a6fd4a781262dff4fec102da053d16b7ef6c0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 16:45:29 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 16:56:22 2012 -0800"
      },
      "message": "Move finalizer registration into managed code\n\nAlso move Object.getClass into managed code.\n\nChange-Id: If32674ac496116aaa82c461d8e6196e27fa7b591\n"
    },
    {
      "commit": "a32a6fd4a781262dff4fec102da053d16b7ef6c0",
      "tree": "5c2a35aec522902cfdf508a74898ee091c91f7ab",
      "parents": [
        "d08547a802e6dbb71fde3ed3dac9aa0b03a5b17b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 06 20:18:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 15:41:26 2012 -0800"
      },
      "message": "Runtime access checks on virtual method calls\n\nAt verification time we may not know that an illegal access or method\nnot found exception should be raised and so we defer the decision to\nruntime. When the decision is deferred we perform an appropriate slow\npath method invocation that can check for access violations.\n\nThis change also attempts to reduce code duplication, improve the\ndiagnostic information in exceptions, clean up field slow paths slightly\nand to move the slow path calls lower in the Thread class so that they\ndon\u0027t effect the offsets of data items when calls are added or removed.\n\nChange-Id: I8376b83dcd7e302cbbddf44c1a55a25687b9dcdb\n"
    },
    {
      "commit": "44b412bb795fa6999129b2bc16f5eec1ea97e8f8",
      "tree": "bf2a45463f46c506130f319b1a176b49db4d5252",
      "parents": [
        "959f8ed11ef9493a89b90a1f9a82a811dbc7ae0e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Feb 04 08:50:53 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 07 18:19:52 2012 -0800"
      },
      "message": "Codegen support for debugger\n\nAdd the ability to generate code with support for debugging.\nThis involves generating a callout to an equivalent of the\nold \"updateDebugger()\" before each Dalvik opcode, method\nentry and method exit.\n\nThe added code is fairly compact - 8 bytes per Dalvik opcode,\nplus 4 additional bytes per safe point.\n\nI dislike the idea of always making this call, so I\u0027m reusing\nthe dedicated register rSUSPEND to hold the address of the callout.\nrSUSPEND is normally used to reduce the frequency of full suspend\nchecks, but when debugging this isn\u0027t necessary - allowing\nus to resuse this register to hold the address of the callout.\nIf it is non-null we make the callout, otherwise we continue.  I refresh\nthis register from a slot in the Thread structure on method entry\nand also following the return of taken suspend checks.  In this way,\nthe debugger has the ability to control updates on a per-thread basis,\nand the performance penalty is greatly reduced for threads that don\u0027t\nhave any pending debugger requests.  Once the debugger attaches,\nit would suspend all threads, walk through the thread list, set\nthread-\u003epUpdateDebuggerFromCode to art_update_debugger and then\nturn everything loose.\n\nOne thing I\u0027m not doing, though, is debugger updates before and after\ncalls to native methods.  This is something that will have to be done\nby the stubs, because I don\u0027t know which invokes are native.  Oh, and\nthere will also need to be an artUpdateDebugger call on the exception\npath.\n\nI\u0027m passing the DalvikPC to the stub, and am using special\ncodes (-1 and -2) to denote method entry and exit.  The stub\nrecovers the current Method* and Thread* and passes them on to\nartUpdateDebugger().\n\nWhen we\u0027re compiling in this special mode, all optimizations which\nmight result in code motion or suppressed load/store of a Dalvik\nregister are turned off.  No register promotion is done, so everything\nwill be in its home location.\n\nChange-Id: Iaf66f4d0d094a1699269d0a1ad1ed33e7613aef8\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": "1bddec3a6521f16df37499754000a3b1787a52e9",
      "tree": "f605d0f642f2a62012d0f5a1bd0351afbaa8fa5a",
      "parents": [
        "223f20fa939c386c695977263780dea2195093db"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Feb 04 12:27:34 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Feb 05 03:02:00 2012 -0800"
      },
      "message": "Add access check slow paths to field accesses\n\nThis check makes the verifier, compiler and runtime agree with who\nshould perform access checks and fixes compliance for these\ninstructions.\n\nIntroduce new \"fast\" sget/sput that just get the static storage base\nfrom a method\u0027s declaring class when the static field is within the same\nclass. Saves a load and branch in the common case.\n\nFold gen routines for wide and not wide together.\n\nFix bug where sub-classes could appear intialized in the image but their\nparents were only verified.\n\nExtra debug output for test case 075.\n\nChange-Id: I934da3624ed8fa8e026b2c95d936d04b1af022ef\n"
    },
    {
      "commit": "ff7380681c50129ff689a11ac0f49512b4be7295",
      "tree": "79704a4b85026aae58c17780cd88377e8d5a3c08",
      "parents": [
        "9ada79cbe875dbcf7229b3f563303d21b0537d5f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 15:00:42 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 15:07:35 2012 -0800"
      },
      "message": "Fix a thread suspend timeout, and improve the diagnostics for thread suspend timeouts.\n\nI still needed gdb to understand this, but when we dump _native_ stacks, the\nadditional diagnostics here will be more helpful. (They\u0027re somewhat helpful\nanyway, in that they let you see the state all threads are in. Also, in a\nstarted runtime rather than the compiler, threads will have informative managed\nstacks.)\n\nAlso make the apparent duplication in the dex2oat timings clearer, and only\ninclude time spent on resolving strings if we resolved any strings.\n\nChange-Id: Icd469d9b085171ebb2dede2afb5140387cd3240c\n"
    },
    {
      "commit": "5167c97a4f672ba821453418e3943988fabbfc43",
      "tree": "7046f25582fd55e6bb4b19bb2fb7781b0d6c60a6",
      "parents": [
        "f2e08b29d3e49f491cd1c29c226154e92380c179"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 10:41:20 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 10:49:06 2012 -0800"
      },
      "message": "Improve debug-ability of native method registration\n\nIf we fail to register a native we construct a stack trace which needs\nThrowable and stack trace support. Registering Throwable\u0027s natives first\nand making Throwable a root supports this. Previously we could only\ngenerate a stack trace when thread start up was complete.\n\nChange-Id: Icc7c1657988c7f36aceb1d4f3e61e7218f55e055\n"
    },
    {
      "commit": "d9c67be7c116875d96b31e640ad47d587b205605",
      "tree": "55ba94dde3916dfb88681e4967e4a45926436716",
      "parents": [
        "763d5fb2f83d9c93b5b764533005865a3d1034e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 19:54:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 09:28:44 2012 -0800"
      },
      "message": "Start parallelizing dex2oat.\n\nThis is enough to perform type resolution and verification in parallel.\n\nThere appears to be a bug in InitCpu --- if you start enough threads\nat once, the CHECK at the end starts to fail, with self_check \u003d\u003d NULL; I\u0027ve\ncommented it out for now, but this will cause test failures until it\u0027s fixed.\n\nChange-Id: I4919682520bc01d3262c6b3d00c7bd2c2860a52e\n"
    },
    {
      "commit": "02fbef0e356ca43b2032044f870d59de4a4ae92a",
      "tree": "690f599b1b3b6446933e6ccd2d3e0a904e8cd005",
      "parents": [
        "9e94b62ecdc19eb526a4944cc17a75a81028e08a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 31 22:15:33 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 31 22:17:05 2012 -0800"
      },
      "message": "Set detail message on exceptions for unstarted runtimes.\n\nChange-Id: I7fcc9cc81ac33b1cdb322069c517bfdb31db2ac7\n"
    },
    {
      "commit": "0eb7d7e2a0c2767b5fd86bd52436c618fd4c3120",
      "tree": "a446a35a4dfc5d258bb2817b92319b2f8ea84b20",
      "parents": [
        "09cc2d39b3073ab0c613a9f660983e781693d958"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 31 21:12:32 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 31 21:14:59 2012 -0800"
      },
      "message": "Implement array allocation with access checks.\n\nChange-Id: I0b2c0274087f3f7ed5b0b71c441e5d7e5a25f819\n"
    },
    {
      "commit": "30fab40ee5a07af6b8c3b6b0e9438071695a57f4",
      "tree": "86514e3535c8b23cf52249a202076b59ac532021",
      "parents": [
        "f3778f66879fa038a7c9ebe46d5bc4167ddef7d8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 23 15:43:46 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 26 17:32:10 2012 -0800"
      },
      "message": "Upgrade to latest dlmalloc. Refactor Heap and related APIs to use STL like naming.\n\nWe fail assertions in the existing heap code, as does Dalvik. This refactoring\nis to clean the heap and space APIs and to reduce duplication of data\nand thereby solve a failing assertion in the card table.\n\nThis change also wires up clearing of soft references including before\nout-of-memory errors are reported.\n\nIn doing this change it was made clear that mspaces are buggy (and\nviolating invariants with the garbage collector). This\nchange upgrades to an un-Android molested version of dlmalloc-2.8.5 and\nimplements a version of the mspace morecore routine under ART control.\n\nrun-test 061-out-of-memory is updated for current heap sizes.\n\nChange-Id: I377e83ab2a8c78afb9b1881f03356929e2c9dc64\n"
    },
    {
      "commit": "899e789bd4741c0172268f7838ce8ab220a5f916",
      "tree": "2936efb7335a498eeaf25b479dd00ee2b9e73b8c",
      "parents": [
        "a0cb1204543934b1f4975025cd6047eb71dc6429"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 14:57:32 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 14:57:32 2012 -0800"
      },
      "message": "Include the thread name in Thread\u0027s operator\u003c\u003c output.\n\nFor example:\n\n Thread[2,tid\u003d1692,VmWait,Thread*\u003d0x416914d0,\"Signal Catcher\"]: reacting to signal 3\n\nChange-Id: I2b00e82af2ad0f09141dbf4e418bc0582e9b966d\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": "6cc332ef80edf56221676e33ea16bb4022130344",
      "tree": "29447f2aab802649e2cc6314c1ec45d5f6da5e32",
      "parents": [
        "34cf51471a40d55dd63897daf855fec8179b0f7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 20 22:59:20 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 20 22:59:20 2012 -0800"
      },
      "message": "Mac runtime fixes.\n\nThis is enough to let us run test-art-host on the Mac. The tests\nthat don\u0027t start a runtime (and thus don\u0027t try to dlopen(3)\nlibjavacore.dylib) succeed. The others fail, but I\u0027m not sure how\nthe Linux tests find libjavacore.so, so I\u0027m not sure how to fix\nthings for Mac OS.\n\nChange-Id: Idf489fc09f0a8f64fbb60dfcdbca9c3df2d4fdcb\n"
    }
  ],
  "next": "215f3144be114ac27002059330d903bf1ff5a592"
}
