)]}'
{
  "log": [
    {
      "commit": "607fa7b07233a7233ebe21bba8f3e7c1925ae0f2",
      "tree": "a04f1074331ac82ad077044e3f373312f61e5901",
      "parents": [
        "1dc387152a84193937bd1f88e9e10fff6449d695",
        "700a402244a1a423da4f3ba8032459f4b65fa18f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 20 05:29:04 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 20 05:29:04 2014 +0000"
      },
      "message": "Merge \"Now we have a proper C++ library, use std::unique_ptr.\""
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "2b7c4d196c8abe32f4ca633534917da9de53c359",
      "tree": "f14dc45f53d5681a5c0e57b8a8cc6b35eee6e896",
      "parents": [
        "84e524207b23d58a1b1e5f4443000ccac97c4184"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 19 10:52:16 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 19 15:19:28 2014 -0700"
      },
      "message": "Don\u0027t get and restore thread state for ScopedFastNativeObjectAccess.\n\nBefore we would ensure that we were runnable for fast native object\naccess. However, these are done when you are already runnable.\n\nChange-Id: Ia4c6e4c83d146fe2a988b37b3133ca46b0f0fa42\n"
    },
    {
      "commit": "d508006074c54a75a44520d3015b2504854c0026",
      "tree": "cf0bcbc14ea1f72777972033d9c687d023686d02",
      "parents": [
        "bf17a08fb48fa296acb09904d4c10ba42f63f55d"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Wed May 14 17:00:05 2014 +0700"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon May 19 12:38:25 2014 +0700"
      },
      "message": "Increase the size of guard for Stack Overflow (x86_64)\n\n24K stack overflow guard is not enough for 64-bit working in\nInterpreter mode. ART unit test 107-int-math2 crashes with it.\n\nPatch increases the size to 32KB.\n\nChange-Id: I8935c0f50f87c5ae0784dbae8be9db57ce2aebb3\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "507dfdd147c97bfbadebfd63584d094b6a4e7b47",
      "tree": "cce43931b6dcd088cb2932c2491f86116353a27f",
      "parents": [
        "922ddb30982d2597eab634d8b8598bec0eb7d3b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:42:40 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:50:51 2014 -0700"
      },
      "message": "Compatibility layer to transition from UniquePtr to std::unique_ptr.\n\nUse ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr,\nfor the host switch to std::unique_ptr. For now the type remains called\nUniquePtr.\nMake dalvik compile with clang on the host, move its build to C++11.\n\nChange-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12\n"
    },
    {
      "commit": "2aef07c154c0a8adbf016ac98b4695e44d5fe90f",
      "tree": "ea74b52f21bb54f22957505a0dc09c2629eba535",
      "parents": [
        "777dda87f14575db960ec4fb5cfd9efb857a6588"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 15 11:18:29 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 15 11:18:29 2014 -0700"
      },
      "message": "Workaround x86 interpretter stack overflow\n\nBug: 14982147\nChange-Id: I5fa5c30dbac7e50dd6dd7c8d12bbc769c0dfc150\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "119c6bd97f7ac24b64eaf4e9333abb44acbf780f",
      "tree": "d22dfb17249fa0dc5f1e506ca9eb88d9b9b6fa9f",
      "parents": [
        "b60508391b7f7343d39e39f98e7f254917cab91c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 09 14:11:47 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 09 14:20:54 2014 -0700"
      },
      "message": "Fix stub_test to pass with SS collector.\n\nChanged the test to access the allocation entrypoints from the thread.\n\nChange the order roots are visited to prevent a rare error where the\njava lang reflect art method would move before it was checked in\nSanityCheckFrame.\n\nChange-Id: Ifb96220f3fbb74ea5d720777f130450f04c0e044\n"
    },
    {
      "commit": "0651d41e41341fb2e9ef3ee41dc1f1bfc832dbbb",
      "tree": "ad060fe7f37f4958d15d15d868e0cf6fb074d2cb",
      "parents": [
        "adcfc69aa94cc1d406ef78e194b1ac36e389ad95"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 29 14:37:57 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 30 15:23:36 2014 -0700"
      },
      "message": "Add thread unsafe allocation methods to spaces.\n\nUsed by SS/GSS collectors since these run with mutators suspended and\nonly allocate from a single thread. Added AllocThreadUnsafe to\nBumpPointerSpace and RosAllocSpace. Added AllocThreadUnsafe which uses\ncurrent runs as thread local runs for a thread unsafe allocation.\nAdded code to revoke current runs which are the same idx as thread\nlocal runs.\n\nChanged:\nThe number of thread local runs in each thread is now the the number\nof thread local runs in RosAlloc instead of the number of size\nbrackets.\n\nTotal GC time / time on EvaluateAndApplyChanges.\nTLAB SS:\nBefore: 36.7s / 7254\nAfter: 16.1s / 4837\n\nTLAB GSS:\nBefore: 6.9s / 3973\nAfter: 5.7s / 3778\n\nBug: 8981901\n\nChange-Id: Id1d264ade3799f431bf7ebbdcca6146aefbeb632\n"
    },
    {
      "commit": "714f175bd66d03225927a84f3d5dbc923c5a3e7e",
      "tree": "093c8564827484af598bd116c7560b1893910e3d",
      "parents": [
        "d55e9b1a9f45c19cd7b376a8839ce37f86c66a64"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Apr 28 15:03:08 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 29 09:04:18 2014 +0200"
      },
      "message": "Visit deoptimized shadow frames as roots\n\nDuring deoptimization, we create shadow frames but do not attach them to the\nstack until we transition to interpreter mode. If a GC happens before that,\nthese shadow frames are not visited by GC so they may contain stale references.\n\nThis CL addresses this issue by visiting the shadow frames \"under contruction\"\nin Thread::VisitRoots so we correctly update all references they hold.\n\nTo make them visible, we now save the top shadow frame (the first one created)\nin the field Thread::tls_ptr_sized_values::deoptimization_shadow_frame. This\nfield will then be cleared when transitioning to interpreter mode.\n\nBug: 14324885\nChange-Id: Ib213ddc80f19cfcdfcec6f20acaa7f1a0e9ce2c1\n"
    },
    {
      "commit": "fd3077e4b9ebadd281777310d26e64443858f653",
      "tree": "c63911af29580ab8c0fc8dd29171e626871449aa",
      "parents": [
        "a08ec9b372d4f5e918b3d68499fbd1731180cd98"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 23 10:32:43 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 25 10:36:05 2014 +0200"
      },
      "message": "Refactor exception handling for deoptimization\n\nThis CL refactors the exception handling (on the quick side) by isolating the\nsearch of catch handler and the preparation of deoptimization.\n\nWe rename the CatchFinder class to QuickExceptionHandler so it\u0027s less specific\nto catch handler search.\n\nFinding catch handler happens in QuickExceptionHandler::FindCatch. Since the\nCatchBlockStackVisitor resolves exception types, it may cause thread suspension\nand breaks the assertion current thread can\u0027t be suspended. Therefore, we place\nthe exception in a SirtRef (while it is detached from the current thread) and\nremove the thread suspension assertion.\n\nDeoptimization now happens in QuickExceptionHandler::DeoptimizeStack. It uses\nthe new DeoptimizeStackVisitor class to create shadow frames.\n\nWe also add the Thread::GetDeoptimizationException method to get the definition\nof the fake exception in only one place.\n\nChange-Id: I01b19fa72af64329b5c3b6c7f0c3339d2d724978\n"
    },
    {
      "commit": "1246d689dc3150bbee6c5e5628747a94fba5081e",
      "tree": "24fb2b8271cdc524855f52bbc94361dbf5f8c2f0",
      "parents": [
        "f689b93e904e062d83a7ae7e8cacce0b52af3323",
        "ee1d79a603c77c0667b27c075a983579d5c51f7e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 02 07:45:51 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 02 07:45:52 2014 +0000"
      },
      "message": "Merge \"Cleanup transaction support\""
    },
    {
      "commit": "ee1d79a603c77c0667b27c075a983579d5c51f7e",
      "tree": "7b23516402105319ab4736cd179a1de9101eeb46",
      "parents": [
        "78bd9b2198f0ccc48036c1517b2d9a9023157dfb"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Feb 21 15:46:30 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 02 09:21:12 2014 +0200"
      },
      "message": "Cleanup transaction support\n\nUpdates Thread::CreateInternalStackTrace to support both transactional and\nnon-transactional modes using template.\n\nGeneralizes non-transactional mode for invariant fields (which are set only\nonce).\n\nRemoves ArrayLog::VisitRoots as we never create Array logs of ObjectArray. As\nObjectArray elements are set using Object::SetFieldObject, they are already\nrecorded in the object logs: the object is the array itself and the offset\ncorresponds to the element index in this array. And also checks we never log\nObjectArray in array logs.\n\nFixes location of thrown exception when calling native method during class\ninitialization.\n\nChange-Id: Idbc368d3b8292b85ff40bc8a7c559e085477bf89\n"
    },
    {
      "commit": "c751fdcc9491c1b60c3db517fbc41bb98e92441f",
      "tree": "a59258cf4b9c46e928e547216554149635e6d4f2",
      "parents": [
        "e0309ad355e778fe692beb8968bf8aa7edbd3302"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 30 15:25:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 01 10:58:22 2014 -0700"
      },
      "message": "Add handler for printing java stack traces for compiled code SIGSEGV.\n\nAdded a new FaultHandler which attempts to print a java stack trace\nwhen a SIGSEGV occurse in generated code. This should help debugging\ncompiler and GC related heap corruption.\n\nBug: 13725693\nBug: 12934910\n\nChange-Id: Id54d83ea180c222eb86d449c61926e83f0b026ad\n"
    },
    {
      "commit": "dd7624d2b9e599d57762d12031b10b89defc9807",
      "tree": "c972296737f992a84b1552561f823991d28403f0",
      "parents": [
        "8464a64a50190c06e95015a932eda9511fa6473d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 17:43:00 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 08:24:16 2014 -0700"
      },
      "message": "Allow mixing of thread offsets between 32 and 64bit architectures.\n\nBegin a more full implementation x86-64 REX prefixes.\nDoesn\u0027t implement 64bit thread offset support for the JNI compiler.\n\nChange-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147\n"
    },
    {
      "commit": "f943914730db8ad2ff03d49a2cacd31885d08fd7",
      "tree": "885a781e5f8bd852e2c1615108ae7b17576a6567",
      "parents": [
        "cfd5acf281b0c509f86b13d73c6a8dfa3ea9922c"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 27 15:10:22 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon Mar 31 18:04:08 2014 -0700"
      },
      "message": "Implement implicit stack overflow checks\n\nThis also fixes some failing run tests due to missing\nnull pointer markers.\n\nThe implementation of the implicit stack overflow checks introduces\nthe ability to have a gap in the stack that is skipped during\nstack walk backs.  This gap is protected against read/write and\nis used to trigger a SIGSEGV at function entry if the stack\nwill overflow.\n\nChange-Id: I0c3e214c8b87dc250cf886472c6d327b5d58653e\n"
    },
    {
      "commit": "e62a07eac9ba2bef01f373832dd810a2cee9f348",
      "tree": "0711cbff68a792896cd52c60e68830195a9ec71d",
      "parents": [
        "223efbe5164f6fe83cf04e7f9121adb29b8dd231"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 26 14:53:21 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 27 08:09:48 2014 -0700"
      },
      "message": "Last patch for running tests on ARM64\n\nThis allows all run-tests to succeed with the interpreter+GenJNI\nsetup.\n\nChange-Id: I45734e7e57340439369a613ef4329e3be2c0c4c9\n"
    },
    {
      "commit": "c93c530efc175954160c3834c93961a1a946a35a",
      "tree": "32a389e2b4cfc3296075aed23f353b8d3042c9a5",
      "parents": [
        "faa93b3ab455492dad1a9d3fb630e3936d389c85"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 20 16:15:37 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 21 12:17:56 2014 -0700"
      },
      "message": "Revoke rosalloc thread-local buffers at the checkpoint.\n\nIn the mark sweep collector, rosalloc thread-local buffers were\nrevoked during the pause. Now, they are revoked at the thread\ncheckpoint, as opposed to during the pause, which appears to help\nreduce the pause time.\n\nIn Ritz MemAllocTest, the average sticky pause time went down ~20%\n(925 us -\u003e 724 us).\n\nBug: 13394464\nBug: 9986565\nChange-Id: I104992a11b46d59264c0b9aa2db82b1ccf2826bc\n"
    },
    {
      "commit": "0d507d1e0441e6bd6f3affca3a60774ea920f317",
      "tree": "e07c72972b893e5fc57294b7a6a329cb9985a52c",
      "parents": [
        "0d9c02e661813abdf18b4e7544e204d2da719d20"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 19 10:17:28 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 19 15:12:04 2014 -0700"
      },
      "message": "Optimize stack overflow handling.\n\nWe now subtract the frame size from the stack pointer for methods\nwhich have a frame smaller than a certain size. Also changed code to\nuse slow paths instead of launchpads.\n\nDelete kStackOverflow launchpad since it is no longer needed.\n\nARM optimizations:\nOne less move per stack overflow check (without fault handler for\nstack overflows). Use ldr pc instead of ldr r12, b r12.\nCode size (boot.oat):\nBefore: 58405348\nAfter: 57803236\n\nTODO: X86 doesn\u0027t have the case for large frames. This could case an\nincoming signal to go past the end of the stack (unlikely however).\n\nChange-Id: Ie3a5635cd6fb09de27960e1f8cee45bfae38fb33\n"
    },
    {
      "commit": "53b8b09fc80329539585dcf43657bc5f4ecefdff",
      "tree": "cac0f82fbb89bd907104e3fed6c36203e11a3de0",
      "parents": [
        "0dea9872082bc3e576ed6cefed86b0d6c0c45ffd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 23:45:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 11:28:10 2014 -0700"
      },
      "message": "Refactor reflective method invocation.\n\nMove invocation code out of JNI internal into reflection, including ArgArray\ncode. Make reflective invocation use the ArgArray to build arguments rather\nthan allocating a jvalue[] and unboxing arguments into that.\nMove reflection part of jni_internal_test into reflection_test.\nMake greater use of fast JNI.\n\nChange-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057\n"
    },
    {
      "commit": "b373e091eac39b1a79c11f2dcbd610af01e9e8a9",
      "tree": "034d820c4829e0dcf6161473cc39f7250123bfaa",
      "parents": [
        "9545a446e99b22248099fe66f5f9431530c20851"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Feb 20 16:06:36 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 13 12:21:15 2014 -0700"
      },
      "message": "Implicit null/suspend checks (oat version bump)\n\nThis adds the ability to use SEGV signals\nto throw NullPointerException exceptions from Java code rather\nthan having the compiler generate explicit comparisons and\nbranches.  It does this by using sigaction to trap SIGSEGV and when triggered\nmakes sure it\u0027s in compiled code and if so, sets the return\naddress to the entry point to throw the exception.\n\nIt also uses this signal mechanism to determine whether to check\nfor thread suspension.  Instead of the compiler generating calls\nto a function to check for threads being suspended, the compiler\nwill now load indirect via an address in the TLS area.  To trigger\na suspend, the contents of this address are changed from something\nvalid to 0.  A SIGSEGV will occur and the handler will check\nfor a valid instruction pattern before invoking the thread\nsuspension check code.\n\nIf a user program taps SIGSEGV it will prevent our signal handler\nworking.  This will cause a failure in the runtime.\n\nThere are two signal handlers at present.  You can control them\nindividually using the flags -implicit-checks: on the runtime\ncommand line.  This takes a string parameter, a comma\nseparated set of strings.  Each can be one of:\n\nnone        switch off\nnull        null pointer checks\nsuspend     suspend checks\nall         all checks\n\nSo to switch only suspend checks on, pass:\n-implicit-checks:suspend\n\nThere is also -explicit-checks to provide the reverse once\nwe change the default.\n\nFor dalvikvm, pass --runtime-arg -implicit-checks:foo,bar\n\nThe default is -implicit-checks:none\n\nThere is also a property \u0027dalvik.vm.implicit_checks\u0027 whose value is the same\nstring as the command option.  The default is \u0027none\u0027.  For example to switch on\nnull checks using the option:\n\nsetprop dalvik.vm.implicit_checks null\n\nIt only works for ARM right now.\n\nBumps OAT version number due to change to Thread offsets.\n\nBug: 13121132\nChange-Id: If743849138162f3c7c44a523247e413785677370\n"
    },
    {
      "commit": "b3fabf456abc20ac9a5dfc94102ea318fc127c9e",
      "tree": "3908b4687126dd2c8dcfbf5862882a959d9989de",
      "parents": [
        "113f7a4b6093280e4783c69e06467f816a568e72"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 12 23:35:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 12 23:35:11 2014 -0700"
      },
      "message": "Bump up stack overflow region for 64bit.\n\nChange-Id: Ia57538ae4ae2d13c5c570a8cbdf3f7703b568c87\n"
    },
    {
      "commit": "463cb4d276587245b019c0334c8fcc75fe1d0c2a",
      "tree": "5ff8000c1dd39e67c624d2c5cfe5190db1c2b4c7",
      "parents": [
        "e78a4234cd78210f738d0c8ff1452f4955b31a87"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 12 16:23:09 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 12 16:23:09 2014 -0700"
      },
      "message": "Work-around stack overflow issues.\n\nChange-Id: I06693a53469f1f2cccc956bff5d53f04aed5f62d\n"
    },
    {
      "commit": "719d1a33f6569864f529e5a3fff59e7bca97aad0",
      "tree": "fcd84efd7b9806b93ec1a44e2317e6f882e7fe0e",
      "parents": [
        "5365eea9940269b662cfbe103caa348816ff1558"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 12:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 19:16:01 2014 -0800"
      },
      "message": "Enable annotalysis on clang ART builds.\n\nFix clang build errors aswell as restructure locking/mutex code for correct\nthread safety analysis support.\nReorder make dependencies so that host builds build first as they should\nprovide better compilation errors than target.\nRemove host\u0027s use of -fno-omit-frame-pointer as it has no value with correct\nuse of CFI, which we should have.\n\nChange-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90\n"
    },
    {
      "commit": "bf6b92a158053c98b15f4393abb3b86344ec9a20",
      "tree": "93a28d1e01b045a8df23fe5279601496b62af3dd",
      "parents": [
        "359597ee8c0667a7d2c0b74dcbb0f90bb6059bae"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 05 16:11:04 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 05 22:32:53 2014 -0800"
      },
      "message": "Generic JNI implementation for x86_64\n\nStarting implementation for generic JNI on x86_64. Frames are of\nlarge static size (\u003e4K) right now, should be compacted later. Passes\nthe whole of jni_compiler_test.\n\nChange-Id: I88ac3e13a534afe7568d62a1ef97cb766e8260e4\n"
    },
    {
      "commit": "b48b9eb6d181a1f52e2e605cf26a21505f1d46ed",
      "tree": "117d99c16f201b2f14adfe0922e56b9ff433c133",
      "parents": [
        "3c506f9877b4a106d93169b6bb5610b24a84d61c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 16:20:21 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 19:03:57 2014 -0800"
      },
      "message": "Fix clang to compile and run host tests.\n\nDon\u0027t use the computed goto interpreter with clang 3.4 as it causes compilation\nto hang.\nAvoid inclusion of LLVM_(HOST|DEVICE)_BUILD_MK except for with portable as it\nsets clang incompatible cflags.\nMost fixes are self-evident, for the quick dex file method inliner the enums\nwere being used with ostreams, so fix the enums and operator out python script\nto allow this.\nNote this change effects portable but this is untestable as portable was broken\nby ELF file and mc linker changes.\n\nChange-Id: Ia54348f6b1bd3f76d3b71c6e8c5f97626386b903\n"
    },
    {
      "commit": "15d3402bbf8265eb1165694da2e4117eb128f3bc",
      "tree": "eea2dae3c338d3070f63e086fa2a3669a9204873",
      "parents": [
        "ba8fdcc10193cdfa825c973d740b7ebf6dec2d89"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 26 17:16:38 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 28 17:02:17 2014 -0800"
      },
      "message": "Add custom SIGSEGV handler to help find heap corruption.\n\nThe new signal handler prints heap diagnostics when you get a SIGSEGV.\nAdded a fault message member in runtime which is modifiable by\nRuntime::SetFaultMessage. When you get a SIGSEGV it will print out\nwhatever is stored in this string as well as the normal information.\nThis is useful for debugging heap corruption since it lets you see\nwhich threads were in which methods when the last GC occured.\n\nAdded some smarter object dumping logic when the faulting address is\nin the heap.\n\nBug: 12934910\n\nChange-Id: Ia72be2c39f70ad711cbd746d66fad2b617d5d29f\n"
    },
    {
      "commit": "8d7672e476a526aa6205a008b5a06c8216342ac6",
      "tree": "44881b68a2a05b7dae78beb30c7589627781c0f0",
      "parents": [
        "661425e1f90d4f4ed44c66f5e74f48b92a3798df"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 25 10:57:16 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 25 11:01:01 2014 -0800"
      },
      "message": "Print message when throwing new exception with pending exception.\n\nUseful to see what the new exception is.\n\nBug: 12957138\nChange-Id: I751b3a9b0b5d57d72f15d3ed7fa746a1991b181c\n"
    },
    {
      "commit": "4e30541a92381fb280cd0be9a1763b713ee4d64c",
      "tree": "84093651bbf0ad95b66b846c4f4cf4101994037b",
      "parents": [
        "e266ba9935bd12d685d83f73cd8d759e46c3014d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 19 10:54:44 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 21 15:24:04 2014 -0800"
      },
      "message": "Fix and optimize verify object.\n\nVerifyObject no longer resides in heap. You can now enable\nVerifyObject for non-debug builds. VerifyStack is still slow, so it\nis now guarded by its own flag.\n\nFixed the image writer to not use verification at places where\nverification fails due to invalid reads.\n\nFixed RosAlloc to use SizeOf which doesn\u0027t call verify object.\n\nAdded a flag paremeter to some of the mirror getters / setters to\nbe able to selectively disable VerifyObject on certain calls.\n\nOptimized the GC to not verify each object multiple times during\nobject scanning if verify object is enabled.\n\nAdded 3 verification options: verify reads, verify this, and verify\nwrites so that you can select how much verification you want for\nmirror getters and setters.\n\nRemoved some useless DCHECKs which would slow debug builds without\nproviding any benefits.\n\nTODO: RosAlloc verification doesn\u0027t currently work with verify\nobjects.\n\nBug: 12934910\nBug: 12879358\n\nChange-Id: Ic61033104dfc334543f89b0fc0ad8cd4f4015d69\n"
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\n"
    },
    {
      "commit": "f5b0e20b5b31f5f5465784adcf2a204dcd69c7fd",
      "tree": "9e1b211414c1dcb34f19a7b509e72aee2153a3cf",
      "parents": [
        "68bb649b128cd8760732524bd7ba58b49780d9d3"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 11 17:02:22 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 13 13:43:43 2014 -0800"
      },
      "message": "Thread-local allocation stack.\n\nWith this change, Ritz MemAllocTest gets ~14% faster on N4.\n\nBug: 9986565\nChange-Id: I2fb7d6f7c5daa63dd4fc73ba739e6ae4ed820617\n"
    },
    {
      "commit": "89bb1449bbef1863b12dfa3813ab7c78be94316f",
      "tree": "57e4d0325144cd01d73af8b2fe475b9f72b6bad0",
      "parents": [
        "3c976a8f82007285316dd9d1bbccb659b0668a06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 12 10:06:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 12 10:18:24 2014 -0800"
      },
      "message": "Fix wrong thread id being passed to SIRT roots.\n\nFixes jhat on hprof dumps.\n\nChange-Id: I1a71eb3370606129fb5cf791ab582f34052a9f35\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "1efa0a9d6cd5f5b40b8a21d39f1103a3610250ee",
      "tree": "a7e8d43e657c6af0ff5e25ee029938b75bde6117",
      "parents": [
        "7c84c44f389e3f707eefafab35d4f838dbf7fe26"
      ],
      "author": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Tue Feb 04 02:08:31 2014 +0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 16:41:30 2014 -0800"
      },
      "message": "ART can\u0027t create more than 8k threads during the worktime\n\nART uses LDT to point to the Java Thread structure. This structure\ncan holds up to 8k pointers, so we can have 8k threads simultaneously.\nBut the current implementation does not free slots for the finished threads.\nThis means there cannot be more than 8k threads created during the whole\nlife cycle.\nThis patch implements the LDT slots freeing mechanism.\n\nChange-Id: Ifcf8fe1f4434a13f940146fff39b9c7bf91ee17b\nSigned-off-by: Alexei Zavjalov \u003calexei.zavjalov@intel.com\u003e\n"
    },
    {
      "commit": "e6da9af8dfe0a3e3fbc2be700554f6478380e7b9",
      "tree": "127a0565fce79f05d82d0ff242fbbffa6e2bc6b3",
      "parents": [
        "977d409b959497eecc44a35cff16115d0f04ccab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 11:54:42 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 08 14:16:12 2014 -0800"
      },
      "message": "Background compaction support.\n\nWhen the process state changes to a state which does not perceives\njank, we copy from the main free-list backed allocation space to\nthe bump pointer space and enable the semispace allocator.\n\nWhen we transition back to foreground, we copy back to a free-list\nbacked space.\n\nCreate a seperate non-moving space which only holds non-movable\nobjects. This enables us to quickly wipe the current alloc space\n(DlMalloc / RosAlloc) when we transition to background.\n\nAdded multiple alloc space support to the sticky mark sweep GC.\n\nAdded a -XX:BackgroundGC option which lets you specify\nwhich GC to use for background apps. Passing in\n-XX:BackgroundGC\u003dSS makes the heap compact the heap for apps which\ndo not perceive jank.\n\nResults:\nSimple background foreground test:\n0. Reboot phone, unlock.\n1. Open browser, click on home.\n2. Open calculator, click on home.\n3. Open calendar, click on home.\n4. Open camera, click on home.\n5. Open clock, click on home.\n6. adb shell dumpsys meminfo\n\nPSS Normal ART:\nSample 1:\n    88468 kB: Dalvik\n     3188 kB: Dalvik Other\nSample 2:\n    81125 kB: Dalvik\n     3080 kB: Dalvik Other\n\nPSS Dalvik:\nTotal PSS by category:\nSample 1:\n    81033 kB: Dalvik\n    27787 kB: Dalvik Other\nSample 2:\n    81901 kB: Dalvik\n    28869 kB: Dalvik Other\n\nPSS ART + Background Compaction:\nSample 1:\n    71014 kB: Dalvik\n     1412 kB: Dalvik Other\nSample 2:\n    73859 kB: Dalvik\n     1400 kB: Dalvik Other\n\nDalvik other reduction can be explained by less deep allocation\nstacks / less live bitmaps / less dirty cards.\n\nTODO improvements: Recycle mem-maps which are unused in the current\nstate. Not hardcode 64 MB capacity of non movable space (avoid\nreturning linear alloc nightmares). Figure out ways to deal with low\nvirtual address memory problems.\n\nBug: 8981901\n\nChange-Id: Ib235d03f45548ffc08a06b8ae57bf5bada49d6f3\n"
    },
    {
      "commit": "0aded089f565008ba5908e395e5914ca4f91f2de",
      "tree": "3b1238d956e0181d00243604c83c3a0be368437d",
      "parents": [
        "98ba6cebd22489c959d845884ee045dcbd958d41"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Nov 07 13:15:11 2013 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 07 10:58:07 2014 -0800"
      },
      "message": "Add sampling profiler\n\nThis adds a sampling profiler thread that runs every so often, gathering\nprofiling data and writing the results to a file in /data/data (specific to\napp running).  The intention is to use these files as input to the compiler\nso that it can determine the best methods to compile.\n\nBug: 11539952\nChange-Id: I0bfbb4146fb7966673c792f017ffac8107b6272d\n"
    },
    {
      "commit": "692fafd9778141fa6ef0048c9569abd7ee0253bf",
      "tree": "63ce2c7d4be6af2524a5f442195c8c8b6f5cc955",
      "parents": [
        "07dc96d370c4844c7a279c01cedf24a272b9f4f3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 29 17:24:40 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 16:57:37 2013 -0800"
      },
      "message": "Thread local bump pointer allocator.\n\nAdded a thread local allocator to the heap, each thread has three\npointers which specify the thread local buffer: start, cur, and\nend. When the remaining space in the thread local buffer isn\u0027t large\nenough for the allocation, the allocator allocates a new thread\nlocal buffer using the bump pointer allocator.\n\nThe bump pointer space had to be modified to accomodate thread\nlocal buffers. These buffers are called \"blocks\", where a block\nis a buffer which contains a set of adjacent objects. Blocks\naren\u0027t necessarily full and may have wasted memory towards the\nend. Blocks have an 8 byte header which specifies their size and is\nrequired for traversing bump pointer spaces.\n\nMemory usage is in between full bump pointer and ROSAlloc since\nmadvised memory limits wasted ram to an average of 1/2 page per\nblock.\n\nAdded a runtime option -XX:UseTLAB which specifies whether or\nnot to use the thread local allocator. Its a NOP if the garbage\ncollector is not the semispace collector.\n\nTODO: Smarter block accounting to prevent us reading objects until\nwe either hit the end of the block or GetClass() \u003d\u003d null which\nsignifies that the block isn\u0027t 100% full. This would provide a\nslight speedup to BumpPointerSpace::Walk.\n\nTimings: -XX:HeapMinFree\u003d4m -XX:HeapMaxFree\u003d8m -Xmx48m\nritzperf memalloc:\nDalvik -Xgc:concurrent: 11678\nDalvik -Xgc:noconcurrent: 6697\n-Xgc:MS: 5978\n-Xgc:SS: 4271\n-Xgc:CMS: 4150\n-Xgc:SS -XX:UseTLAB: 3255\n\nBug: 9986565\nBug: 12042213\n\nChange-Id: Ib7e1d4b199a8199f3b1de94b0a7b6e1730689cad\n"
    },
    {
      "commit": "59cde534aa295bad7de29472b3cce9576d7996a8",
      "tree": "acb79971feefac450a56bca758524614012c30e4",
      "parents": [
        "93461f9b0b1304b94eee0ef33ef5679406e84dd8"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Wed Dec 04 18:53:49 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Dec 05 15:52:08 2013 -0800"
      },
      "message": "Workaround for gcc volatile struct member bug\n\ngcc does not handle struct with volatile member assignments correctly.\nSee http://gcc.gnu.org/bugzilla/show_bug.cgi?id\u003d47409\n\nUsing structure assignments for the StateAndFlag union can cause gcc\nto optimise the code incorrectly. Doing the assignment using the\nas_int member forces the correct behaviour.\n\nChange-Id: I6379d36add16c321b2e4d1dcd6fd8c959f3f92d6\n"
    },
    {
      "commit": "2054553237998043f0cd3d6b9fef799a4e6d95c0",
      "tree": "417ccbc5f75eaf36cfd0b62c8eb169b29975dddc",
      "parents": [
        "212d2ab3f5b92095e90008f27293531fc311e96d",
        "61b7f1b05d1fe12d4009316263bf990903e4edff"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Nov 20 08:47:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 20 08:47:56 2013 +0000"
      },
      "message": "Merge \"Move single-step control into thread.\" into dalvik-dev"
    },
    {
      "commit": "61b7f1b05d1fe12d4009316263bf990903e4edff",
      "tree": "7929d410750a8099ef254d3858d1da87d595bac8",
      "parents": [
        "03aca12cc4b15a4d2fe1c6acbcb1d62b2baa9eb4"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Nov 15 15:59:30 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 19 21:13:27 2013 +0100"
      },
      "message": "Move single-step control into thread.\n\nThis CL moves single-step control into the Thread structure. This is stored in\nThread::single_step_control_ member. This allows to support single-stepping of\nmultiple threads at the same time.\n\nSince each thread holds its single-step information, we no longer need to use\nthe breakpoint lock to support single-stepping. It helps reduce lock contention\non this lock while debugging.\n\nAll JDWP tests passed on the host and on the target with this CL.\n\nBug: 11667502\nChange-Id: I886d5c8c625ca5a072803e296c32eec5f7e9e82d\n"
    },
    {
      "commit": "cf58d4adf461eb9b8e84baa8019054c88cd8acc6",
      "tree": "c49fa473b17e299bc649688076e7d69938741e4e",
      "parents": [
        "be56c9e63335ce99f1042e8660aeac4690b965a9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 26 14:21:22 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Sat Nov 16 21:35:03 2013 -0800"
      },
      "message": "A custom \u0027runs-of-slots\u0027 memory allocator.\n\nBug: 9986565\nChange-Id: I0eb73b9458752113f519483616536d219d5f798b\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "d9c4fc94fa618617f94e1de9af5f034549100753",
      "tree": "1305efbbc3d4bc306c0947bb6d4b01553667f98e",
      "parents": [
        "7ef126ce0593929bcf8fb73d8b1119ce3b95b3f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 01 19:45:43 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 02 09:31:55 2013 -0700"
      },
      "message": "Inflate contended lock word by suspending owner.\n\nBug 6961405.\nDon\u0027t inflate monitors for Notify and NotifyAll.\nTidy lock word, handle recursive lock case alongside unlocked case and move\nassembly out of line (except for ARM quick). Also handle null in out-of-line\nassembly as the test is quick and the enter/exit code is already a safepoint.\nTo gain ownership of a monitor on behalf of another thread, monitor contenders\nmust not hold the monitor_lock_, so they wait on a condition variable.\nReduce size of per mutex contention log.\nBe consistent in calling thin lock thread ids just thread ids.\nFix potential thread death races caused by the use of FindThreadByThreadId,\nmake it invariant that returned threads are either self or suspended now.\n\nCode size reduction on ARM boot.oat 0.2%.\nOld nexus 7 speedup 0.25%, new nexus 7 speedup 1.4%, nexus 10 speedup 2.24%,\nnexus 4 speedup 2.09% on DeltaBlue.\n\nChange-Id: Id52558b914f160d9c8578fdd7fc8199a9598576a\n"
    },
    {
      "commit": "3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5",
      "tree": "5298ccd9c1f1f6b329c0cb6cefac6a8df43dd633",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 12 21:33:12 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 25 20:28:49 2013 -0700"
      },
      "message": "Split the allocation path into \u0027instrumented\u0027 and \u0027uninstrumented\u0027\nones.\n\nThe instrumented path is equivalent to the existing allocation path\nthat checks for three instrumentation mechanisms (the debugger\nallocation tracking, the runtime allocation stats collection, and\nvalgrind) for every allocation. The uinstrumented path does not\nperform these checks. We use the uninstrumented path by default and\nenable the instrumented path only when any of the three mechanisms is\nenabled. The uninstrumented version of Heap::AllocObject() is inlined.\n\nThis change improves the Ritz MemAllocTest by ~4% on Nexus 4 and ~3%\non Host/x86.\n\nBug: 9986565\nChange-Id: I3e68dfff6789d77bbdcea98457b694e1b5fcef5f\n"
    },
    {
      "commit": "423d2a3dcbb260b020efb5da59f784c9f02accbf",
      "tree": "79ed739e6072f8308c1cd880f9420a1c63539c95",
      "parents": [
        "b048dd2b662c19644361f4396a1e8d6213445ee8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 12 17:33:56 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 10:30:24 2013 -0700"
      },
      "message": "Add support for changing roots through the root visitor callback.\n\nNeeded for copying collectors.\n\nChange-Id: Icc4a342a57e0cfb79587edb02ef8c85e08808877\n"
    },
    {
      "commit": "02ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4",
      "tree": "fd568452f4ae81868087e9a5f6c04a9051d0ef83",
      "parents": [
        "28c2300d9a85f4e7288fb5d94280332f923b4df3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 06 13:10:04 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 09 08:33:36 2013 -0700"
      },
      "message": "Move disassembler out of runtime.\n\nBug: 9877500.\nChange-Id: Ica6d9f5ecfd20c86e5230a2213827bd78cd29a29\n"
    },
    {
      "commit": "5ce4b178d2483df679e7f718e379305e5d42a300",
      "tree": "509c9e3b79448038e7263c147fdcc3fde7708cc6",
      "parents": [
        "212ec8f32919d50a1e1cb7ea4b3b91ca938ae4e6"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 16 16:27:18 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 16 16:57:04 2013 -0700"
      },
      "message": "Clean up sampling tracing.\n\n- Moved maps to fields within thread.\n- Created temp trace field to lessen amount of traces allocated and freed.\n\nChange-Id: I23fe25a85ad2894cc6917f87d4046cdececf0739\n"
    },
    {
      "commit": "57dac6ed61a0a25c14d4e2fabc84435578d42360",
      "tree": "9cb004e94b313f8aae2b0a29b4b9241bd207ec74",
      "parents": [
        "a68f43fa91531b2e8fe73fa5a5731f18a80ff801"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 15 16:36:24 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 15 16:36:24 2013 -0700"
      },
      "message": "Fix sampling profiler to use thread\u0027s cpu clock.\n\nThe sampling profiler was using the sampling thread\u0027s cpu clock to\nmeasure cpu time, instead of the sampled thread\u0027s cpu clock.\n\nChange-Id: Ief1f82e07e0353192c61521f67dec7a761905f64\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "848871b4d8481229c32e0d048a9856e5a9a17ef9",
      "tree": "4be4602e3becc899f76a29a87618801458fe04b9",
      "parents": [
        "423fb4d70f2ac36bf9f630146b4150771a8e7e76"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 05 10:56:33 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 07 22:17:00 2013 -0700"
      },
      "message": "Entry point clean up.\n\nCreate set of entry points needed for image methods to avoid fix-up at load time:\n - interpreter - bridge to interpreter, bridge to compiled code\n - jni - dlsym lookup\n - quick - resolution and bridge to interpreter\n - portable - resolution and bridge to interpreter\n\nFix JNI work around to use JNI work around argument rewriting code that\u0027d been\naccidentally disabled.\nRemove abstact method error stub, use interpreter bridge instead.\nConsolidate trampoline (previously stub) generation in generic helper.\nSimplify trampolines to jump directly into assembly code, keeps stack crawlable.\nDex: replace use of int with ThreadOffset for values that are thread offsets.\nTidy entry point routines between interpreter, jni, quick and portable.\n\nChange-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e\n"
    },
    {
      "commit": "7655f29fabc0a12765de828914a18314382e5a35",
      "tree": "219f2df20cf7f053a73a345ae20e131a73759c79",
      "parents": [
        "1a8080d4c2e1772cfcc5e9d6587bc63bba3945d9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 11:07:13 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 30 16:00:24 2013 -0700"
      },
      "message": "Portable refactorings.\n\nSeparate quick from portable entrypoints.\nMove architectural dependencies into arch.\n\nChange-Id: I9adbc0a9782e2959fdc3308215f01e3107632b7c\n"
    },
    {
      "commit": "166db04e259ca51838c311891598664deeed85ad",
      "tree": "5ffa63c1b3bf58e92be2890c54f0ba6fdec2059e",
      "parents": [
        "d41119e863a9f9c5809b7732d30870ffd237b60c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 26 12:05:57 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 09:52:11 2013 -0700"
      },
      "message": "Move assembler out of runtime into compiler/utils.\n\nOther directory layout bits of clean up. There is still work to separate quick\nand portable in some files (e.g. argument visitor, proxy..).\n\nChange-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "b9070095218595a5d6a37ef874df2794c1761030",
      "tree": "cab984d0ac72b8df4915f75277cd7efe0e8c9a3e",
      "parents": [
        "08524597899d0bb021c9165218deff51dc88da50",
        "df62950e7a32031b82360c407d46a37b94188fbb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 10:50:06 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 10:50:06 2013 -0700"
      },
      "message": "resolved conflicts for merge of df62950e to dalvik-dev\n\nChange-Id: I78fbcfc7a2dcbeccb7557ca27302928d7d00debd\n"
    },
    {
      "commit": "df62950e7a32031b82360c407d46a37b94188fbb",
      "tree": "038bf95a2ce296ae3e0c30a131ac22c0986f0f52",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 22:39:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:13:18 2013 -0700"
      },
      "message": "Fix cpplint whitespace/parens issues\n\nChange-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9\n"
    },
    {
      "commit": "42425b3a8befe092199fde69c95833e31db8fec9",
      "tree": "b8ba9958fbd3770d861b4a3568a868d9e92a5476",
      "parents": [
        "29cab20ba51c56a93f7d996c31c4970384313577",
        "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 17:03:11 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 17 17:03:11 2013 -0700"
      },
      "message": "am fc0e3219: Fix multiple inclusion guards to match new pathnames\n\n* commit \u0027fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d\u0027:\n  Fix multiple inclusion guards to match new pathnames\n"
    },
    {
      "commit": "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d",
      "tree": "5fc7f5b941724a62f8e3411df09fae431ff5e3cf",
      "parents": [
        "56d947fbc9bc2992e2f93112fafb73e50d2aaa7a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 14:40:12 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 16:49:05 2013 -0700"
      },
      "message": "Fix multiple inclusion guards to match new pathnames\n\nChange-Id: Id7735be1d75bc315733b1773fba45c1deb8ace43\n"
    },
    {
      "commit": "d6a23bd327c38b08aaf6846d426fd6824fe9780b",
      "tree": "73dd31e20ce3a6cf13d55e91bc89ab0638dbd5d1",
      "parents": [
        "1754938e68bf53d674ffac364336a5dd2f3a60f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 14:19:52 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 14:19:52 2013 -0700"
      },
      "message": "Don\u0027t manually mess with sigaltstack on Android any more.\n\nBionic now takes care of things.\n\nBug: 8557703\nChange-Id: I0510a193f2433eaf54c9c6ac3415c85b50a7f1d2\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "752a0e606afdc7aa4825ebbe62b187b8abba14cc",
      "tree": "0227935df9d993321812a126e6cfbaf13dd78d79",
      "parents": [
        "b126134010ebeee771da0eec7fa76ad13fe9a9c9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 27 11:03:27 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 27 14:38:48 2013 -0700"
      },
      "message": "Adding systrace logging to GC\n\nAdded systrace logging to GC, thread checkpoints, GC pause,\nand time spent waiting for concurrent GC to complete.\n\nChange-Id: I33f0cf260526ccfd07bfaf038dfbf0a712eab24d\n"
    },
    {
      "commit": "9cec247849c248f6c45a14eae5414b69eb8fc67d",
      "tree": "844d6fe7a5551356223c30be1955664bd0c802cd",
      "parents": [
        "e652cdd8f64d8479c9b7558f177dcee0bf6d026c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 18:17:06 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 18:17:06 2013 -0700"
      },
      "message": "Various improvements to interpreter.\n\n- Created separate Next_xxx methods to get the next instruction to\n  avoid having to look up the size based on the opcode.\n- Moved exception handling to after throwing instructions only.\n- Added a test of all thread flags before checking for suspend during\n  the interpreter execute loop.\n- Made it unlikely that instrumentation has dex pc listeners for\n  DexPcMovedEvent.\n\nChange-Id: I88afc98cf42f2e36c747582df8e74669d24ef864\n"
    },
    {
      "commit": "0878d654e7be8c9666579e22522704d8887415cc",
      "tree": "0e57c50e7f47a01900e540c0b5e509df4297afed",
      "parents": [
        "f8adc60455b90c95a6a3c8f87830e4e88b2644e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 17:38:35 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 17:42:02 2013 -0700"
      },
      "message": "Thread tidying.\n\nAdd is_started_ boolean to Thread so that we don\u0027t read an uncreated\npthread_key_self_, don\u0027t start twice or call shutdown when not started.\nDon\u0027t use a MutexLock in ThreadList::Unregister, as the MutexLock will\nhold a copy of self for the thread that\u0027s deleted.\nDon\u0027t memory leak the resume condition variable.\n\nChange-Id: I767968a9f785e560fc9e356a339e684de5ce2ffc\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\n"
    },
    {
      "commit": "04d7aa92bc5548bc4d272b9480614f06248194cc",
      "tree": "2b399853daab91995488c7d19a694063262f6531",
      "parents": [
        "aed0716b9592bb3095cdfc4b111011f9ed74877d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 16 14:29:17 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 16 14:29:17 2013 -0700"
      },
      "message": "Fix object verification.\n\nRefactor VERIFY_OBJECT_ENABLED to become less brittle to change enum and global\nconstant.\n\nChange-Id: Ie405106be81dce9a913730c7f46a5659582fa18b\n"
    },
    {
      "commit": "0f827169742aad6209d830db773a101849c32a83",
      "tree": "df06bd3d9fa91757d2c87fbe891007184f823e9d",
      "parents": [
        "eb5cb608fcb0d636961653ad561b2c7ee40de1ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "message": "Fix JDWP ObjectRegistry lock ordering.\n\nAlso make debugging lock ordering violations nicer by using our\nLockLevel operator\u003c\u003c.\n\nChange-Id: Ic15ebe70363a90a09f6491bd5c336a604e9d6c48\n"
    },
    {
      "commit": "1ffa32f0be7becec4907b26ead353e4b17e1219c",
      "tree": "4b023e55080f75a4945a44588d12bfbb3aec8bd3",
      "parents": [
        "c0fa3ad44a84b7f658d16a717027bf95abc85db6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 05 18:29:08 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 05 18:29:08 2013 -0800"
      },
      "message": "Reduce inlining in debug builds.\n\nFixes 018-stack-overflow on the host with interpreter.\n\nChange-Id: Ieed091b341b7812cfe898421a74d2f41f6a6a8bc\n"
    },
    {
      "commit": "693ff61274cd2c9b8eb7e68c370f84a911b8ca52",
      "tree": "11f1f6b3e5302b8a58c5ca44c3a1bec1b16d90a4",
      "parents": [
        "12a2bdd245ea866b665d4800b493397ec412892a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 01 10:56:12 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 01 21:29:49 2013 -0800"
      },
      "message": "Performance improvements by removing a DMB and inlining.\n\nCorrect the version of CAS used by Mutex::Lock to be acquire and not release.\nDon\u0027t do a memory barrier in thread transitions when there is already a\nbarrier associated with the mutator lock.\nForce inlining of the hot thread and shared lock code, heavily used by down\ncalls and JNI.\nForce inlining of mirror routines that are used by runtime support and hot.\n\nPerformance was measured and improved using perf and maps.\n\nChange-Id: I012580e337143236d8b6d06c1e270183ae51083c\n"
    },
    {
      "commit": "11ffc2d02b7d979f26a8a04013fce3eb4f9a2816",
      "tree": "a54cdfe70f2bd45ea36bfd6cf9e7ad8783a29234",
      "parents": [
        "e9de2dd6bd51f9be3457b5e2ffdd97f457ddebcb"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Feb 01 11:52:17 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Feb 01 14:45:01 2013 -0800"
      },
      "message": "Changes to LLVM to support deoptimization.\n\nAdded a magic exception value (-1) and a handler to transition\nto the interpreter. This is currently untested.\n\nChange-Id: I2f53135e7505c54355ecf7c579897f68bbdcbda3\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    },
    {
      "commit": "7a22fa657b972e8323692368975bc5a7be1cc0f5",
      "tree": "4fe55837daae4e252eeaccf1be931f2e7ed434cb",
      "parents": [
        "87b185f3bfd766001dcd5977fc0ee0489e5a8a28"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 12:16:16 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 12:21:05 2013 -0800"
      },
      "message": "Refactor StackVisitor to take a Thread*.\n\nThis allows assertion checking on the thread, principally that we never try to\nwalk the stack of an unsuspended thread.\nFix bug in the OwnedMonitorVisitor where GetVReg could be called on a\nStackVisitor with no context.\n\nChange-Id: I06539b624b253b6fb7385e7be11a4bced1d417b2\n"
    },
    {
      "commit": "1eab958cde39a7e2f0e5ce01730f4e2e75c72519",
      "tree": "9a1f3f663b891385f8572720c26fef0797510320",
      "parents": [
        "28d76682d591034a5bcb610487c1f2db32d01c84"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jan 22 13:33:52 2013 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jan 22 15:18:31 2013 -0800"
      },
      "message": "Remove kExceptionPending flag from thread and codegen.\n\nCode just checks if exception_ is NULL instead. Compiled code simply\nclears the exception_ field for MOVE_EXCEPTION instead of calling a\nhelper.\n\nChange-Id: Iefaa780f66c327c3d20598bd71d3c14d7a9c8119\n"
    },
    {
      "commit": "f327e07b37e349b1ec5eaad6dc294a9b7a081d20",
      "tree": "2c64b1f6212045a529c18d1dbe04b3da8fd1d6e9",
      "parents": [
        "9e0c175a0cea5c8c88a6927e6375554118f74a82"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 16:01:26 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 18:07:12 2013 -0800"
      },
      "message": "Implement ObjectReference.MonitorInfo.\n\nChange-Id: Iefc276939b9e569f4ea4d7a5af9a28276a3fb632\n"
    },
    {
      "commit": "4cd121ef0cb35fced70c7d9de378277be7a727d9",
      "tree": "c786e70cfe50147749d9dd7494dd7112271c8f60",
      "parents": [
        "1a25aa432314bcf008c11e3514afc0b7aeb64d5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 17:35:41 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 08 11:06:02 2013 -0800"
      },
      "message": "Implement the Thread.sleep native method.\n\nThis makes returning TS_SLEEPING from JDWP simple and cheap, and\nmakes the stack dumps for sleeping threads more easily understood\nby app developers (because there\u0027s no Object.wait magic going, and\nthe thread state is \"Sleeping\" rather than \"TimedWaiting\").\n\nAlso make Object.wait() a native method in its own right, so every call into\nMonitor::Wait can explicitly pass the most appropriate ThreadState: kSleeping,\nkWaiting, or kTimedWaiting.\n\nAlso add Thread.sleep and Object.wait(long, int) calls to the ThreadStress test.\n\nChange-Id: I49adb45dbcd669eba7cf3def45e6cbfc461a3254\n"
    },
    {
      "commit": "80537bb742dff4ccdf6d04b1c0bb7d2179acc8cb",
      "tree": "38c5fc3dd0344ddf721320c07e39136b37a38815",
      "parents": [
        "6641ea12b98dda9ec45d29f20e43f85698b88a02"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 04 16:37:26 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 11:24:50 2013 -0800"
      },
      "message": "Fix and reenable lock dumping in stack dumps.\n\nThis patch adds a flag to tell the method verifier not to load\nclasses when resolving types, so that when we ask the method verifier\nto find monitor-enter instructions for stack dumping it doesn\u0027t try\nto allocate (since the most common cause of stack dumping is SIGQUIT).\nWe believe that all the classes we care about will be loaded already\nanyway, since we\u0027re only interested in _held_ locks, and you can only\nhold a lock if you\u0027ve executed the code that leads to the monitor-enter,\nand you can\u0027t execute the code without loading the relevant classes.\nAny not-yet-loaded classes shouldn\u0027t be relevant for our purposes.\n\nAlso clarify the stack dumps when a thread is starting up; although\nstrictly speaking a thread might be in the kNative state, it\u0027s more\nhelpful if we also explicitly say that it\u0027s still starting up.\n\nAlso a few GC log output fixes.\n\nChange-Id: Ibf8519e9bde27838c511eafa5c13734c5bebeab6\n"
    },
    {
      "commit": "306057fd278d75bf3794bd5243a3b6652c487d18",
      "tree": "62652a97caace11e50408d15688ced3514039219",
      "parents": [
        "2d76b041be770102fc912effc398e629a18180d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 26 12:45:53 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 02 11:15:42 2013 -0800"
      },
      "message": "Support for deoptimization needed for debugging.\n\nThe deoptimization code is untested, and some sanity checks in the\ninstrumentation are disabled because they need debugging.\n\nChange-Id: I1b60a65a60bddc9b107ad4659da097b55ce901c3\n"
    },
    {
      "commit": "761600567d73b23324ae0251e871c15d6849ffd8",
      "tree": "4757cb01233394fa2e9c461a68fc37a35c12dabb",
      "parents": [
        "89c41e5f2fa10e7b97698b9714bd4883a73132f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "message": "Switch over to the google3 unix_file File*.\n\nI also moved macros.h to base/macros.h to ease google3 porting, at\nthe expense of a larger than necessary change. (I learned my lesson,\nthough, and didn\u0027t make the equivalent base/logging.h change.)\n\nI\u0027m not sure whether we want to keep the unix_file MappedFile given\nour existing MemMap, but it\u0027s easier to bring it over and then remove\nit (and possibly revert the removal) than to bring it over later.\n\nChange-Id: Id50a66faa5ab17b9bc936cc9043dbc26f791f0ca\n"
    },
    {
      "commit": "a77f0f68a59870ff027dad654fe31eb3fdaf3d5d",
      "tree": "c041a68efb55db65ab8f195938097a887f5fcc01",
      "parents": [
        "a169e1d8d968800380245cda450505d969ebff76"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 05 17:19:31 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 06 10:14:46 2012 -0800"
      },
      "message": "Various fixes for JDWP.\n\n- Moved lock of thread list lock into DecodeThread from its callers\n- Fixed scope of various locks to prevent locking violations\n- Added transition for current thread from runnable to suspended before\n  suspending vm, and then a transition back\n- Reworked lock ordering to allow JDWP locks to be held while grabbing\n  the thread list lock\n- Moved debugger PostException until after suspension is re-allowed\n\nChange-Id: Ie53e47ff1538e6cd3125c48ddb4c13758b29be63\n"
    },
    {
      "commit": "ce4cc0d1818e872c1c7f3c3519a82259afd5c288",
      "tree": "308f2c30e5a842a5e459d96e730ca4432a020f4f",
      "parents": [
        "823b8acdf2c8274ff93b685e50a93ab9afc6af8b"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Nov 18 16:59:53 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Dec 04 11:07:34 2012 -0800"
      },
      "message": "Using gcmap instead of shadow frame.\n\nFix misuse of TBAAJRuntime \u0026 TBAARuntimeInfo. Now, the TBAAJRuntime is\nonly for runtime support function.\n\nUpdate DexPC before lock object and suspend.\n\nChange-Id: I40fa37f4863fe6e127328a8413285ee3c62e8505\n"
    },
    {
      "commit": "07ec8e17c978e3bda0202693e6432b56349a5867",
      "tree": "112bccd79024ebd831507c42672e01abc13b726e",
      "parents": [
        "cfaa455374aae0a08c8cb28b5bb306b17866d652"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Dec 01 01:26:51 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Dec 01 11:44:15 2012 -0800"
      },
      "message": "Intrinsic for java.lang.Thread.currentThread.\n\nChange-Id: I056323a74f8759257bf6b6bb032437e576665006\n"
    },
    {
      "commit": "cfaa455374aae0a08c8cb28b5bb306b17866d652",
      "tree": "ca8f25a06f234385b6e62bb774085f1324e5d519",
      "parents": [
        "3676aeb03d5f70933891bb3b21abb8e31a81e36c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 26 21:00:08 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 30 16:38:21 2012 -0800"
      },
      "message": "Turn the thread peer_ into a Object*.\n\nDon\u0027t use a JNI global ref for the thread peer_ so that we can\nsupport more threads than we can global refs. This fixes run-test 51.\nFix a race in thread destruction where a thread may be requested to\nsuspend while deleting itself.\n\nChange-Id: Id8756a575becf80d2a0be0a213325034556927f1\n"
    },
    {
      "commit": "df1ce91ba97bc79a0637e5504b39318fb1c9f577",
      "tree": "06fee7c60611e94264b3b6b2b318fec899c6e450",
      "parents": [
        "af1b89281fd1f86efeb791b61f5a3f2031c70312"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 27 17:07:11 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 27 17:19:09 2012 -0800"
      },
      "message": "Add alignment attribute to packed.\n\nMake packed objects 4 byte aligned or else GCC becomes paranoid and\nassumes only byte alignment on whole objects.\nChange CHECK in GetCalleeSaveMethod to DCHECK to encourage inlining.\n\nChange-Id: I79f1a13752492413c919b36f4e207e637647834f\n"
    },
    {
      "commit": "94d6df471a406a03bb1afba8ca3ae9c0fbf366b5",
      "tree": "f89af30dbe4a23dc6f62bb17c3b0a36b778ade33",
      "parents": [
        "5bc252873e6e50f8257e33ca158d0e350413fcbf"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 16:02:12 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 16:02:12 2012 -0800"
      },
      "message": "Fixes to make all run-tests except 051-thread work.\n\n- Moved exception delivery into common method DeliverException\n- Renamed old DeliverException to QuickDeliverException since it is only\n  used by quick\n- Fixed null checks for arrays returned by GetReference\n- Standardized ArrayStoreException error message\n- Added additional sleeps to ensure threads stay alive long enough in\n  051-thread, and that \u003cclinit\u003e is complete for 084-class-init\n\nChange-Id: I9ca306896a4bd10f453150fcf3965d9750fa0cbd\n"
    },
    {
      "commit": "d752132c73072084a3def9257cca4fcee76047b6",
      "tree": "92c7bc15db2328db7c14c31f77504a7e879e8467",
      "parents": [
        "278b0db1ee55106486a7aecf39a581aac09fb619"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 21 15:38:24 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 21 15:38:24 2012 -0800"
      },
      "message": "Various fixes to the interpreter. First 23 run-test tests pass.\n\n- Factored out code to throw stack overflow error into its own method.\n- Increased kStackOverflowReservedBytes to 10kB to support interpreter.\n- Reordered return type checks to prevent type resolution with an\n  exception pending.\n- Fixed field checks so they pass if the field is static or the object\n  is the declaring class.\n- Suppressed using the interpreter for proxy methods.\n\nChange-Id: Ide73ec928ab0aa7b31229c4e69679a35dd948e43\n"
    },
    {
      "commit": "50ffee20ced9c0c7ac68889c86be8844cf120cf2",
      "tree": "53773866564cf275c7e67309e7529a4c6e45de78",
      "parents": [
        "b212a9974ccd3ce3fafb24ddab3b96762cecb14c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 11:47:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 11:47:44 2012 -0800"
      },
      "message": "Introduce -Xint flag for ART.\n\nChange-Id: I0f7d8c0b0f33e77ca2d3fbf05b7a16fedb86a545\n"
    },
    {
      "commit": "725a957985171d712d5c048cc3d00ff14968784b",
      "tree": "3bd4b161268ecd477aa471665316fb27a3dda145",
      "parents": [
        "35883cc623fdf475a4ead1dafcba9e9becc1ed11"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 13 18:20:12 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 14 11:42:33 2012 -0800"
      },
      "message": "Pulled out instrumentation into its own class separate from trace.\n\nThis is in preparation for Ian\u0027s debugger changes. The instrumentation\nstill needs support for debugging, which I\u0027ll add later.\n\nChange-Id: I29ce0af1ff2eaec8f6d2f54963263381363ebf72\n"
    },
    {
      "commit": "664bebf92eb2151b9b570ccd42ac4b6056c3ea9c",
      "tree": "783a4492b398078e8d5747f19f6019e91939c986",
      "parents": [
        "d22d54849c96760aa1efa259d6dcfbace54da2af"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 16:54:11 2012 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 17:37:38 2012 -0800"
      },
      "message": "Fix occasional deadlock caused by checkpoint root marking.\n\nThere was a race where a new worker thread would attach during the\ncheckpoint. This caused the thread to wait since suspend count !\u003d 0.\nBut when we decremented the suspend count, we did not broadcast to\nthe resume condition.\n\nAdded a create peer parameter to Thread::Attach and\nAttachCurrentThread. This is used by the threadpool since we don\u0027t\nneed a java peer for worker threads.\n\nChange-Id: I632926b5a6b52eeb0684b6e1dcbf3db42ba3d35c\n"
    },
    {
      "commit": "64b6d145fa53b8dfb07a8fc2426af13f155d5a4d",
      "tree": "727647da235e21508d6661c7e2a780ff8ee2003e",
      "parents": [
        "0f79d728370ab51b9b16a356b058c48330f43148"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 29 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 01 17:26:15 2012 -0700"
      },
      "message": "Interpret class initializers when building image.\n\nWe initialize all image classes with the interpreter if they have a\nclass/static initializer.\nBlack list classes whose initializers need access to on device native\ncode. If such classes are added to the image classes they will fail when\nthey attempt to enter JNI code. A number of \"intrinsic\" style JNI\nroutines are special cased to allow more than just trivial class\ninitializers to run.\nAdd a lock for initialization in the compiler to serialize the execution\nof class initializers and avoid deadlock.\nRemove InSourceSpace from image writer (cruft) and teach the image writer\nto fix up referent fields in references.\nFix bugs in the interprerter and implement filled-new-array.\nFactor some VM code to more easily share between the interpreter and\nJNI entry points.\n\nChange-Id: I6bb811dea84f1b82260b1a4e73ac7412179c0b41\n"
    },
    {
      "commit": "6ed960d260d0ec3cbbef455c646ccd47f4e78119",
      "tree": "73c5db413bab25b3462ddc35e10fd6392123b525",
      "parents": [
        "bf90dbe0ad99b91dc20f6e35ee32a05884c5c481",
        "0e4627e593bc39f8e3d89c31f8977d55054c07cc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 12:01:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 26 12:01:17 2012 -0700"
      },
      "message": "Merge \"Add thread pool class\" into dalvik-dev"
    },
    {
      "commit": "0e4627e593bc39f8e3d89c31f8977d55054c07cc",
      "tree": "1d69558732c0c916e51a530985a26d4235ef0e6c",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 23 16:13:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 12:00:03 2012 -0700"
      },
      "message": "Add thread pool class\n\nAdded a thread pool class loosely based on google3 code.\n\nModified the compiler to have a single thread pool instead of creating new threads in ForAll.\n\nMoved barrier to be in top level directory as it is not GC specific code.\n\nPerformance Timings:\n\nReference:\nboot.oat: 14.306596s\ntime mm oat-target:\nreal    2m33.748s\nuser    10m23.190s\nsys 5m54.140s\n\nThread pool:\nboot.oat: 13.111049s\ntime mm oat-target:\nreal    2m29.372s\nuser    10m3.130s\nsys 5m46.290s\n\nThe speed increase is probably just noise.\n\nChange-Id: If3c1280cbaa4c7e4361127d064ac744ea12cdf49\n"
    },
    {
      "commit": "c531cefbfb5394413122e9f57d211ba436cff012",
      "tree": "f1a7183c0aa17414df90409e99dc24e84aaa2562",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 18 07:09:20 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 26 10:13:33 2012 -0700"
      },
      "message": "Eliminate #ifdef ART_USE_QUICK_COMPILER\n\nOne of several steps towards having a single compiler build.\nIn this CL, we introduce a compiler_backend command-line option\nto select between Quick, Quick w/ GBC, Portable and Iceland\nback ends.  The Iceland option is temporary, and will go away once\nwe combine with Portable.  The Quick variants are with\nand without GBC conversion.  In time, those will converge to a\nsingle option.\n\nAll uses of \"#if defined(ART_USE_QUICK_COMPILER)\" are eliminated.  All\nprevious uses in the Quick compiler have been converted to runtime\ntests.  On the llvm side, ART_USE_QUICK_COMPILER was previously\nused to differentiate between Portable and Iceland builds.  Those\nusages have been replaced with ART_USE_PORTABLE_COMPILER, and in\na following CL will also be converted to run-time tests.\n\nAs of this CL, we\u0027re still generating separate libraries for\nQuick and Portable/Iceland.  Next up is elminating the target-specific\nlibraries for Quick-arm, Quick-x86 and Quick-mips.  Once that is\ncomplete, we will consoldate Quick and Portable into a single build.\n\nTo build either Iceland or Portable, touch USE_PORTABLE_COMPILER or\nUSE_LLVM_COMPILER as usual.  Otherwise, the build will default\nto Quick (non-GBC).\n\nChange-Id: Ic86c56f51710c9b06d4430b71a429ae12903cc47\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": "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": "6f1c94968ada57da433debf8e2d1b38a80ceb510",
      "tree": "3628c7d9f5273d2c83dd7c6f9e816816eed8b70a",
      "parents": [
        "0051be6d118c511308ed7764ef41e0d594292c49"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 12:08:41 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 12:37:33 2012 -0700"
      },
      "message": "Add root verification when we try to mark an invalid object.\n\nNow when we try to mark an object not contained by any spaces, We call verify\nroots. This prints the root\u0027s vreg and method when it finds an invalid root.\n\nFixed a error in the total paused time statistic.\n\nChange-Id: Id10e4097cce56bc54ee488de32183c18ba3f3780\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": "01ae5808367e641a983e3f8bb82b3e0d364cd03e",
      "tree": "34ce5f4f5a9405f8270d623571a058dcd993fd39",
      "parents": [
        "a75a01313e801c53145df00bad1842d9f643c0a1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 16:14:01 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 16:14:01 2012 -0700"
      },
      "message": "Fix race in thread attaching during GC.\n\nForgot to mask in suspend request if thread is attaching during GC.\nLots of extra assertions and debugging.\n\nChange-Id: Id4d2ab659284acace51b37b86831a968c1945ae8\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": "30e173f6da202e4caa37ceb477e2fbbe09cec990",
      "tree": "ce694f29d013e8adc6b8218f2434889b2e1f4765",
      "parents": [
        "63818dc8b06af4a1e65c41b453f1a42166c22728"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 26 14:35:03 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 26 14:35:03 2012 -0700"
      },
      "message": "Fix Mac build.\n\nChange-Id: I2d83c018399422af0f8aa1cdaba7ade014053992\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"
    }
  ],
  "next": "474b6da273c7ce6df50a4e51eb9929a77e1611c3"
}
