)]}'
{
  "log": [
    {
      "commit": "2fa6b2e2fc3d2a2fc27808ce518dc76b80ce369a",
      "tree": "daba5f5e64409452e31ae42e3b1b6b6491ccb007",
      "parents": [
        "6ed960d260d0ec3cbbef455c646ccd47f4e78119"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 17 00:10:17 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 16:12:59 2012 -0700"
      },
      "message": "Interpreter.\n\nThe opcodes filled-new-array and packed-switch aren\u0027t implemented but\nare trivial given that they are variants of implemented opcodes.\nRefactor Field::Get routines to take the declaring class in the case of\nstatic field accesses. This avoids a check on every use of a field.\nRefactor arg array builder to be shared by JNI invokes and invocations\ninto the interpreter.\nFix benign bug in const decoding in the verifier.\n\nChange-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8\n"
    },
    {
      "commit": "858f1c5fd5e528d0b16040ced74d4636046a42d8",
      "tree": "3cfe50b75962353cdd62ec68112f3f148f026506",
      "parents": [
        "ef851d3058abfc56ed544f25d387dc7ff9c32e0b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 17 17:45:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 23 10:38:45 2012 -0700"
      },
      "message": "Check point root marking.\n\nAdded thread list checkpoint function, this goes through every thread and runs\nthe checkpoint on each thread. Threads that are runnable run the checkpoint\ncallback themselves in the next suspend check, while suspended threads are\nleft suspended but have the callback called on them.\n\nAdded a checkpoint visitor member to each thread, this visitor called when the\ncheckpoint request flag is set during transitions to suspended from runnable.\n\nUsing the checkpoint to mark the roots reduces the first pause of partial /\nfull gc to around 1 ms.\n\nChange-Id: I97239cc72ee0e4a3397e9138a62ee559268dce0a\n"
    },
    {
      "commit": "4eb68edeecc4d6641bcca2a40620631335e7cadc",
      "tree": "7b627587f60f8cef5a76db2a361ee4ba9a4042e7",
      "parents": [
        "99bc2176824556730c948f17cbdb7993b17fcb6e"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 17 16:41:07 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Oct 18 12:13:33 2012 -0700"
      },
      "message": "More MIPS fixes. Fibonacci and ExceptionTest work.\n\nIn this change:\n- Fixed compilation of div-int and instance-of\n- Fixed VERIFY_OBJECT to compile again\n- Added stack space for passing extra function arguments for\n  REF_ONLY_CALLEE_SAVE functions\n- Fixed AbstractMethodErrorStub to match stack layout\n\nChange-Id: I3d4540a3285a0acf49522ffc6f01d04b888bb8ef\n"
    },
    {
      "commit": "9ebae1f30b84dfd8dab4144f80eebec4f8fc8851",
      "tree": "379f7606cf7c1b5bbeb41caccc4cb681fc1ef2b4",
      "parents": [
        "30de32dec8dba21f7fec117b779c2b4e6bb4e4e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 17:38:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 16 10:05:04 2012 -0700"
      },
      "message": "Concurrent class linker and intern table root marking\n\nWe now mark the class linker and intern table roots concurrently\n(with mutators unpaused), only re-marking these roots in the second pause if\nthey get dirtied.\n\nReduces root marking time by ~1ms for each pause.\n\nChange-Id: I833fc557bac9a2930868db715587318293fa4655\n"
    },
    {
      "commit": "fbd229147c62d8e8787e27e7c9db3b387ffe39ef",
      "tree": "f19776e3edde3c635a7343ca942722a87ba46b62",
      "parents": [
        "c604d731730b43231f63040c8db1d58304da0cf3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 12 14:21:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 15 16:36:07 2012 -0700"
      },
      "message": "Attempt to always dump all threads when aborting.\n\nFurther pursuit of Bug: 7250540\n\nChange-Id: I99628aa4f5666339b372ab8948d3303ad9687eae\n"
    },
    {
      "commit": "c604d731730b43231f63040c8db1d58304da0cf3",
      "tree": "bb9cd6aa56eb3ba88ff27967efc3cc08da150b87",
      "parents": [
        "0b0b515934b83385e1cea448113783e0b22849ed"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 14 16:09:54 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 15 15:36:32 2012 -0700"
      },
      "message": "Implement mutex requeueing for cv broadcasts.\n\nMake the mutex guarding a condition variable part of its state. On a\nbroadcast requeue waiters on the mutex so they are awoken as the mutex\nis unlocked (thereby avoiding thundering herds). Explicit futex use\nstill guarded behind ART_USE_FUTEXES which remains disabled as I\u0027m\nunhappy with some of the warts of mutex usage. Uploading so that the API\nchanges can stabilize.\n\nChange-Id: Iedb601856ccd8bbc3a64da4ba0cee82246e7bcbf\n"
    },
    {
      "commit": "0051be6d118c511308ed7764ef41e0d594292c49",
      "tree": "aadcb9811b6034bf85d5a1c09d9264514f27dfac",
      "parents": [
        "17f6cb9d269b8289f751551c80fe8b0dcfad363c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 17:47:11 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 09:52:41 2012 -0700"
      },
      "message": "Add parsed options for heap min free, heap max free, target utilization.\n\nAdded options in runtime for heap min free, max free, and target utilization.\n\nChange-Id: Iaea988ffbf6cb7f07127640786168de7d341f1e1\n"
    },
    {
      "commit": "fa147e22a73c6df166b08a2f71f9c9b52b09d17c",
      "tree": "d50b1c6b89de4fcc4473f2aa2defe3bbc0f8289c",
      "parents": [
        "4fe0ef28ed58502a3652e827f5931df0b45cf39c"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Oct 12 17:03:32 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Oct 12 17:03:32 2012 -0700"
      },
      "message": "Numerous fixes to MIPS. Basic oatexec works.\n\n- Fixed reversed base and destination reg in genConstString\n- Changed compiler to use T9 to hold address to jump to\n- Fixed compilation of instruction getting current PC\n- Prevented T9 from being used as a compiler temp\n- Fixed loadBaseDispBody for long form single loads\n- Fixed stack setup for SaveAll callee methods to save rSELF \u0026 rSUSPEND\n- Added .cpload directive to assembly to regenerate $gp when overwritten\n- Fixed passing of extra arguments on the stack to account for space\n    reserved for $a0-$a3\n- Fixed resolution trampoline to properly setup and restore stack\n- Created mips stubs for interface trampoline and unresolved direct\n    method trampoline\n\nChange-Id: I63a3fd0366bdfabdebebf58ec4b8bc9443cec355\n"
    },
    {
      "commit": "2f7f9b6a3f0f6f334f0314b10d1dc696e5a9afa4",
      "tree": "4329da37859192407acf2c4eab57f0adc680f002",
      "parents": [
        "7204db592a999318067b9c509e14aa8b30293e58"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 10 18:24:05 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 10 18:24:05 2012 -0700"
      },
      "message": "DumpAllThreads in abort when locks are held.\n\nTake an opportunity for better diagnostics. Will help Bug: 7250540.\n\nChange-Id: I804168622829ce8e814a08c33d480a4459dd6b34\n"
    },
    {
      "commit": "7469ebf3888b8037421cb6834f37f946646265ec",
      "tree": "b1eb8cd8d1e3b6263c2de77616020de4b4b5019f",
      "parents": [
        "d8195f19840911a73b1491dfc8e7c18139753731"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 16:28:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 08 18:02:42 2012 -0700"
      },
      "message": "Refactor and remove copy mark bits.\n\nRefactor code GC realted code to be in a GC folder.\n\nRemove copy mark bits by using pointer changing instead.\n\nEnable concurrent sweeping of system weaks.\n\nFix non concurrent GC plan.\n\nChange-Id: I9c71478be27d21a75f8a4e6af6faabe896e5e263\n"
    },
    {
      "commit": "50b35e2fd1a68cd1240e4a9d9f363e11764957d1",
      "tree": "4f3c58b7b293380f19e4f33357cb352e3330772e",
      "parents": [
        "8e9a1497f0d7da4d55f6e7ed8a7d96ba6db7222d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 10:09:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 11:07:39 2012 -0700"
      },
      "message": "Explicitly pass Thread::Current to MutexLock and Alloc.\n\nChange-Id: I8b75bc0617915465f102815b32306aa7760dcae4\n"
    },
    {
      "commit": "1f5393447b9f45be7918042d9ee7b521376de866",
      "tree": "1793cb0ae00b38a63f8cfd3a25b6cb0ee4edca16",
      "parents": [
        "870ea4772199f8d4cbd9a269f9093620ee50a59c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 21:09:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 09:27:04 2012 -0700"
      },
      "message": "Make PopSirt inlinable, pass self to SirtRef.\n\nChange-Id: Ieb91526b1cb1f8644ceb3c5b99649f658f43bbc1\n"
    },
    {
      "commit": "120f1c74a9768e958377b6c97897511b27ae58c8",
      "tree": "fa1f90d88ea34d8ef9eec729d27c7a70956a6a09",
      "parents": [
        "cabc60e71a65fa17e5a99fba94fc61523fbeb478"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 17:17:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 17:29:26 2012 -0700"
      },
      "message": "Fail threads attaching during runtime shutdown.\n\nIntroduce counters to indicate that threads are being born. Don\u0027t allow\nthread birth to occur during runtime shutdown.\n\nBug: 7000936\n\nChange-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9\n"
    },
    {
      "commit": "81d425b0b232962441616f8b14f73620bffef5e5",
      "tree": "cd1e46656269acf20e78817d675e56d9b9133e6c",
      "parents": [
        "bfaf917edbb1de8d158c3615e0da8ac3143d10c8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 16:03:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 17:19:25 2012 -0700"
      },
      "message": "Pass self to lock methods.\n\nThis avoids frequent recomputation of\nThread::Current/pthread_getspecific.\n\nAlso add a futex based reader/writer mutex that is disabled.\n\nChange-Id: I118fdb99ef1d1c4bfda6446ba3a0d8b6ab31eaee\n"
    },
    {
      "commit": "0703060875166106af3d490c6c264611aea67ec8",
      "tree": "6e8c265b64a0ffac69f1072686f961d59060ec70",
      "parents": [
        "63818dc8b06af4a1e65c41b453f1a42166c22728"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 26 14:33:14 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 26 14:33:14 2012 -0700"
      },
      "message": "Fixes to make jni_compiler_test work on MIPS.\n\nFixed the jni compiler in numerous ways:\n- Added NOP for delay slot of branches/jumps\n- Made calling convention match registers pushed by stubs\n- Fixes to assembly and added noreorder directive\n\nChange-Id: I32bc55985fbbc58b5b5358149766b8738b3ac955\n"
    },
    {
      "commit": "dbe6f4613ae0161b169f4fca8a616b0b393370ab",
      "tree": "bcf21fa802f8ae261522e8c9bab3685020908d13",
      "parents": [
        "474b6da273c7ce6df50a4e51eb9929a77e1611c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 25 16:54:50 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 25 22:36:20 2012 -0700"
      },
      "message": "Change Thread::peer_ to be a jobject instead of an Object*\n\nFixes issue where GC was freeing the java peer if the parent thread exited before the child thread got registered.\n\nChange-Id: I6fbe74865d5827d243ac55fc396679afa97ff2f9\n"
    },
    {
      "commit": "66f19258f9728d4ffe026074d8fd429d639802fa",
      "tree": "fd94009774c6cbbb1528ea096e606133bd35f104",
      "parents": [
        "a5e1e3d153990845d80cb8d013157210f11a473c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 18 08:57:04 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 21 17:32:56 2012 -0700"
      },
      "message": "Change dex cache to be java object instead of array, add pointer to dex file in dex cache.\n\nGeneric clean up to facilitate having GDB macros for Pretty* helper functions.\n\nImproved cleanliness of DexCache since having it as an object array was not the best solution.\n\nFixed a bug in InOrderWalk caused by ResolveType sometimes allocating classes.\n\nRename C++ Method to AbstractMethod and add two new classes Constructor, Method which both inherit from AbstractMethod.\n\nRename done to have the C++ code be closer to the java code.\n\nChange-Id: I4995b4c5e47a3822192b08afa24a639d3b1f4da9\n"
    },
    {
      "commit": "b726dcb581bf72da46527378ccb6889020f0e6e9",
      "tree": "c0383ed788652926e93147e50d659ed226519548",
      "parents": [
        "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 08:57:23 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 09:06:19 2012 -0700"
      },
      "message": "Rename GlobalSynchronization to Locks\n\nAlso address some review comments in common_throws relating to\nToStr\u003cInvokeType\u003e and exception detail messages.\n\nChange-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b\n"
    },
    {
      "commit": "7fbee0731b14b5bf392a4254f5cd84685ab517da",
      "tree": "b24cf6d9eed7935e3b26d63cf2292fd8c008005b",
      "parents": [
        "f3a26411e0e8b56b64d184d3e946e72f9c31e4c7"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 24 17:56:54 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 27 11:33:05 2012 -0700"
      },
      "message": "Preliminary changes to allow mips target to build.\n\nIt compiles, but it doesn\u0027t work yet.\n\nChange-Id: I2973a03bd956d8d398b9cfd1047e66fbf3ff439c\n"
    },
    {
      "commit": "1b09b094a85e03f6ef5f687f58bb91c433273ba1",
      "tree": "6b039e520ee3b73e6ba5fb23954b9e01ecc68fc9",
      "parents": [
        "931c278aed62d7a97b87cf1bb9cfdd189e77eb24"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "message": "Syntax clean up to make clang happy.\n\nChange-Id: I0984c395bbd1ee4b206eafd19915b6f68781dd16\n"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "034f76b91225bea769d6185d7dad5e243af4ffa0",
      "tree": "56732a2b9847c5c791cb8f2336222ca9f853b277",
      "parents": [
        "f2ba9cbe81b0762a7c8c659cdb86ba79b2dbbc40"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 01 15:51:58 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 01 15:51:58 2012 -0700"
      },
      "message": "Check for null thread groups at initialization\n\nChange-Id: Ia6fffe9f416ac4bd2588016b99b172cf023f3c5d\n"
    },
    {
      "commit": "cc236d74772dda5a4161d9bc5f497fd3d956eb87",
      "tree": "2cd44e980357edc5b1a477fb261adb590d34c7c7",
      "parents": [
        "f1ea6b072b8b473eabf91d1d582fb5966ffea4ba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 20 10:29:05 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 27 14:30:51 2012 -0700"
      },
      "message": "Zygote space / partial collection support.\n\nThe zygote space is now created right before zygote fork. This space has new allocations into it disabled, this reduces memory usage since we have more shared pages.\n\nPartial collection works by marking all the zygote space -\u003e alloc space references by using a mod-union table and then recursively marking only over the alloc space.\n\nApproximate improvements;\n\nDeltablue time goes down ~0.5 seconds.\n\nCaffeinemark score goes up ~300.\n\nSystem memory usage goes down ~7MB.\n\nChange-Id: I198389371d23deacd9b4534f39727eb641786b34\n"
    },
    {
      "commit": "206c20d6b1e27d8eca843498fdde1ddd5b9daa39",
      "tree": "641744c66209e0c2765a781c07c4f483c3b645b6",
      "parents": [
        "78a5e15629e6591090582cd83b1ec1380a50a840"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 28 11:05:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 28 11:05:37 2012 -0700"
      },
      "message": "Don\u0027t ignore -Xstacktracefile: in debug builds.\n\nChange-Id: Iabf65f6b68fda8a23c480c5c427c3f87a98d6d85\n"
    },
    {
      "commit": "971bf3f9184010d68b9a3ad30b396fa401af91a3",
      "tree": "493e80309ce41fd21359da8093fbebfd21b7936c",
      "parents": [
        "468a7b1fcb2114ec973e31b5276daea0be62c198"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue May 01 15:47:55 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 03:47:58 2012 -0700"
      },
      "message": "Compile method one-by-one.\n\nChange-Id: Ic56fb397f3bd6dee32372eb875261a3383eaf30c\n"
    },
    {
      "commit": "365c10235438607541fa2259a5fec48061b90bd8",
      "tree": "26516a4985a8bbef4c8da36b99bf1e54af3ad24d",
      "parents": [
        "147440427984816b6ed5235a9b1fb2cbf99496d0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 22 15:05:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 15:21:01 2012 -0700"
      },
      "message": "Increase use of ScopedJniThreadState.\n\nMove the routines for changing Object* to jobject and vice-versa\n(AddLocalReference and Decode) to ScopedJniThreadState to enforce use of\nObject*s in the Runnable thread state. In the Runnable thread state\nsuspension is necessary before GC can take place.\n\nReduce use of const ClassLoader* as the code bottoms out in FindClass\nand with a field assignment where the const is cast away (ie if we\u0027re\nnot going to enforce the const-ness we shouldn\u0027t pretend it is).\n\nRefactor the Thread::Attach API so that we\u0027re not handling raw Objects on\nunattached threads.\n\nRemove some unreachable code.\n\nChange-Id: I0fa969f49ee6a8f10752af74a6b0e04d46b4cd97\n"
    },
    {
      "commit": "0399dde18753aa9bd2bd0d7cf60beef154d164a4",
      "tree": "ea88327c01ca321074aaa59b97e4c54348802937",
      "parents": [
        "de5705dcf4ab5f92d48e144bcd7b59f7bcd18e16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 17:09:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 21 22:11:24 2012 -0700"
      },
      "message": "Remove Frame, merge shadow and quick representations.\n\nChange-Id: I5ae03a5e52111792d2df7e83cbd89ab25777844b\n"
    },
    {
      "commit": "069387a60cb2b72e116cc38b32e14403f092df8f",
      "tree": "787c123093daa5e79ab8d5c25ed18856dd6d0724",
      "parents": [
        "83c26f9c7ee42b0037d2679f6f37dd28a3f13af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 18 12:01:01 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 18 15:19:28 2012 -0700"
      },
      "message": "Enable / disable CMS runtime options.\n\nEnable or disable CMS by doing -Xgc:noconcurrent or Xgc:concurrent. Defaults to enabled.\n\nChange-Id: Ib18687ba6aa6534323531d761133ce410c69f426\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": "0a1038b0a30a52dff1a449a989825e808a83df80",
      "tree": "4f4f72efe2d3fa076faf39c2ce084c9de9f5a4fe",
      "parents": [
        "56400fa8913530a6f01bb45723614f08fa44baf1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 14 16:24:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 14 16:51:10 2012 -0700"
      },
      "message": "Make tsan happy.\n\ntsan was unhappy with our static Mutex, claiming a race between the constructor\nwriting the \u0027rank_\u0027 field and Mutex::Lock reading it. My understanding of the\nGCC static initialization acquire/release code is that it includes memory\nbarriers that should make this safe, so I\u0027m reaching out to the tsan guys. In\nthe meantime, let\u0027s just make this MethodVerifier lock \u0026 collection like the\nother MethodVerifier locks \u0026 collections.\n\n  WARNING: Possible data race during read of size 4 at 0x1A42F09C: {{{\n   T2 (Compiler Worker) (L{}):\n    #0  art::Mutex::Lock /home/enh/local-disk/clean-dalvik-dev/art/src/mutex.cc:89\n    #1  art::verifier::MethodVerifier::IsClassRejected /usr/local/google/home/enh/clean-dalvik-dev/art/src/mutex.h:77\n    #2  art::Compiler::CompileClass /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1420\n    #3  art::WorkerThread::Go /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1013\n  Concurrent write(s) happened at (OR AFTER) these points:\n   T1 (Compiler Worker) (L{}):\n    #0  art::Mutex::Mutex /home/enh/local-disk/clean-dalvik-dev/art/src/mutex.cc:67\n    #1  art::verifier::MethodVerifier::IsClassRejected /home/enh/local-disk/clean-dalvik-dev/art/src/verifier/method_verifier.cc:3334\n    #2  art::Compiler::CompileClass /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1420\n    #3  art::WorkerThread::Go /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1013\n  Address 0x1A42F09C is 28 bytes inside data symbol \"_ZZN3art8verifierL22GetRejectedClassesLockEvE21rejected_classes_lock\"\n   Race verifier data: 0x1A198B1E,0x1A198025\n  }}}\n\n(cherry picked from commit 6356df46fb0ebff5467d3103b97c3c871940e402)\n\nChange-Id: I26a9c91f133370161ab4679e36d9a02315d28847\n"
    },
    {
      "commit": "a6399035ee2af012e2ac898ee7a753a2f83b35ab",
      "tree": "47d90d21e242ec91345e61f3cf118cd1adabe78b",
      "parents": [
        "69362a053e87efe0e3596618f723a90d97551947"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 11 18:49:50 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 14 11:26:06 2012 -0700"
      },
      "message": "Fix and re-enable CMS\n\nFix for CardTable::Scan double length scan which caused occasional assert failures.\nFix for the case where CMS request JNI code caused a GC which freed newest allocated object.\nFix error with is_gc_running_ never being set and deadlock due to CV wait without thread state change.\nFix error where we were Unlocking the heap before doing ResumeAll in CollectGarbageInternal which resulted in a rare race condition.\nFix error where GC could be in progress when the runtime terminated.\n\nChange-Id: I8d243d4dca63170433a63429442788ecb09e55fe\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": "9af209c9dcc6763fae2976981570a90aa41fd86b",
      "tree": "450ad8e634cfde765d4719746d6bc1685422a5f4",
      "parents": [
        "2945e2455ba87e15b65f4a6a737bcdc8c0f2f31b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 20:50:30 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 20:50:53 2012 -0700"
      },
      "message": "Move simple runtime accessors to header file\n\nChange-Id: I6831e067d8b7ce4d81b6daf9bd6a8af21fecfde3\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": "d06a6c7c40180c2c906d6981dd461ede2187bd99",
      "tree": "e05a9fc25d9cc15c41d109af7a92b610b15fac7d",
      "parents": [
        "55d5ea6b59c15d9da9f7552a557628f2c84b7c92"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 30 17:59:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 31 11:33:00 2012 -0700"
      },
      "message": "[DO NOT MERGE] Improve signal catching and native stack dumps.\n\nThis works around the problem with abort(3) (and friends) on glibc,\nand improves our ability to catch SIGSEGVs from the main thread, and\nslightly improves our behavior if multiple threads are dying at once.\nI think any remaining flakiness is only in this last case, and I\u0027m\nnot sure whether we can actually improve that any further.\n\n(cherry picked from commit dcaaea9d30f39622d0b1d9bbb68911173621e54b)\n\nConflicts:\n\n\tsrc/runtime_linux.cc\n\nChange-Id: I9922f3ee4609799993635e1ed98a21363505a6ab\n"
    },
    {
      "commit": "e94d9b23c52ec0f36c8a132914eac33bc707faff",
      "tree": "53a3b1262f9f01f12507ec2aa1f1fd6fa774fc72",
      "parents": [
        "024cf66d3359c015fabca8f5f3964592973e3f6e"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue May 22 09:01:24 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon May 28 21:04:37 2012 -0700"
      },
      "message": "Add dex_lang as common frontend to lir and LLVM. dex_lang + bc2lir \u003d\nGreenland\n\nFirst commit of Greenland compiler: It\u0027s working in the sense of oat\ntests. E.g., mm test-art-host-oat-Fibonacci. It shows the correct\nbitcode before lir.\n\nChange-Id: I91cbb02188325eb1fa605ed71ec7108fd2b0dbb9\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": "e119a3623ffbd55ff856d4eaac4dc4ef0c90a089",
      "tree": "142ce634272fc3e2e7d8b44c564fb3d72a01a33e",
      "parents": [
        "bf1b4574dc681d49696571c59033e8c63583a029"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 22 17:37:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 19:31:12 2012 -0700"
      },
      "message": "Fix the TODOs in the traceview support.\n\n(cherry picked from commit cfbe73d02a024800813f8f0fc4f6a4b4532195f3)\n\nChange-Id: Ie9ee2701df665d92c544c2ac3b4eaf7209a881a5\n"
    },
    {
      "commit": "4d5714378c3433ba7e351cbf6a6713fb49c31784",
      "tree": "61cff5862955102a5d6aaa20ea9b7dee9cf1388a",
      "parents": [
        "0aac50652ef961ba3aafa44d43871190d23be1ce"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 16 00:21:41 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 16 12:10:24 2012 -0700"
      },
      "message": "DetachCurrentThread should return JNI_ERR on already detached thread\n\n(cherry picked from commit bea414643f7dc41862a6ee46e57d3c95b6aa51ba)\n\nChange-Id: I9bc52ff81638319528f911cdac4852a945a2d885\n"
    },
    {
      "commit": "7c6169de901fd0a39c8e0c078874dc25207f5b59",
      "tree": "dd7adafc6bcdb734c26a495e4bd923081ef637e7",
      "parents": [
        "736df0253aa65ebccb29ddb6443c31b7730ca3e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:11:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:11:48 2012 -0700"
      },
      "message": "Port my AOSP QuasiAtomic rewrite to art.\n\nChange-Id: I9e8fe487b15083cfc441a90ec1ec0eb5e645229e\n"
    },
    {
      "commit": "72395bf298b7707ad9d93c3e51b57e1b8e010311",
      "tree": "8d2e6c3b6bd72ae27aa19979f301630fc438dfec",
      "parents": [
        "ae80b493748c5b6ffe310a91c651e7043f4b2dae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 13:45:26 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 13:45:26 2012 -0700"
      },
      "message": "Support ANDROID_LOG_TAGS.\n\nThis is the dalvik-compatible solution to the \"I don\u0027t want non-FATAL logging\nin my test output\" problem.\n\nChange-Id: I51b7b883ce89604af4661696e7c7b041a0ef8211\n"
    },
    {
      "commit": "ae80b493748c5b6ffe310a91c651e7043f4b2dae",
      "tree": "cb84ce54ebf1a29dc20889039af4219fcd09f9dd",
      "parents": [
        "b6636b8ef90221eaf7f4779eb2c2256f560d3e64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 10:43:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 10:54:55 2012 -0700"
      },
      "message": "Include JNI details in the SIGQUIT output.\n\nAlso include the original command line (framework apps deliberately clobber\ntheir argv[]).\n\nChange-Id: I63e04cb637fa89764e8963f3d086806ae230e953\n"
    },
    {
      "commit": "6c1c69eea21cce39dd043d89368a684d250c9abe",
      "tree": "10313ed9973021fa2c408493cfe9ff877b07beab",
      "parents": [
        "d2abaf455c31fc5a9c9807c74002fd92f838977a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 23 16:12:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 23 16:17:09 2012 -0700"
      },
      "message": "Various crash diagnostic improvements.\n\nRegister dumps, restore backtraces on Mac OS where possible, Mac demangling,\nmore comments, logging when using an abort hook, and more selective use of\nabort hooks.\n\nLinux:\n\n *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) fault addr 0xdeadd00d\n Registers:\n     eax: 0x00000000    ebx: 0x5598eff4    ecx: 0x56300000    edx: 0x55992de0\n     edi: 0x5597e478    esi: 0xfff1f3c8    ebp: 0xfff1f3e8    esp: 0xfff1f390\n     eip: 0x558a82ff eflags: 0x00010246\n      cs: 0x00000023     ds: 0x0000002b     es: 0x0000002b     fs: 0x00000007\n      gs: 0x00000063     ss: 0x0000002b\n Backtrace:\n \t#00 art::Backtrace::Dump(std::ostream\u0026)+0x4c [0x559357ac] (libartd.so)\n \t#01 ??+0x3b73b0 [0x559343b0] (libartd.so)\n \t#02 [0x55573410] (???)\n \t#03 art::LogMessage::~LogMessage()+0x3bd [0x557e2e6d] (libartd.so)\n \t#04 ?? [0x8088941] (dex2oatd)\n \t#05 ?? [0x80898f7] (dex2oatd)\n \t#06 __libc_start_main+0xe6 [0x55b06bd6] (libc.so.6)\n \t#07 ?? [0x8085b31] (dex2oatd)\n\nMac OS:\n\n *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n Fatal signal 6 (SIGABRT), code 0 (?)\n Registers:\n     eax: 0x00000000    ebx: 0xc008bce0    ecx: 0xc008bc5c    edx: 0x906559c6\n     edi: 0xac0f52c0    esi: 0x00000006    ebp: 0xc008bc78    esp: 0xc008bc5c\n     eip: 0x906559c6 eflags: 0x00000246\n      cs: 0x0000000b     ds: 0x00000023     es: 0x00000023     fs: 0x0000001f\n      gs: 0x0000000f     ss: 0x00000023\n Backtrace:\n \t#00 art::Backtrace::Dump(std::ostream\u0026) + 40 [0x001ce25a] (libartd.dylib)\n \t#01 _ZN3artL22HandleUnexpectedSignalEiP9__siginfoPv + 1051 [0x001cdacb] (libartd.dylib)\n \t#02 _sigtramp + 43 [0x90a4559b] (libsystem_c.dylib)\n \t#03 0x0 + 4294967295 [0xffffffff] (???)\n \t#04 abort + 167 [0x909e0bdd] (libsystem_c.dylib)\n \t#05 art::Runtime::Abort() + 322 [0x00192312] (libartd.dylib)\n \t#06 art::LogMessage::~LogMessage() + 413 [0x00135a6d] (libartd.dylib)\n \t#07 art::dex2oat(int, char**) + 6183 [0x00091927] (dex2oatd)\n \t#08 start + 53 [0x0008fb75] (dex2oatd)\n\nChange-Id: I68d215f09723f236889242cfe8aa8819afea4a60\n"
    },
    {
      "commit": "8593fdbacf97261f790ca53ea0ec416f57c987a7",
      "tree": "a9c97a2bc41a31c3a7f8f72d5f1c27bb34b8a627",
      "parents": [
        "e2f0911dfc7cec7c48ad0dea50f2028ae0f1fd0f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 21 20:53:44 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 21 20:53:44 2012 -0700"
      },
      "message": "Clean up host aborts (and simplify the code).\n\nChange-Id: I6efaf065304459df0e030f242f8d1d2fc6fdec4a\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": "457005c557b8762475db3220ce5a747d629f975b",
      "tree": "e267d67cf62e64f8d479d4af2df631fed3ef8d26",
      "parents": [
        "1144f950daafb99b4b48196c17391f54f7abb4d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 13:54:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 13:54:25 2012 -0700"
      },
      "message": "Add signal handlers for host builds to imitate debuggerd.\n\nThis isn\u0027t going to be as reliable as debuggerd because we\u0027re running inside\nthe crashed process. We could always build debuggerd for the host, and have\nsomething to call out to that. But for now, this gives us most of the\ninformation most of the time...\n\nChange-Id: I992ffb3bdb2903e4b83bd5666108ebe12a813338\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": "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": "a0e180632411f7fe0edf454e571c42209ee7b540",
      "tree": "97dc85e76c5449ec1a901226c44e0f68fec89870",
      "parents": [
        "e5eb1914de86129d78e965fb9f2e1bfb2aa68640"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 13 15:59:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 14 11:44:21 2012 -0700"
      },
      "message": "Add a SafeMap equivalent to std::map but without the error-prone operator[].\n\nChange-Id: Iae5ba2091c55a34dbd1005cf3d25fce2a8d5c1f9\n"
    },
    {
      "commit": "dd361c9eab3284e76e2d07c2e7d371b0f5269942",
      "tree": "04dbcea72d196e5202aa71c2e54d7833b276f9b9",
      "parents": [
        "7e7fabccba62ec3d7c04b33e9b8fdb7981bdc833"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Apr 10 23:40:37 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 15:55:46 2012 -0700"
      },
      "message": "Fix 065 and 066 tests (NULL Method bug). Don\u0027t use Method in LLVM method compiler.\n\nChange-Id: I98e4e9b329448b1b72c3b5c9d712ea68dab624bd\n"
    },
    {
      "commit": "b92bcabcbb28f69fe99e1c2f2e5559ab2c47aa60",
      "tree": "40c39c168b520afb6b62d3659c2a06c282e7f844",
      "parents": [
        "05c87bea99bbabc36d0db569af735f9459ad8f1a"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 08 00:09:51 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 14:57:01 2012 -0700"
      },
      "message": "Fix run-test on host.\n\nChange-Id: I44ebb4cdc2f5966be51a063e3c7256ab3016c404\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": "0c717dd1c56bd29cf860d0feda8e629dab2cadb3",
      "tree": "a587807a9821ba6986e56fc9d3fed68540e41268",
      "parents": [
        "ccb7bf1271560783adccddb2ab74c53d0efd3fd1"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Mar 28 18:31:07 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Fri Apr 06 17:03:33 2012 -0700"
      },
      "message": "Add ELF loader to OatFile.\n\nChange-Id: I062c3cc78ff9a35d0efcbc9451e7e7ccb055667b\n"
    },
    {
      "commit": "141d62275f207bf68c55f583fb206fe586d857cf",
      "tree": "6263e12c9194e966d452658f54612fc7b3b7e410",
      "parents": [
        "f3388e6ef460384a87c85bff72c961ebcd11ce0a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 05 12:23:06 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 05 18:11:20 2012 -0700"
      },
      "message": "More X86 fixes.\n\nFix bugs in a few long entrypoints and with object validation being\nenabled.\n\nChange-Id: I18884fbbe6829b584b9fc92e338549577f925f14\n"
    },
    {
      "commit": "7caad77632ae121c9f64c488e3f8f710e2c4813d",
      "tree": "6b12ff6e0c27529f5434c5655b3306a1f79bd379",
      "parents": [
        "4855cd516d97c9728fa58312acdf6c4b8b81397a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 30 01:07:54 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 04 09:56:48 2012 -0700"
      },
      "message": "Implement various missing parts of the X86 compiler\n\nChange-Id: I76f08580600befe268328f8cf7102c6146460c5e\n"
    },
    {
      "commit": "0879504b6ac72f6d93dcccf9e1b7e1769a73b230",
      "tree": "15ab3cb755f2c065b97d8b9e0aaec0a3e74ec88f",
      "parents": [
        "409d273a3a57158faaa520ff5f33508367f759f1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 14:48:52 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 14:48:52 2012 -0700"
      },
      "message": "Fix an obsolete comment.\n\nChange-Id: I89e97b070a3cc5c413d8bc44504ff2235942039d\n"
    },
    {
      "commit": "e52e49b32f5cf862a414da63e5dbd2eb04ad758e",
      "tree": "582296bc89fcb3ca475260abba8e9b3d6fc2f39d",
      "parents": [
        "2d62a0e4ae6b528648c585aa804569aaefc4c517"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 02 16:05:44 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 02 16:05:44 2012 -0700"
      },
      "message": "Fix the mutex diagnostics, and other targets of opportunity.\n\nThree changes for the price of one:\n\n1. Fix the mutex diagnostics so they work right during startup and shutdown.\n\n2. Fix a memory leak in common_test.\n\n3. Fix memory corruption in the compiler; we were calling memset(3) on a struct\nwith non-POD members.\n\nThanks, as usual, to valgrind(1) for the latter two (and several bugs in\nearlier attempts at the former).\n\nChange-Id: I15e1ffb01e73e4c56a5bbdcaa7233a4b5221e08a\n"
    },
    {
      "commit": "0f3c55331439970e01af67f80ac117c473bc04cf",
      "tree": "cfa28ad2a58af1ffddb0a2ce90443ad4606743c3",
      "parents": [
        "273cf36d199cf73de3cf61a559ad27c9d23f9825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "message": "Kill constants.h and fix some copyright headers.\n\nChange-Id: I51c04d731d6de035328781d8ac134ad6fcf49897\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": "67d920071fe4a0aa8b8bc339e93b18276238c320",
      "tree": "a665c6bdeecf149fc976b992c71543642b44e464",
      "parents": [
        "16da17c8d39a813f1b880f576fd2f8bc98ac4a9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 15:08:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 15:08:51 2012 -0700"
      },
      "message": "Add a compile-time constant bool equivalent to !defined(NDEBUG).\n\nThis makes some code slightly less awkward.\n\nChange-Id: Iafd359dd0baa65510ed9510a7d93ee01605f51e4\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": "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": "b41b33b5e5f08083e35f84818b4f44d26feb4a8b",
      "tree": "a888c3c40bd6070acc459700ed5c79055c6984f4",
      "parents": [
        "49ac9bfa63aea6d331e4c9aa5011953777bf98ad"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 20 14:22:54 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 20 14:24:39 2012 -0700"
      },
      "message": "Add 3rd argument register to X86.\n\nImplement more instructions.\n\nChange-Id: I3af7bbaf18eedc6537f1cfc2d57c4f6106fb5164\n"
    },
    {
      "commit": "b5e81858a47dd7ed051135f6982fbc4e13d0f309",
      "tree": "7da467d2b2d18de134960b0efbf7e484c6a8e4aa",
      "parents": [
        "4d26534f6a65d7af89cc32da8fbc32beed693201"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 12 11:15:45 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 12 13:57:13 2012 -0700"
      },
      "message": "Added code to allow method tracing from command line.\n\nCrated a set of command line switches to allow method tracing to be\nenabled from the command line. They are -Xmethod-trace,\n-Xmethod-trace-file, and -Xmethod-trace-file-size.\n\nChange-Id: I7ecaa07aba3d7ca41f2ff3a9a9341d97833afe36\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": "fb6adba0d5d5505610fbd325e7911db700a2f1e8",
      "tree": "84ad8f9cc55a2ae87f80c05927126af7e75604d7",
      "parents": [
        "123e8a7fdf69b40603f7df95f08d62c69ee1c07e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 04 21:51:51 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 08:56:55 2012 -0800"
      },
      "message": "Sharpen virtual calls to final methods.\n\nAlso remove unused instance resolution stub.\n\nChange-Id: I2abb988d107e98ac0148fb81464b22622a468382\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": "a004aa933a58428489e42d77f707c2b063b73747",
      "tree": "1224764c4a524957e94dfe2d27e277d024986668",
      "parents": [
        "573b7c9324b11ff7f42f68c9ad52d26ebc4b6d12"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 08 18:05:09 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 16 17:48:28 2012 -0800"
      },
      "message": "user build support for art (2 of 3)\n\nChange-Id: I4696fee58e43db48540e2442c4235fc4bb02d9e3\n"
    },
    {
      "commit": "7c3757fb51450d0669883c82375040ece051e189",
      "tree": "82b1e786eaea355798a5d6185577c579e738804a",
      "parents": [
        "4c1f425f62a21e181a437ec45520167332344917"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 15 17:18:53 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 15 17:18:53 2012 -0800"
      },
      "message": "Missing initialization\n\nChange-Id: Ib2a75f3fac032e19efb89119d5aabed1aed6b05a\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": "223f20fa939c386c695977263780dea2195093db",
      "tree": "642d1abe5dfbf2239bf239e8e91bebd333384378",
      "parents": [
        "a56fcd60596ae8694da21fccde5c56832e437c56"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 23:06:55 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Feb 04 23:24:56 2012 -0800"
      },
      "message": "Remove old code to support multiple images\n\nChange-Id: I29bc2f216361ac4ed0cc0fefb7e3c46ee64e0ae8\n"
    },
    {
      "commit": "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": "9ee5f9ccba015beb3ae376ed08b3363bd9df6422",
      "tree": "f79f3f4439048ba90d1947abfc3ac09e133a1908",
      "parents": [
        "5523ee070b005576c6f889415205d49ea77cf243"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 18:33:16 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 18:33:16 2012 -0800"
      },
      "message": "Make all FATAL-related output appear as \u0027F\u0027 log output.\n\nPreviously most of the spew belonging to a FATAL would be \u0027E\u0027 because\nRuntime::Abort() used LOG(ERROR) to avoid recursion.\n\nChange-Id: If8f62586c302c239e827c5235ed58ee8fe6e8f5e\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": "8cf5bc0ab8742df107f0f4fc8ec0e991b6568f11",
      "tree": "2c21156aa0314dfa4f5b0cea9489e3aa16ebe743",
      "parents": [
        "c27273f0508fb56ba35bead311151fbe45724d35"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 16:32:16 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 17:07:51 2012 -0800"
      },
      "message": "Simple heap trimming.\n\nChange-Id: I8a94b637e64c6b5586db3c41b6e9230e7c8250c8\n"
    },
    {
      "commit": "6c7d244058b74cdd61533968dd6cddd7003d2671",
      "tree": "65b1f8b421b8466bfa14b98ddacd81a534466ac0",
      "parents": [
        "fc3144e2530a958ac03698e0972ef60290a268b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 01 18:40:47 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 01 18:40:47 2012 -0800"
      },
      "message": "Support Runtime::Abort() before the runtime has started.\n\nThis lets you get useful diagnostics out of LOG(FATAL) and CHECK(FATAL) and\nso on even if the problem occurs really early on.\n\nChange-Id: I2bfd906191d8817de719c3d38e7fa5de844bebba\n"
    },
    {
      "commit": "7d5ffb5ef4702e7a032db8a75783f1bac2ce04c9",
      "tree": "083507bf64a59741209f6f0dfdcb27a2fbef32c0",
      "parents": [
        "ed846c33412368bd8fea18f7353c4f4d3ceb0b26"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 01 14:27:54 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 01 15:23:08 2012 -0800"
      },
      "message": "Remove dex2oat warnings by providing \".\" class path defaulting only to JNI callers\n\nChange-Id: Ibc532b4a6e72ad92d7b537896447949a2a764166\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": "131aef8c94292cc530da2fd91ee98d1432352959",
      "tree": "58bc993648e93dc6e84d701457f0cda0b0ec82cb",
      "parents": [
        "6622e5dcf77fd1af7bdec45466da590471b53ba0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 11:53:35 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 11:53:35 2012 -0800"
      },
      "message": "Only allow one thread to abort at a time.\n\nFound when looking to see if Google Earth had fixed their JNI bug yet.\n\nChange-Id: I8768248625869d344ba04ecf4fec06047f76c3ce\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": "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"
    },
    {
      "commit": "4d6850c47515fe2a4f9de923befb6287bb863c8c",
      "tree": "358499cc787b2d75f38ea365743a4b140bd22710",
      "parents": [
        "5fedcf46538aeb036a1f68e022463703c372d825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 15:55:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 15:55:06 2012 -0800"
      },
      "message": "Fix the handful of leaks detectable in our tests.\n\nChange-Id: I74ad1a3831fbebad60ff24f0b3ac07cade823b7a\n"
    },
    {
      "commit": "4f6b57a5676477882eb06240f3db62483006147d",
      "tree": "fb97b8eb43c274244b25ccbed264d335932ee677",
      "parents": [
        "6368967dc8a06835891b2e8925a45ee1af4e880e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 17 16:23:27 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 17 16:23:27 2012 -0800"
      },
      "message": "Default java.class.path to \".\" Bug: 5878535\n\nThis makes ART\u0027s behavior the same as Dalvik\u0027s.\n\nChange-Id: I2096a4da09016662f6b7edbc9b54efc7b74c2634\n"
    },
    {
      "commit": "6b3557571e798b60df995f978fa01c0ca1980dfd",
      "tree": "ce56e52d67d20bf3204074b48d2be1d15644ef54",
      "parents": [
        "f4222065170130a31513dc63e2c2808db80860f1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 13 16:49:08 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 13 16:49:08 2012 -0800"
      },
      "message": "Make pthread_mutex_t destruction safer during shutdown.\n\nIf we have suspended daemon threads, they might be holding some of the mutexes\nwe need to destroy, so we can\u0027t assert that we successfully destroyed them. We\nstill want to assert success where possible, though.\n\nBug: 5869254\nChange-Id: Id4f3af3d40b10045958e7d692b3c9eebafec566d\n"
    },
    {
      "commit": "b3e66dfcd069db8818cd902d787ff1d7bbca45f2",
      "tree": "b2fb80c539a6d7c51ae978376390a895f6f9ef7c",
      "parents": [
        "01646a0d8103e5e73ed53e4d36593a1cc3c26a03"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 12 14:49:18 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 12 14:49:18 2012 -0800"
      },
      "message": "Minor fixes.\n\nFix a crash when shutting down if a daemon thread suspended while holding the\nheap lock. For some reason, presumably involving extra daemon threads, CTS hits\nthis a lot.\n\nSilently ignore a couple of dalvikvm options for backwards compatibility. This\nmakes CTS less noisy.\n\nRemove redundant parentheses that would make it easy for us to introduce a \u003d\u003d/\u003d\nbug.\n\nChange-Id: Id44eab29ce393a85585459c280ad47c5a5c749b9\n"
    },
    {
      "commit": "2692b573a56cd63a3c8c8aa1636e3766b6d8c9c4",
      "tree": "16d422b8b2d3ae8e20baa34090b7b5b2aa687cd8",
      "parents": [
        "db7d5e96d3e4090e69fac7b4ec1fc1bdcc0b436c"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 16 15:42:28 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 19 10:36:47 2011 -0800"
      },
      "message": "Changed tracer to use an instance to hold state instead of statics.\n\nChange-Id: I2fdcf5de7fbc745273b1a33cb409d13e72d24ab4\n"
    },
    {
      "commit": "dbf05b722af99ba2fd2f4c4fc7eb6c3e9880e5d1",
      "tree": "41a93654631c6163c777172e9254ab48ba4010e5",
      "parents": [
        "c2b4447ae9c0c1e77595620acac6508999df6698"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Dec 15 00:55:24 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Dec 15 10:18:54 2011 -0800"
      },
      "message": "Adding newly required headers\n\nChange-Id: I4c121eaf8fdade8b038fdc696df2d93309d78133\n"
    },
    {
      "commit": "29e7ac74a3f9aec192099fec381baadaa55730ad",
      "tree": "350ef2b28d55411a31b838159191bf461aec03da",
      "parents": [
        "4d3c95bd7ee7d67993dc09617ee4138fa33af70f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Dec 05 23:42:57 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 14 11:02:24 2011 -0800"
      },
      "message": "Moving from libdvm to libart (1 of 5)\n\nChange-Id: I6541802c5f403a4ba4424818084b94bebe71dfca\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": "4dd9b4d95eec9db5338fb9bf132f9bb8facf6cf4",
      "tree": "f9dc6f6e6a55acea3a08f1f568ae6900c1dd7dd1",
      "parents": [
        "20a409c99a649a01cb7c65bd1089988445d8cdfd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 18:29:24 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 08:23:08 2011 -0800"
      },
      "message": "Clean up verbose logging.\n\nChange-Id: I6b01980e7145c4f8d25a5b50f620903f61a1b427\n"
    },
    {
      "commit": "21a5bf2dc8c9cb3fbe5a30a88d1149c328e3aaca",
      "tree": "37c621c34570383e124d4302cbc72b4f142a2962",
      "parents": [
        "4740cdff25875c530649a670b15e8ac52bfd7252"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 14:35:20 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 14:51:26 2011 -0800"
      },
      "message": "Detect over-long thread suspends and time out fatally.\n\nBug: 5726434\nChange-Id: Ib7d4429c2b195f59133bb6dc7f9072b705c53e82\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": "ae826983f7903bc0a6bbbe8426bf393fb2f6d747",
      "tree": "6fb83f2b19a1a50ade3c93cbf10485cd8fbc793f",
      "parents": [
        "8aa6fc39f5cc0279d4ba2ee064de9758560dfedd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Nov 09 01:33:42 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Nov 29 13:46:50 2011 -0800"
      },
      "message": "Add --image-classes to dex2oat\n\nChange-Id: Ia88f9d302e0f9cd72be2199ee46d212d99864c67\n"
    },
    {
      "commit": "1b2b2f26c4202020d54cc7a5b9c342e6bca5b680",
      "tree": "7c100a95a820bd3534253dee613588420a42973b",
      "parents": [
        "8ea36f84a1fff2943127ef21ce371c99a7d191af"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Nov 22 11:47:44 2011 -0500"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Nov 22 11:47:44 2011 -0500"
      },
      "message": "Don\u0027t set the context class loader until it has been created.\n\nWe had a bug where we were setting the main thread\u0027s context\nclass loader to null because we hadn\u0027t created it yet. This\nmoves the setting of the context class loader to after it has\nbeen created.\n\nChange-Id: Ib4be1be646ade4c426dda3ced30ae1ba37ddd0f6\n"
    }
  ],
  "next": "9a6bae896a2f003d7216603bf29771d105c10ca4"
}
