)]}'
{
  "log": [
    {
      "commit": "6f3a70f316f2f3dcde5b3bde5fb258c556c46da6",
      "tree": "e44245379077f57dee20b8576fa96c3d4c31704a",
      "parents": [
        "85347bd18d47066ea9a214d29cec994472ad18ca"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 16 13:58:05 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 08:33:16 2016 -0800"
      },
      "message": "ART: Change ThreadPool::Wait behavior\n\nWhen a pool is in the stopped state, Wait() will not wait for all\ntasks to complete.\n\nBug: 31385354\nTest: m test-art-host-gtest-thread_pool_test\nChange-Id: Id0144b685ee2fddf1a1c2c2ca334251130121033\n"
    },
    {
      "commit": "bb661c0f0cb72d4bbfc2e251f6ded6949a713292",
      "tree": "4fe7e66f3385b1955934d3ec6f02e00bde6e13b8",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Mon Apr 04 16:27:32 2016 +0100"
      },
      "committer": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Fri Apr 22 13:33:30 2016 +0100"
      },
      "message": "Refactor use of __ANDROID__ macro\n\nWe use the __ANDROID__ macro, which is provided by the toolchain, in\nnumerous places. This patch refactors the usage of this by defining a\nnew macro, ART_TARGET_ANDROID, that is being passed during build to\nART_TARGET_CFLAGS in Android.common_build.mk on the same line as\nART_TARGET. The codebase currently assumes that the existence of the\n__ANDROID__ macro implies that we are compiling art for an android\ntarget device. This is because, currently, target builds are compiled\nwith target toolchains that provide the macro, while host toolchains\ndo not.  With this change this assumption is still preserved. However,\nin a future patch we will add the ability to compile art for a linux\ntarget, and in that case the ART_TARGET_ANDROID macro won\u0027t be passed\nanymore.\n\nChange-Id:  I1f3a811aa735c87087d812da27fc6b08f01bad51\n"
    },
    {
      "commit": "9e927f57415372591bab2a5c7af2520204902ca4",
      "tree": "3789604f5c0edb89e2fbe2871ebaf2348111860f",
      "parents": [
        "73e31f8ae826be5b9b0c3c216abb904cbfa71077"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 29 20:49:38 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 01 14:41:51 2016 -0800"
      },
      "message": "Lower JIT thread priority\n\nModify the JIT thread to run at a lower priority in order to allow\nUI-critical threads to get enough CPU time.\n\nBug: 27417985\n\n(cherry picked from commit e701f088f8fe3a2c1f16e2895402f26283f4bcc7)\n\nChange-Id: I5b962a7970ae81dac9e01a8011128c538cd78e40\n"
    },
    {
      "commit": "629e9350b0b72998416504f7a6fb95b6086daca8",
      "tree": "87e98bf173f0ccd98c0f0fb728c70d4a8c0eacc6",
      "parents": [
        "ad15539f5a1135d82439c5eb3ed4bb80c422a734"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 17:22:16 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 12:11:39 2015 +0000"
      },
      "message": "Properly delete the jit thread pool.\n\nbug:25461989\nbug:25462600\nChange-Id: I273cf256285d01c085e4dea1d997955d029361b9\n"
    },
    {
      "commit": "0b6e283291eac009eb9170525dd774d1e007025a",
      "tree": "8c28c06297921957503a8dc8a175c56ec1f6ef74",
      "parents": [
        "8c20e7609fdc8bbf16979a874301e4cab0dbf355"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 10:41:33 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 10:43:26 2015 +0100"
      },
      "message": "ART: mprotect() bottom page of ThreadPoolWorker stacks.\n\nThis will catch stack overflows instead of creating hard\nto find issues later on.\n\nBug: 24133462\nChange-Id: I3ae5d5da70b8167867936b2561830f3ff47f14fc\n"
    },
    {
      "commit": "c1a03d91e5f76ff3f48ed4b8b992924d6b128ce2",
      "tree": "7898069d78f516f38622de7df2af33559d67beb5",
      "parents": [
        "07c65d2b0c7faa6ffc288f538181177809aa5bdb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 09 16:58:42 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 09 16:58:42 2015 -0700"
      },
      "message": "Remove unused WorkStealing thread pool\n\nBug: 10141986\nChange-Id: Id2042320afc91b34b6203e82fb56424281c8d64b\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "5c42c29b89286e5efa4a4613132b09051ce5945b",
      "tree": "5db25a4f62c5583f2f6fc42b9a2ff47362eeed5c",
      "parents": [
        "242026e246a8b9efe098a0cce008fd525e011e5b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 25 12:02:49 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 02 18:07:03 2015 +0000"
      },
      "message": "Add support for .bss section in oat files.\n\nChange-Id: I779b80b8139d9afdc28373f8c68edff5df7726ce\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\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": "dcc5c7598d38fcb555266c8618df720acea3b954",
      "tree": "40caa1e6430b0c1cc729ce6caae3fab912701b6b",
      "parents": [
        "e9c36b34efb7460f59c6766e526c9b0de8da70b3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 21 10:13:31 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 21 10:13:31 2013 -0800"
      },
      "message": "Remove sleep workaround in thread pool.\n\nNot required after the race condition in bionic has been fixed.\nBug: 11693195\n\nChange-Id: Ib27ff79d86caa50676b40a0acd3cab071e65779f\n"
    },
    {
      "commit": "8af3d2ba07bd3f0247880ef4725f9db19f11cf5f",
      "tree": "0d4afd5957a1e8fc95b573a46304b489a9350304",
      "parents": [
        "12aeccd09a87be7a0b995182151d778cfeb50e73"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 15 09:47:39 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 15 10:56:32 2013 -0800"
      },
      "message": "Temporary fix for target tests.\n\nAvoid a race in pthread_join which causes us to free the memmap\nstack before it is done being used.\n\nBug: 11693195\nChange-Id: Ic453359cebc7395e10e83319aa25528b8d1f3882\n"
    },
    {
      "commit": "bcd5e9daecad39f0dab3246808b4835caec29ea6",
      "tree": "1221f94faef80c649e7236f0e7c3045383720abb",
      "parents": [
        "dfcca560e7b92e055a02adb39fdfb11798144cdd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 13 14:33:28 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 13 14:48:41 2013 -0800"
      },
      "message": "Manually manage thread pool stacks.\n\nWe now allocate the thread pool worker stack using a MemMap. This\nenables us to name the maps so that we get more descriptive output\nfor debugging leaks.\n\nAppears to fix the mips build 5/5 successful clean-oat and builds.\nThis is probably since glibc caches up to 40 MB of thread stacks\nbefore releasing them.\n\nChange-Id: I1df2de50cb95838aa0d272a09807021404ba410c\n"
    },
    {
      "commit": "a3d2718d1fac53210b2a311b1728409d6c8e7b9d",
      "tree": "5f000437e67d2def425d0e25c3b53cef8bf2515b",
      "parents": [
        "f7ee11632e3dfda29d553d8962be9747d5ce6dfd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Nov 05 23:22:27 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Nov 06 01:33:23 2013 -0800"
      },
      "message": "Change thread.h to thread-inl.h to pick up missing Thread::Currnet for debug build in master\n\nChange-Id: I56a4dd18ec1c212f9dbb73b14c0c0623b23c87bd\n"
    },
    {
      "commit": "2775ee4f82dff260663ca16adddc0b15327aaa42",
      "tree": "d3c5bd75af01738e5f00459c308a5133a6de321f",
      "parents": [
        "4aa48fccbd3782d78207a79541b61948a066b8fc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 20 17:43:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 21 15:45:33 2013 -0700"
      },
      "message": "Add more runtime options.\n\nChanged HeapGCThreads to be split into two different options:\n-XX:ParallelGCThreads: Which specifies how many threads the GC may\nuse when the mutators are suspended.\n\n-XX:ConcGCThreads: Which specifies how many threads the GC may use\nwhen the mutators are running.\n\nAdded runtime options to specify long pause / long GC thresholds:\n-XX:LongPauseThreshold (default 5ms)\n-XX:LongGCThreshold (default 100ms)\nThese thresholds were previously constants, but are now runtime\noptions. If we exceed either of the thresholds, we print the GC\nmessage.\n\nAdded a new runtime option: -XX:IgnoreMaxFootprint which makes it\nthat the GC only does GC when the number of bytes allocated hits\nthe growth limit. This causes GC to occur much less frequently and\ncan be useful to measure how much of an impact GC has on performance.\n\nChanged the GC behaviour to use only one thread when we do not care\nabout pauses to prevent jank that can be caused by 2 simultaneous GC\non different processes fighting for CPU time.\n\nAdded thread pool functionality for changing the maximum number of\nactive workers.\n\nFixed an accounting error where we didn\u0027t count large objects in the\ntotal freed.\n\nBug: 9986416\n\nChange-Id: I86afa358d93dcd3780e18ac5d85bdb1a130cb7e7\n"
    },
    {
      "commit": "720ef7680573c1afd12f99f02eee3045daee5168",
      "tree": "2c08ce225d8e6280bd0b4fa75ccf1369be3b8cc2",
      "parents": [
        "5bf1d38c0f0294a6632c0c6b2c0ba6bd642aa1c0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 17 14:46:54 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 19 09:26:23 2013 -0700"
      },
      "message": "Fix non concurrent GC ergonomics.\n\nIf we dont have concurrent GC enabled, we need to force GC for alloc\nwhen we hit the maximum allowed footprint so that our heap doesn\u0027t\nkeep growing until it hits the growth limit.\n\nRefactored a bit of stuff.\n\nChange-Id: I8eceac4ef01e969fd286ebde3a735a09d0a6dfc1\n"
    },
    {
      "commit": "94c32c5f01c7d44781317bf23933ed0a5bc4b796",
      "tree": "a59e9dcf43671ac624e3db2ed88e5ebd4a65ce9d",
      "parents": [
        "d2b0f33cf01601f040494f4f882e60f70b527930"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 09 11:14:04 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 16 16:30:59 2013 -0700"
      },
      "message": "More parallel GC, rewritten parallel mark stack processing.\n\nCard scanning may now be done in parallel. This speeds up sticky and\nreduces pause times for all GC types.\n\nSpeedup on my mako (ritz perf):\nAverage pause time for sticky GC (~250 samples):\nWithout parallel cards scanning enabled: 2.524904215ms\nParallel card scanning (num_gc_threads_): 1.552123552ms\nThroughput (~250 samples):\nSticky GC throughput with parallel card scanning: 69MB/s\nSticky GC throughput without parallel card scanning: 51MB/s\n\nRewrote the mark stack processing to be LIFO and use a prefetch queue\nlike the non parallel version.\n\nCleaned up some of the logcat printing for the activity manager\nprocess state listening.\n\nAdded unlikely hints to object scanning since arrays and classes are\nscanned much less often than normal objects.\n\nFixed a bug where the number of GC threads was clamped to 1 due to a\nbool instead of a size_t.\n\nFixed a race condition when we added references to the reference\nqueues. Sharded the reference queue lock into one lock for each reference\ntype (weak, soft, phatom, finalizer).\n\nChanged timing splits to be different for processing gray objects with\nand without mutators paused since sticky GC does both.\n\nMask out the class bit when visiting fields as an optimization, this is\nvalid since classes are held live by the class linker.\n\nPartially completed: Parallel recursive mark + finger.\n\nBug: 10245302\nBug: 9969166\nBug: 9986532\nBug: 9961698\n\nChange-Id: I142d09718c4609b7c2387cb28f517a6983c73288\n"
    },
    {
      "commit": "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c",
      "tree": "525a0f99f9381156367c988133b5d51d5dfef6f7",
      "parents": [
        "f69863b3039fc621ff4250e262d2a024d5e79ec8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 23:40:20 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:12:43 2013 -0700"
      },
      "message": "Fix cpplint whitespace/blank_line issues\n\nChange-Id: Ice937e95e23dd622c17054551d4ae4cebd0ef8a2\n"
    },
    {
      "commit": "2ce745c06271d5223d57dbf08117b20d5b60694a",
      "tree": "08ca327d1f1c8266fafb11422cfad6982f21e0bb",
      "parents": [
        "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 17:44:30 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 21:46:11 2013 -0700"
      },
      "message": "Fix cpplint whitespace/braces issues\n\nChange-Id: Ide80939faf8e8690d8842dde8133902ac725ed1a\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": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "d914eb2a839f7b40156ff0299a60e5cb80080b73",
      "tree": "87f074f452702557db365d06e637beb2759eb000",
      "parents": [
        "25ae7ebfd227869dd12f807047c56177d0bf645b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 16:11:15 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 16:16:09 2013 -0700"
      },
      "message": "Thread pool tidying.\n\nMake fields const. Fix memory leak in gtest caused by not allowing thread pool\nto empty tasks.\n\nChange-Id: I32b20dee17eab03443c4bd1f3cc102c4409d1ab9\n"
    },
    {
      "commit": "1aa246dec5abe212f699de1413a0c4a191ca364a",
      "tree": "ee9f5be423f56620f211525070273afc7a19c27d",
      "parents": [
        "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "message": "Move casts.h and stl_util.h into base/.\n\nChange-Id: Idb3bfa5cec3d146e488031d91265737cde2b4cf4\n"
    },
    {
      "commit": "35883cc623fdf475a4ead1dafcba9e9becc1ed11",
      "tree": "792bdfcb0a556f7c54a35d9c0e4409d3ca4dd2e5",
      "parents": [
        "ec13743da80a80c1817cf6660c28917fc28846bc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 13 14:08:12 2012 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 13 16:33:39 2012 -0800"
      },
      "message": "Ensure ThreadPool constructor does not return until fully initialized.\n\nThread pool was being deleted too early during runtime shutdown,\nthis was causing a GC running during runtime shutdown to\noccasionally reference a deleted thread pool.\n\nFixed an error where the thread pool was being deleted before the\nthreads were done attaching by making the thread pool constructor\nblock until all of the threads are attached.\n\nChange-Id: I5f0884a74d78c4541ee0e582112857077f3f594f\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": "02b6a78038f12c109f95eb31713cfc747f5512f1",
      "tree": "c36841561a47b2ce3cf15b00fdae822e5a6c5b64",
      "parents": [
        "bcc2926b9721f94c17ed98fae5264cc98f0e066f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 13:51:26 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 06 16:07:36 2012 -0800"
      },
      "message": "Parellel mark stack processing\n\nEnabled parallel mark stack processing by using a thread pool.\n\nOptimized object scanning by removing dependent loads for IsClass.\n\nPerformance:\nPrime: ~10% speedup of partial GC.\nNakasi: ~50% speedup of partial GC.\n\nChange-Id: I43256a068efc47cb52d93108458ea18d4e02fccc\n"
    },
    {
      "commit": "bcc2926b9721f94c17ed98fae5264cc98f0e066f",
      "tree": "ebc059463499b973804d52e0bba593a12cd0326e",
      "parents": [
        "af6eaca5034a602f459a6eca9fb185f3abe8a882"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Nov 02 11:36:03 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Nov 02 17:00:27 2012 -0700"
      },
      "message": "Add dex2oat watch dog thread for host builds\n\nChange-Id: I90b4b6b3a1aebb82955b4aa84d3f2d599af1d13b\n"
    },
    {
      "commit": "e46cd75f182a3d738c5e2ef3cc90b2f0b1de56ee",
      "tree": "ffd976fbc1195cddbb956f87a73d423d611b3cf9",
      "parents": [
        "332f6827edf72f9b3d247a6c2fa79e4d520a409d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 31 16:56:18 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 31 16:56:18 2012 -0700"
      },
      "message": "Fix race condition in thread pool shutdown\n\nWe were not holding the task queue lock when we did broadcast, causing\na race where a thread waits on the CV after the broadcast.\n\nFixes dex2oat deadlocking.\n\nChange-Id: I84f30020511c2bd43f71d9b7b392720bd8d03eab\n"
    },
    {
      "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"
    }
  ]
}
