)]}'
{
  "log": [
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "ce39200492e2715a94d96fbd39fa42b46115c255",
      "tree": "a295d2f9265092513d728122cd201943288a8820",
      "parents": [
        "dc31313c4577bb4c00d90774159c84e738ed348d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 19:57:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 20:12:19 2015 +0100"
      },
      "message": "Fix mac build: include \u003csys/time.h\u003e in time_utils.cc .\n\nRequired for gettimeofday(). Not needed in utils.cc .\n\nBug: 13925192\nChange-Id: If06840d8a47c9193ccc7bd4cee5c16fcf76d9729\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": "8508e37deeb291f92d28a9bff2df77cabdc29ddf",
      "tree": "cad2b501e3bf8ca2c6f784f4fc69fff6f8b1e7ac",
      "parents": [
        "f07f71f9af8f56e738ef0451c60734ec6022d08e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 06 14:55:43 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 07 13:33:13 2015 +0100"
      },
      "message": "Fix broken checks in IsValidPartOfMemberNameUtf8Slow.\n\nGetUtf16FromUtf8 returns a surrogate pair only if it encounters\na 4-byte UTF sequence. Three byte UTF sequences will only return the\nfirst or second half of a pair so we need to check for that\nexplicitly.\n\nbug: 20844537\n\n(cherry picked from commit 3ba8671d60061359fd833f60f7a9dca14878cc0b)\n\nChange-Id: I2e2a4f9f736cd11050a2b634b3bb27b75a0ee0ba\n"
    },
    {
      "commit": "0b063d9ba7a11779667c0888e9f3495de0118b74",
      "tree": "77edd15b599b2f6e1d87d37c62c9573f2138c460",
      "parents": [
        "8a30bf23bcb1ad8d4ed9060ddbb27edbfd57a897"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 04 09:53:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 04 09:58:02 2015 -0700"
      },
      "message": "Fix NanoSleep and add test\n\nFixed a bug where tv_nsec was\u0027t between 0 and 999,999,999.\n\nBug: 14450052\nChange-Id: I30b29a716bfa63c6b57d589dd1102d2ca934c061\n"
    },
    {
      "commit": "5a1b2bff14465113280265fc856e1cae116faa25",
      "tree": "461c10588bad98e2d26b3c5f697862d9f74334a4",
      "parents": [
        "43e1bc667e66386443aee6477d767d9b8ef5aa79"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 01 16:03:49 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 01 17:09:00 2015 -0700"
      },
      "message": "Let the map function compute the relative pc.\n\nThe new packed relocations linker option creates an elf with a non-zero\nload base. It\u0027s no longer an easy task to compute the relative pc yourself\nso call the helper function to do it for us.\n\nBug: 20687795\n\n(cherry picked from commit 332ef327c2b1a5e1774ba0d1da23e07303002af9)\n\nChange-Id: I3d61c767f21a3f240a14f9e8bc6bee53b6cdb60d\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": "40da286d3207d88ed8ff3f5caac4873874603428",
      "tree": "3f9720425b2a024a5a54a0a71447dcea107229a8",
      "parents": [
        "6508158f8388847f4cc3693e2cc1dbee6c2c7d18"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 12:49:04 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 15 20:45:35 2015 -0700"
      },
      "message": "ART: Streaming trace mode\n\nAdd a streaming mode for tracing. Streaming uses a buffer of 16KB\nand writes to the output when that buffer gets full. Streaming mode\ncan be enabled with -Xmethod-trace-stream and is currently not\nexposed otherwise.\n\nAdd a python script that can parse the streaming format, which\nsimply contains strings for newly encountered threads and methods\ninline, and create output that can be used with traceview.\n\nAdd Trace::Pause and Trace::Abort, which can pause and abort tracing.\nAbort is different from Stop in that it does not write the data.\n\nAdd code to the zygote hooks JNI implementation that pauses tracing\nbefore the fork, making sure that a child cannot clobber the parent\u0027s\ndata.\n\nAdd code to the zygote hooks JNI implementation that aborts old\ntracing and starts new tracing in the child after the fork. Currently\nbase the output on the pid. This will not work on an unmodified\ndevice, as the profiles directory is not generally writable, but\nwe do not have enough information at that point. Consider a scheme\nthat restarts tracing later.\n\nChange-Id: I93c7bf87e35af582bdfdd3ecc7c52454514220dd\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "66d874d96d5699bb090c59f47a5a528956ca053e",
      "tree": "d59bf83a08fead7d9823230831bea63c9e43a62c",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 15 09:37:19 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Mar 09 14:46:23 2015 -0700"
      },
      "message": "Create OatFileAssistant class for assisting with oat files.\n\nThe oat file assistant is used for determining whether dex2oat or\npatchoat is needed, for running dex2oat or patchoat as needed to make\nan oat file up to date, and to load dex files associated with a given\ndex location.\n\nThe introduction of the OatFileAssistant class is meant to clean up and\nconsolidate code related to the management of oat files that was\nduplicated and spread across dalvik_system_DexFile.cc and\nclass_linker.cc.\n\nBug: 11301553\nChange-Id: I0c16027b9bae4570c2c50faa9c14f581c0cbafb8\n"
    },
    {
      "commit": "4ab52e75c782abf19ff9ebff8d19c87ec4ec97b6",
      "tree": "182699e6f100d74902790594dc0b377999332378",
      "parents": [
        "2eb5168bd9e43b80452eaee5be32c063e124886e",
        "965fd02721746d4164bc40719cd53eefab37cfb3"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Mar 02 15:50:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 02 15:50:09 2015 +0000"
      },
      "message": "Merge \"Don\u0027t require three-character extensions for dex locations.\""
    },
    {
      "commit": "00a1f5bfa57bb4007a08435ba83b029dcebde5c0",
      "tree": "a3d2562b439ba15faafafa60544eb9a342ff1bd8",
      "parents": [
        "242026e246a8b9efe098a0cce008fd525e011e5b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 13:35:39 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 20:12:47 2015 -0800"
      },
      "message": "Revert \"Revert \"Re-enable one thread dumping the native stack of another.\"\"\n\nThis reverts commit edfdaf37d5520a3c3a858b6b3fba4f759c60dadc.\n\nTests seem to succeed. Might be helpful to understand some deadlock/timeout\nsituations.\n\nBug: 15446488\nBug: 18713034\nChange-Id: I5be225363f698556221576b5827d9501e26799f3\n"
    },
    {
      "commit": "965fd02721746d4164bc40719cd53eefab37cfb3",
      "tree": "f1140d01dfc9547757fbf5e5b97a9c780a7d7503",
      "parents": [
        "01b7c431ed85e0eae4554f6fc0f79a78bc82f31f"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Feb 26 11:08:57 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Feb 26 11:08:57 2015 -0800"
      },
      "message": "Don\u0027t require three-character extensions for dex locations.\n\nBug: 19437875\nChange-Id: Ib62b4c691b04f27c5d499affd5a7fd4d9f0c64f9\n"
    },
    {
      "commit": "01b7c431ed85e0eae4554f6fc0f79a78bc82f31f",
      "tree": "3d203eca0ee9c82c7e5d1fd82c9cb3e5d7375987",
      "parents": [
        "ec27dc12124d57283d8f86e5386c95896b01eb23",
        "a6dfdae1cffc78f9791348b2e1dc8f4c6c3f7128"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 25 18:12:27 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 25 18:12:27 2015 +0000"
      },
      "message": "Merge \"ART: Print maps directly to log\""
    },
    {
      "commit": "a6dfdae1cffc78f9791348b2e1dc8f4c6c3f7128",
      "tree": "2b07c1cc94212963ec38a2c0a784a26fe1522194",
      "parents": [
        "96ac49a260223dc00291116daa63d7489c52bb0f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 15:50:19 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 22:30:47 2015 -0800"
      },
      "message": "ART: Print maps directly to log\n\nDo not read proc maps into a string before printing them later back\nto the log. In low-memory situations this can cause a bad_alloc.\n\nExternal bug: http://b.android.com/153990\nBug: 19494774\n\nChange-Id: Ie63d8788afe8c9da65b30b2f89c50d3dbb820755\n"
    },
    {
      "commit": "e5f13e57ff8fa36342beb33830b3ec5942a61cca",
      "tree": "02e370ecc4e0d955f28bfc71a41015f94fbb19b7",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 09:37:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 10:47:02 2015 -0800"
      },
      "message": "Revert \"Revert \"Add JIT\"\"\n\nAdded missing EntryPointToCodePointer.\n\nThis reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.\n\nChange-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af\n"
    },
    {
      "commit": "a5ca888d715cd0c6c421313211caa1928be3e399",
      "tree": "bdb08a2cbcf277ab7f02626a23b52a3fdf272ffe",
      "parents": [
        "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "message": "Revert \"Add JIT\"\n\nSorry, run-test crashes on target:\n0-05 12:15:51.633 I/DEBUG   (27995): Abort message: \u0027art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast\u003cuintptr_t\u003e(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc\u003d71e3366b code\u003d0x71e3362d size\u003dad000000\u0027\n10-05 12:15:51.633 I/DEBUG   (27995):     r0 00000000  r1 0000542b  r2 00000006  r3 00000000\n10-05 12:15:51.633 I/DEBUG   (27995):     r4 00000006  r5 b6f9addc  r6 00000002  r7 0000010c\n10-05 12:15:51.633 I/DEBUG   (27995):     r8 b63fe1e8  r9 be8e1418  sl b6427400  fp b63fcce0\n10-05 12:15:51.633 I/DEBUG   (27995):     ip 0000542b  sp be8e1358  lr b6e9a27b  pc b6e9c280  cpsr 40070010\n10-05 12:15:51.633 I/DEBUG   (27995): \n\nBug: 17950037\nThis reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4.\n\nChange-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3\n"
    },
    {
      "commit": "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4",
      "tree": "140026ff9638ff34050680b6c706b82fa1740b56",
      "parents": [
        "38fee8ef4bc0f4dbe2c6d1f5585895f0c4d16984"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 17 10:38:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 23 16:45:49 2015 -0800"
      },
      "message": "Add JIT\n\nCurrently disabled by default unless -Xjit is passed in.\n\nThe proposed JIT is a method JIT which works by utilizing interpreter\ninstrumentation to request compilation of hot methods async during\nruntime.\n\nJIT options:\n-Xjit / -Xnojit\n-Xjitcodecachesize:N\n-Xjitthreshold:integervalue\n\nThe JIT has a shared copy of a compiler driver which is accessed\nby worker threads to compile individual methods.\n\nAdded JIT code cache and data cache, currently sized at 2 MB\ncapacity by default. Most apps will only fill a small fraction of\nthis cache however.\n\nAdded support to the compiler for compiling interpreter quickened\nbyte codes.\n\nAdded test target ART_TEST_JIT\u003dTRUE and --jit for run-test.\n\nTODO:\nClean up code cache.\nDelete compiled methods after they are added to code cache.\nAdd more optimizations related to runtime checks e.g. direct pointers\nfor invokes.\nAdd method recompilation.\nMove instrumentation to DexFile to improve performance and reduce\nmemory usage.\n\nBug: 17950037\n\nChange-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca\n"
    },
    {
      "commit": "80b96d1a76790527f72a660ac03d9c215eed17ce",
      "tree": "8af6fb3840c60c65887cd5de64d987058bb8986e",
      "parents": [
        "39109a06015c91188232e59fa9e60e0915d24cd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 19 15:50:28 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 19 18:02:20 2015 +0000"
      },
      "message": "Replace a few std::vector with ArenaVector in Mir2Lir.\n\nChange-Id: I7867d60afc60f57cdbbfd312f02883854d65c805\n"
    },
    {
      "commit": "a5afcfc73141e5e378d79a326d02c5c2039fb025",
      "tree": "424add9558fb816c4f1d2f4edd128f4f2a086d9a",
      "parents": [
        "5a3399deaf448c8434d9ba0916ff799b1b791d95"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jan 29 20:06:46 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Feb 12 11:54:37 2015 +0000"
      },
      "message": "Be more lenient with 4 byte UTF-8 sequences.\n\nAccept 4 byte sequences and convert them into surrogate\npairs instead of expecting 2 separate 3 byte sequences\neach encoding one half of a surrogate pair.\n\nNote that in addition to supporting 4 byte sequences in\nstrings from JNI, we also tolerate them in dex files. This\nis mainly for consistency, and there\u0027s no need to claim any\nsort of official support.\n\nbug: 18848397\nbug: https://code.google.com/p/android/issues/detail?id\u003d81341\nChange-Id: Ibc98d29e59d98803e640f2489ea4c56912a59b29\n"
    },
    {
      "commit": "a1c9665c4659f4a8a3469bdb667a63a438725a17",
      "tree": "b93e59b0705aeebbbe9f402597687f24bbef0e30",
      "parents": [
        "076018addcb0f27d1a4ed9d1967a28bd5fb21230"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 06 13:18:58 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 06 14:29:43 2015 -0800"
      },
      "message": "Support map data in the backtrace data structure.\n\nThe backtrace data structure used to keep a pointer to the map data. Now\nthe code has the map data embedded in the structure and no pointers.\n\nBug: 19028453\nChange-Id: If7088a73f3c6bf1f3bc8cdd2bb4b62e7cab831c0\n"
    },
    {
      "commit": "3ef69b4692978daa620f2db2b1b057ef38c8a2f5",
      "tree": "c307bf3086e0f5a5a617225254107f17e42bc751",
      "parents": [
        "ac99db2751f1ac432a84739e7a4e011579296caf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 26 10:38:34 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 26 10:38:34 2015 -0800"
      },
      "message": "ART: Take apart stream output\n\nTo investigate bug.\n\nBug: 19028453\nChange-Id: Ib109caf2747f9adeef15dfc0f4708498e395dacf\n"
    },
    {
      "commit": "941c551acbc1fac40db89a723edc6b04d506d55c",
      "tree": "5ad00dfd62ad7004fd74ca5ba10923e493500a29",
      "parents": [
        "e81e1cd75b7dc6e44c5654e3ae329e86662ca02b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 10:38:19 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 10:38:19 2015 -0800"
      },
      "message": "ART: Only run addr2line in abort thread dumps\n\nAvoid addr2line overhead for SIGQUIT and other thread dumps.\n\nBug: 18933933\nChange-Id: I81bb291ede870d1d14b30bb0afdc47830ed14e8b\n"
    },
    {
      "commit": "1de532495b2669ce4fae9b9d20848d78d83813d8",
      "tree": "362fff8964f1f2cd52beaf5b7445cb117f9c2dc4",
      "parents": [
        "25d034cedea702c1f9ecb7a3a3ca977b07b9c3ba",
        "0a18df82f4dea95b7398f8c934341fccbf04eeee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "message": "Merge \"Clean up some #ifdefs.\""
    },
    {
      "commit": "0a18df82f4dea95b7398f8c934341fccbf04eeee",
      "tree": "125c8285763ffc6d9c00b27eaed6a7aad5b317ee",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "message": "Clean up some #ifdefs.\n\nOnly the Mac doesn\u0027t have POSIX clocks. (And it still doesn\u0027t, a decade\nlater.)\n\nglibc gained pthread_setname_np in 2.12.\n\nOnly the Mac doesn\u0027t have prctl.\n\nChange-Id: I218e409f7e133736e15fb68e8a254cdc5799d667\n"
    },
    {
      "commit": "00bd2da6ea009dedafc677229b485923f49ad61b",
      "tree": "a01999d4da5aec08f83fa468c0b01576a0aad94a",
      "parents": [
        "b9b26e1b036308e18113e37dfa5b81a64d1a7bd4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 09 15:05:46 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 09 15:05:46 2015 -0800"
      },
      "message": "ART: Fix prefix issues in Addr2line dump\n\nThe code incorrectly wrote the prefix twice for overly long lines.\n\nBug: 18933933\nChange-Id: I4bc7c2cde435bd966276ca2dae6a5d060aa2d0f3\n"
    },
    {
      "commit": "8e1cb91d2de6cacf388ca8550325fd8c21b1e58c",
      "tree": "927cef6c60ab2943b4f1692b71160a80dbfcc213",
      "parents": [
        "46af48acf4221a7f819d58dfffb576d0523ae285"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 20:11:09 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 09 09:49:46 2015 -0800"
      },
      "message": "ART: Use addr2line on the host for DumpNativeStack\n\nUse addr2line to attempt some better debug output for unexpected\nsignals in tests. This prints the demangled function name, source\nfile and line number (including inlined frames) when possible.\n\nBug: 18933933\nChange-Id: I4b98d0cc7bef5cdc63c7ee0882629b363778afe2\n"
    },
    {
      "commit": "9387c72720767b65b2ef27d6e922373d9ddc8d6c",
      "tree": "31def0a395d475b736ac607ca071e1cf65ec48bf",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 11:32:22 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 11:32:22 2015 -0800"
      },
      "message": "ART: Fix Mac build\n\nFix Mac build after change-id Id2710d2fd44b7c3b3335973a9288979a5793638b.\n\nBug: 18933933\nChange-Id: Ib0bb5082908d5dff33ef8f8a69d82c07406c176d\n"
    },
    {
      "commit": "628a61ac52a8a314e74ab445397add60b4e72a5b",
      "tree": "df78aa48e31e58669c6ae63ace7ba6bb532ec65d",
      "parents": [
        "4270e74152d8a7cd979ab5a92fe2a8f84adb8a42"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 07 22:08:35 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 09:35:31 2015 -0800"
      },
      "message": "ART: Pass ucontext to Backtrace in Stack Dump\n\nIn case of an unexpected signal on the host we dump the thread stack\nourselves. We have to pass the context given to the signal handler,\nas the signal handler is run on an alternate stack. Otherwise\nlibbacktrace can\u0027t dump the actual faulty part.\n\nBug: 18933933\nChange-Id: Id2710d2fd44b7c3b3335973a9288979a5793638b\n"
    },
    {
      "commit": "edfdaf37d5520a3c3a858b6b3fba4f759c60dadc",
      "tree": "4b08c00ba9bc427771413a758c669df56dbba62d",
      "parents": [
        "e652b62c581a3d68b1fc82e0b04e3a59dd633e52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 05 16:12:21 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 05 16:12:21 2014 +0000"
      },
      "message": "Revert \"Re-enable one thread dumping the native stack of another.\"\n\nThis reverts commit e652b62c581a3d68b1fc82e0b04e3a59dd633e52.\n\nChange-Id: Ida56d2c23849c1ede82a22100df402877256e270\n"
    },
    {
      "commit": "e652b62c581a3d68b1fc82e0b04e3a59dd633e52",
      "tree": "42cba0668fe1898cec136dc8a8b6f3f4ff45878c",
      "parents": [
        "c5454372f23da8248c84c29e251fb1b21c421a63"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 04 20:11:48 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 04 20:11:48 2014 -0800"
      },
      "message": "Re-enable one thread dumping the native stack of another.\n\nBug: 15446488\nChange-Id: I49d4d283f7b7d04b9d8c940313d6c5107ba9f99d\n"
    },
    {
      "commit": "08f1f50d6c2e8f247b8f5f19711d75a792851c7a",
      "tree": "dca490545d56168f7f9ae4a4616199b1b1c8ba0c",
      "parents": [
        "8443637f71a777a13317fe7635028d758a0adf97"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:04:37 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:12:27 2014 -0800"
      },
      "message": "Remove FieldHelper.\n\nChange-Id: I2d74e2d5b3c35a691c95339de0db9361847fca11\n"
    },
    {
      "commit": "83597d06cd4707b19c1985353418bd99f3aca6c7",
      "tree": "2901c93180f2003c2da6cf75eb56554aa8128a16",
      "parents": [
        "bdfbf86afde269ee3b38a6c928618333ffac13cf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 20 10:29:00 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 20 10:38:51 2014 -0800"
      },
      "message": "Re-enable DumpNativeStack.\n\nBug: 15446488\nChange-Id: Icdd0b90c8abe2a361a488fc1742c6896605ddc41\n"
    },
    {
      "commit": "4545d773856203eab6b026f66a005ee75b33e1c8",
      "tree": "11cbf98145d0da4386fc0034d42576f889b0777c",
      "parents": [
        "346bcbde27e4620ed1e7bce91728f22069a371f0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 10:34:29 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 10:40:50 2014 -0800"
      },
      "message": "Disable DumpNativeStack.\n\nCauses crashes on 004-ThreadStress, already was a no-op on the target.\nBug: 15446488\n\nChange-Id: I9a1541b894087337dafa3fdde00d845f3542b141\n"
    },
    {
      "commit": "d7576328811e5103e99d31f834a857522cc1463f",
      "tree": "5c20cecc09ca8786434b663cbfcad31e56c7ac72",
      "parents": [
        "b7ce2074ef43ff221cdec6ddba953f0b0c67447b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 24 22:13:45 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 06 19:47:07 2014 -0800"
      },
      "message": "ART: Fix valgrind\n\nAllow ValgrindMallocSpace wrapper for RosAlloc.Requires refactoring,\nas ValgrindMallocSpace was bound to the signature of DlMallocSpace.\n\nAlso turn of native stack dumping when running under Valgrind to\nwork around b/18119146.\n\nRitzperf before and after\nMean               3190.725   3082.475\nStandard Error     11.68407   10.37911\nMode               3069       2980\nMedian             3182.5     3051.5\nVariance           16382.117  12927.125\nStandard Deviation 127.99264  113.69751\nKurtosis           1.1065632  0.3657799\nSkewness           0.9013805  0.9117792\nRange              644        528\nMinimum            2991       2928\nMaximum            3635       3456\nCount              120        120\n\nBug: 18119146\nChange-Id: I25558ea7cb578406011dede9d3d0bdbfee4ff4d5\n"
    },
    {
      "commit": "78a3233313260665fe82ba56257855e043bca3d4",
      "tree": "46622bf088b3f30d2c6d8a5b548519137c88c867",
      "parents": [
        "fe50a0f644bf57a92612d08ad21dc4ea5a2f652a",
        "277ccbd200ea43590dfc06a93ae184a765327ad0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "message": "Merge \"ART: More warnings\""
    },
    {
      "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": "e6ac4fd428a4897951aeb4cb3b45f1665276c511",
      "tree": "c8456425dcd515de5d5299c61f2254cc70acaa7c",
      "parents": [
        "457e6170ac55e4cbede79a23b021422ef4ccd92f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 04 13:03:29 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 04 13:13:48 2014 +0000"
      },
      "message": "Try to fix mac build.\n\nChange-Id: I6c7faa1c80bc7c250d14859d51c910d50b7fb562\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "c0d8229898c44c0f604f08a5df1de83ff56c18fd",
      "tree": "13b150e68e806204c547e04bc071246c06199c37",
      "parents": [
        "c70535b4f9f1ff3e3da451734bb7d9601012ccc1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 23 10:38:30 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 11:40:16 2014 -0700"
      },
      "message": "ART: Better IllegalAccessException message\n\nBug: 17618578\nBug: 17614623\nChange-Id: I0e3f15e676acd6ed5844fc86e136f75cc335372d\n"
    },
    {
      "commit": "76433275dbe39e5ced1c223b006d1b900b1937f6",
      "tree": "a72c101defa86ceff8b633cf2eaa606c87f783eb",
      "parents": [
        "88adf36315237947d3a5d10b28fdf8b9da7794a4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 14:32:37 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 19:54:39 2014 -0700"
      },
      "message": "Optimize get/set reflection performance\n\nSpeedups mostly from reducing how often access checks are needed,\nand adding more inlining, and adding templates.\n\nField_getInt from ~850ns -\u003e 350ns.\nField_setInt from ~900ns -\u003e 370ns.\n\nBug: 14063288\n\n(cherry picked from commit ffc788cb7b5b9f53734d7bb8af2d5e45d885546b)\n\nChange-Id: I2441581ff3478c6ae43b6aa49939ff3f07555ec8\n"
    },
    {
      "commit": "3c13a794845e0cf7887e33b2ec20de7e6ba85f8f",
      "tree": "ab9a9a426a371de0c32e48a85fdda44a321a06a0",
      "parents": [
        "5cdd0734d2f79eedc530f5f1e876cd2110e29c86"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 20:56:04 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 23:43:07 2014 -0700"
      },
      "message": "ART: Only allow the zygote to create the global boot image\n\nDo not allow arbitrary processes, even when root, to write the\nboot image in /data/dalvik-cache.\n\nBug: 17478752, 17510489, 17439961\nChange-Id: Iba2b74be6d0752f4221f4ff5ee295b45a34cb2e1\n(cherry picked from commit 33c36d4f22ab6a5e61eb47b654deaf647c34e49c)\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "68b56858367e29461ae290fd797443a1ef6d8005",
      "tree": "c086a68bcbbb50d7c3b829bcc7d4231ff815db4a",
      "parents": [
        "7c7686e62d262f1823876cebb3700e20f967dd56"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 29 20:19:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 02 08:01:04 2014 -0700"
      },
      "message": "Reduce and speed-up class def searches.\n\nUse the class linker for descriptor lookups from the compile driver so that\ndex caches are populated.\nReduce the scope of functions for scanning class paths to just the class\nlinker where they are performed.\nIf we see more than a threshold number of find class def misses on a dex file\nlazily compute an index, so that future lookups are constant time (part of the\ncollection code is taken from\nhttps://android-review.googlesource.com/#/c/103865/3). Note that we take a lazy\napproach so that we don\u0027t serialize on loading dex files, this avoids the\nreason the index was removed in 8b2c0b9abc3f520495f4387ea040132ba85cae69.\nRemove an implicit and unnecessary std::string creation for PrintableString.\n\nSingle threaded interpret-only dex2oat performance is improved by roughly 10%.\n\nBug: 16853450\n\nChange-Id: Icf72df76b0a4328f2a24075e81f4ff267b9401f4\n"
    },
    {
      "commit": "0ed6c6f72eea586c684cb3e2bc7037deff87d1ba",
      "tree": "48604c0b533374031927b41f201ce13be5d80ef5",
      "parents": [
        "14515d738dadf88e3e00b7dd1bd69899c4df4b91",
        "839cc30467d51414e8185eee6101e19f5ab20871"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 28 22:25:34 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 28 22:25:35 2014 +0000"
      },
      "message": "Merge \"Move the glibc unlimited stack hack into GetThreadStack.\""
    },
    {
      "commit": "7895d554d17309db67737b6750c59d8cece213e3",
      "tree": "cf4cadff03997851247f9be8559cb739e4bb026b",
      "parents": [
        "79e909bc9d95c3952be85af846ba8bda344531f5"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 28 14:55:56 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 28 15:08:54 2014 -0700"
      },
      "message": "Fix an assert failure in art::DumpNativeStack().\n\nWhen ThreadList::SuspendAll() times out (and aborts),\nUnsafeLogFatalForThreadSuspendAllTimeout() will call\nart::DumpNativeStack() but it does not have the mutator lock\nshared-locked (as it failed while trying to exclusive-lock the mutator\nlock) and the AssertSharedHeld() on the mutator lock fails. It\u0027s an\nassert failure nested in an time-out abort.\n\nThis change avoids it by letting it print the native method frame info\nonly if the thread has a shared lock on the mutator lock, as opposed\nto asserting that it has a shared lock.\n\nChange-Id: I17851ebcaa37f4f67086c15243a2cffea3997a02\n"
    },
    {
      "commit": "839cc30467d51414e8185eee6101e19f5ab20871",
      "tree": "dc6ff18729eb3180140bb1cd71e17b8ab9c443b7",
      "parents": [
        "83c115930b403db2b6b38d9dcb4828e31feb792f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 28 10:24:44 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 28 10:27:43 2014 -0700"
      },
      "message": "Move the glibc unlimited stack hack into GetThreadStack.\n\nOptional cleanup that was previously a TODO.\n\nBug: 17111575\nChange-Id: I7c20dbf1fdbcaf4604d7b55552930c10e166539d\n"
    },
    {
      "commit": "6d3fc5615612e500a00aba0a0d331436fae8d996",
      "tree": "5a6426ee19d6398dbc38175b53a71a0b1fb7fad0",
      "parents": [
        "dbc0ca70bcee22561c2f0ab7129a7721369e9aea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 27 11:47:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 28 09:56:32 2014 -0700"
      },
      "message": "Actually ask the pthread implementation for the stack guard size.\n\n(cherry-pick 307091dc306c34ce9e4ee6cc3b467807b3a3bd12.)\n\nBug: 17111575\nChange-Id: I23919b1e8aeff627a65daf57f1109bec60b196cc\n"
    },
    {
      "commit": "49e36ec1b3457f529d9404a33ff9c92921e3dde9",
      "tree": "d5ed6c0057cc9cc95d44f9a03960b60184a324dd",
      "parents": [
        "92502ab7570dfa28c98ab6781a1c5b9f8b8748bf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 20:18:18 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 20:18:18 2014 -0700"
      },
      "message": "Kill HAVE_ANDROID_PTHREAD_SETNAME_NP.\n\nAll it means is __BIONIC__ anyway.\n\nChange-Id: I3ef4ef1a14d0a77c75539f2ab533ee2f3964e1a5\n"
    },
    {
      "commit": "323aa865a8238d6e2174533464a252cb1606afda",
      "tree": "dfaec4edde60d2bc35cc26e3202c2384cde67cae",
      "parents": [
        "76bc718dc2cf0279ec5afd08c3a82b6ad61756d8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 15:00:04 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 15:00:04 2014 -0700"
      },
      "message": "bionic has always had gettid.\n\ndex2oat calls GetTid for every line it outputs via Message, which is why\nthis showed up so much in strace.\n\nBug: 17049821\nChange-Id: Ib51c7f88410b291692874023902cf43f4b9a9d1c\n"
    },
    {
      "commit": "e3ea83811d47152c00abea24a9b420651a33b496",
      "tree": "dd3b8018176ada85d51b2f8ca46e515fbf55b50f",
      "parents": [
        "9dcf75c80187504ec88e7ef91d64a6a68279eb9d"
      ],
      "author": {
        "name": "Yevgeny Rouban",
        "email": "yevgeny.y.rouban@intel.com",
        "time": "Fri Aug 08 16:29:38 2014 +0700"
      },
      "committer": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Fri Aug 15 15:04:12 2014 -0700"
      },
      "message": "ART source line debug info in OAT files\n\nOAT files have source line information enough for ART runtime needs like\njump to/from interpreter and thread suspension. But this information\nis not enough for finer grained source level debugging and low-level\nprofiling (VTune or perf).\n\nThis patch adds to OAT files two additional sections:\n.debug_line - DWARF formatted Elf32 section with detailed source line\n              information (mapping from native PC to Java source lines).\n\nIn addition to the debugging symbols added using the dex2oat option\n--include-debug-symbols, the source line information is added to\nthe section .debug_line.\n\nThe source line info can be read by many Elf reading tools like objdump,\nreadelf, dwarfdump, gdb, perf, VTune, ...\n\ngdb can use this debug line information in x86. In 64-bit mode\nthe information can be used if the oat file is mapped in the lower\naddress space (address has higher 32 bits zeroed). Relocation works.\n\nTesting:\n1. art/test/run-test --host --gdb [--64] 001-HelloWorld\n2. in gdb: break Main.java:19\n3. in gdb: break Runtime.java:111\n4. in gdb: run  - stops at void java.lang.Runtime.\u003cinit\u003e()\n5. in gdb: backtrace  - shows call stack down to main()\n6. in gdb: continue - stops at void Main.main() (only in 32-bit mode)\n7. in gdb: backtrace  - shows call stack down to main()\n8. objdump -W \u003coat-file\u003e - addresses are from VMA range of .text\n   section reported by objdump -h \u003cfile\u003e\n9. dwarfdump -ka \u003coat-file\u003e - no errors expected\n\nSize of aosp-x86-eng boot.oat increased by 11% from 80.5Mb to 89.2Mb\nwith two sections added .debug_line (7.2Mb) and .rel.debug (1.5Mb).\n\nChange-Id: Ib8828832686e49782a63d5529008ff4814ed9cda\nSigned-off-by: Yevgeny Rouban \u003cyevgeny.y.rouban@intel.com\u003e\n"
    },
    {
      "commit": "1ff3c98775a4577cf053dba9a0c2d5c21c07b298",
      "tree": "2d09c27c69678b53b4c9dc486024f3547efd4bca",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 02:30:58 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 16:08:05 2014 -0700"
      },
      "message": "Avoid use of std::string where we have const char*.\n\nRemoving the ClassHelper caused std::string creation for all calls to\nClass::GetDescriptor and a significant performance regression. Make the\nstd::string an out argument so the caller can maintain it and its life time\nwhile allowing GetDescriptor to return the common const char* case.\n\nDon\u0027t generate GC maps when compilation is disabled.\n\nRemove other uses of std::string that are occuring on critical paths.\nUse the cheaper SkipClass in CompileMethod in CompilerDriver.\nSpecialize the utf8 as utf16 comparison code for the common shorter byte\nencoding.\nForce a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing\ncode), add some LIKELYs.\n\nx86-64 host 1-thread interpret-only of 57 apks:\nBefore: 29.539s\nAfter: 23.467s\n\nRegular compile:\nBefore: 1m35.347s\nAfter: 1m20.056s\n\nBug: 16853450\nChange-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad\n"
    },
    {
      "commit": "68d8b42ddec39ec0174162d90d4abaa004d1983e",
      "tree": "0bb6ccf3b996bb8363c10d07aa39cde221980602",
      "parents": [
        "9c522c2cbbf50dc687728747b37ad59985750b65"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 08 08:29:53 2014 -0700"
      },
      "message": "Wire up check JNI force copy mode.\n\nIncrease check JNI checks.\nBreak apart jni_internal.h in to jni_env_ext.h and java_vm_ext.h.\nFix the abuse of ScopedObjectAccess/annotalysis by ScopedCheck in the case\nof VM routines.\nMake class loader override and shared library class loader JNI global\nreferences rather than mirror pointers.\nClean-ups to native bridge.\n\nChange-Id: If7c6110b5aade7a402bfb67534af86a7b2cdeb55\n"
    },
    {
      "commit": "547cdfd21ee21e4ab9ca8692d6ef47c62ee7ea52",
      "tree": "078d52b6025fc1e42b7343550b0dbbdad69eafac",
      "parents": [
        "8b62dc0f993d0445401655fc274e5225498fa81c"
      ],
      "author": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Tue Aug 05 01:54:19 2014 -0700"
      },
      "committer": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Tue Aug 05 11:11:33 2014 -0700"
      },
      "message": "Emit CFI for x86 \u0026 x86_64 JNI compiler.\n\nNow for host-side x86 \u0026 x86_64 ART, we are able to get complete stacktrace with even mixed C/C++ \u0026 Java stack frames.\n\nTesting:\n1. art/test/run-test --host --gdb [--64] --no-relocate 005\n2. In gdb, run \u0027b art::Class_classForName\u0027 which is implementation of a Java native method, then \u0027r\u0027\n3. In gdb, run \u0027bt\u0027. You should see stack frames down to main()\n\nChange-Id: I2d17e9aa0f6d42d374b5362a15ea35a2fce96302\n"
    },
    {
      "commit": "6e183f2e973a20f2eaca135c240908e1bf98c5d0",
      "tree": "8a989eb8dbaca6a2c505569784740f9581fe7e98",
      "parents": [
        "eb76e11d836ea953b4e40a28e3e69d3b0f4c86fa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 18 14:57:04 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 05 10:22:08 2014 -0700"
      },
      "message": "Make system use patchoat to relocate during runtime.\n\nChange dalvik_system_DexFile.cc so that isDexOptNeededInternal will be\nable to indicate that a patchoat is required. Change default of relocate\noption to be on.\n\nBug: 15358152\n\nChange-Id: Ibe92d8b55a24bbf718b0416a21b76e5df7a2de26\n"
    },
    {
      "commit": "a59dd80f9f48cb750d329d4d4af2d99d72b484d1",
      "tree": "36958b15842205addaf6d2a13e40823eab47c8bc",
      "parents": [
        "84568fdf08f8f476292996ad653b4453d2894d23"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 02 16:28:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 22 08:24:14 2014 -0700"
      },
      "message": "Runtime can now be set to require relocation\n\nAdd a pair of runtime flags -Xrelocate and -Xnorelocate that can force\nthe runtime to require that all files that are run are relocated, to\nprevent attacks based on the known art base address.\n\nAdd support for running patchoat on oat files compiled without an image.\n\nChange run-test to have new --prebuild and --relocate flags.\n\nBug: 15358152\n\nChange-Id: I91166c62dd1ab80e5cbcb7883a2cd0d56afca32d\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "e63db27db913f1a88e2095a1ee8239b2bb9124e8",
      "tree": "893dee6783bca6717259321a6e4ba029c9c123e2",
      "parents": [
        "07b8441303ea82fca3cb85d71ecf8752d73cedd7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 15:36:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 17:07:49 2014 -0700"
      },
      "message": "Break apart header files.\n\nCreate libart-gtest for common runtime and compiler gtest routines.\nRename CompilerCallbacksImpl that is quick compiler specific.\nRename trace clock source constants to not use the overloaded profiler term.\n\nChange-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933\n"
    },
    {
      "commit": "829b4bad12a34c90734e73d4460d571db812372c",
      "tree": "f13c63bae67687eb3ed17dd7aa84568d3d1a1f95",
      "parents": [
        "fee5586dac3bf22a31dbbffe7b4ca7e978e53185"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 26 13:49:36 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 26 13:49:36 2014 -0700"
      },
      "message": "ART: Change sprintf to snprintf\n\nUse of sprintf is discouraged. Change to snprintf in utils.cc. Avoids\na warning with GCC 4.9.\n\nChange-Id: I03cc13a0f00dff07e8b775584ece9c4e4a64e590\n"
    },
    {
      "commit": "833a48501d560c9fa7fc78ef619888138c2d374f",
      "tree": "add308298a5486d44caddea120cc9200dd70c38a",
      "parents": [
        "b849f6dd638fd1246724160cd5c01ab1a5ff33bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 21 18:46:59 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 25 19:34:58 2014 -0700"
      },
      "message": "ART: Native support for multidex\n\nNative support for zip files with multiple classesX.dex.\n\nWorks by explicitly looking for those files in ascending order. As\nthese files have no file system representation for themselves,\nintroduce synthetic dex locations: the name of the originating file\nplus a colon plus the name of the dex file, e.g., test.jar:classes2.dex.\n\nOpening a zip dex file will return all dex files in this way. This\nkeeps the changes to dex2oat minimal.\n\nTo hide multidex/synthetic names from the Java layer, let the handle\nof dalvik.system.DexFile refer to a vector of DexFile objects. When\nopening a location, test possible synthetic names and add them to the\nvector. Thus, the original multidex jar in the classpath will be\nassociated with all embedded dex files.\n\nChange-Id: I0de107e1369cbc94416c544aca3b17525c9eac8b\n"
    },
    {
      "commit": "f5997b4d3f889569d5a2b724d83d764bfbb8d106",
      "tree": "f0d3b3890a604a8b3c4c87c0f408f86df041690e",
      "parents": [
        "9658d24deaa9bd07781bfac860d2a6dd89066d55"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 20 10:37:54 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 24 13:45:05 2014 -0700"
      },
      "message": "More advanced timing loggers.\n\nThe new timing loggers have lower overhead since they only push into\na vector. The new format has two types, a start timing and a stop\ntiming. You can thing of these as brackets associated with a\ntimestamp. It uses these to construct various statistics when needed,\nsuch as: Total time, exclusive time, and nesting depth.\n\nChanged PrettyDuration to have a default of 3 digits after the decimal\npoint.\n\nExaple of a GC dump with exclusive / total times and indenting:\nI/art     (23546): GC iteration timing logger [Exclusive time] [Total time]\nI/art     (23546):   0ms InitializePhase\nI/art     (23546):   0.305ms/167.746ms MarkingPhase\nI/art     (23546):     0ms BindBitmaps\nI/art     (23546):     0ms FindDefaultSpaceBitmap\nI/art     (23546):     0ms/1.709ms ProcessCards\nI/art     (23546):       0.183ms ImageModUnionClearCards\nI/art     (23546):       0.916ms ZygoteModUnionClearCards\nI/art     (23546):       0.610ms AllocSpaceClearCards\nI/art     (23546):       1.373ms AllocSpaceClearCards\nI/art     (23546):     0.305ms/6.318ms MarkRoots\nI/art     (23546):       2.106ms MarkRootsCheckpoint\nI/art     (23546):       0.153ms MarkNonThreadRoots\nI/art     (23546):       4.287ms MarkConcurrentRoots\nI/art     (23546):     43.461ms UpdateAndMarkImageModUnionTable\nI/art     (23546):     0ms/112.712ms RecursiveMark\nI/art     (23546):       112.712ms ProcessMarkStack\nI/art     (23546):     0.610ms/2.777ms PreCleanCards\nI/art     (23546):       0.305ms/0.855ms ProcessCards\nI/art     (23546):         0.153ms ImageModUnionClearCards\nI/art     (23546):         0.610ms ZygoteModUnionClearCards\nI/art     (23546):         0.610ms AllocSpaceClearCards\nI/art     (23546):         0.549ms AllocSpaceClearCards\nI/art     (23546):       0.549ms MarkRootsCheckpoint\nI/art     (23546):       0.610ms MarkNonThreadRoots\nI/art     (23546):       0ms MarkConcurrentRoots\nI/art     (23546):       0.610ms ScanGrayImageSpaceObjects\nI/art     (23546):       0.305ms ScanGrayZygoteSpaceObjects\nI/art     (23546):       0.305ms ScanGrayAllocSpaceObjects\nI/art     (23546):       1.129ms ScanGrayAllocSpaceObjects\nI/art     (23546):       0ms ProcessMarkStack\nI/art     (23546):   0ms/0.977ms (Paused)PausePhase\nI/art     (23546):     0.244ms ReMarkRoots\nI/art     (23546):     0.672ms (Paused)ScanGrayObjects\nI/art     (23546):     0ms (Paused)ProcessMarkStack\nI/art     (23546):     0ms/0.610ms SwapStacks\nI/art     (23546):       0.610ms RevokeAllThreadLocalAllocationStacks\nI/art     (23546):     0ms PreSweepingGcVerification\nI/art     (23546):   0ms/10.621ms ReclaimPhase\nI/art     (23546):     0.610ms/0.702ms ProcessReferences\nI/art     (23546):       0.214ms/0.641ms EnqueueFinalizerReferences\nI/art     (23546):         0.427ms ProcessMarkStack\nI/art     (23546):     0.488ms SweepSystemWeaks\nI/art     (23546):     0.824ms/9.400ms Sweep\nI/art     (23546):       0ms SweepMallocSpace\nI/art     (23546):       0.214ms SweepZygoteSpace\nI/art     (23546):       0.122ms SweepMallocSpace\nI/art     (23546):       6.226ms SweepMallocSpace\nI/art     (23546):       0ms SweepMallocSpace\nI/art     (23546):       2.144ms SweepLargeObjects\nI/art     (23546):     0.305ms SwapBitmaps\nI/art     (23546):     0ms UnBindBitmaps\nI/art     (23546):   0.275ms FinishPhase\nI/art     (23546): GC iteration timing logger: end, 178.971ms\n\nChange-Id: Ia55b65609468f212b3cd65cda66b843da42be645\n"
    },
    {
      "commit": "c5f17732d8144491c642776b6b48c85dfadf4b52",
      "tree": "811daa488ae5ee5dfd9b3b73bd210bc1506e5ca1",
      "parents": [
        "08654d40cdd256f6a6c8619bf06d04d4c819714a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 05 20:48:42 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 10 23:19:29 2014 -0700"
      },
      "message": "Remove deprecated WITH_HOST_DALVIK.\n\nBug: 13751317\nFix the Mac build:\n - disable x86 selector removal that causes OS/X 10.9 kernel panics,\n - madvise don\u0027t need does zero memory on the Mac, factor into MemMap\n   routine,\n - switch to the elf.h in elfutils to avoid Linux kernel dependencies,\n - we can\u0027t rely on exclusive_owner_ being available from other pthread\n   libraries so maintain our own when futexes aren\u0027t available (we\n   can\u0027t rely on the OS/X 10.8 hack any more),\n - fix symbol naming in assembly code,\n - work around C library differences,\n - disable backtrace in DumpNativeStack to avoid a broken libbacktrace\n   dependency,\n - disable main thread signal handling logic,\n - align the stack in stub_test,\n - use $(HOST_SHLIB_SUFFIX) rather than .so in host make file variables.\n\nNot all host tests are passing on the Mac with this change. dex2oat\nworks as does running HelloWorld.\nChange-Id: I5a232aedfb2028524d49daa6397a8e60f3ee40d3\n"
    },
    {
      "commit": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\n"
    },
    {
      "commit": "4479ba35389b03ccc9eabd17fba6168f9505517a",
      "tree": "fb8091b4637b27d8a9d3d4f390b79263a12d9881",
      "parents": [
        "081203e06534e4aa27a942e47084289eecab29ed",
        "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "message": "Merge \"Change FieldHelper to use a handle.\""
    },
    {
      "commit": "576ca0cd692c0b6ae70e776de91015b8ff000a08",
      "tree": "de632fae7ee9f096e7a2c54a7fcdace8f6ae7106",
      "parents": [
        "e21bf0099117b82963cdf7f95a1b8dabfcf29397"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 15:58:22 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 16:27:45 2014 -0700"
      },
      "message": "Reduce header files including header files.\n\nMain focus is getting heap.h out of runtime.h.\n\nChange-Id: I8d13dce8512816db2820a27b24f5866cc871a04b\n"
    },
    {
      "commit": "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb",
      "tree": "444936c3e3718b692ba7f1981b863190f26b4ed7",
      "parents": [
        "25c4f6a25b3de9b9d7ca5162f1629753a0b7f003"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 05 17:42:53 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 13:12:17 2014 -0700"
      },
      "message": "Change FieldHelper to use a handle.\n\nFixed compaction bugs related to FieldHelper::GetType in:\nartSet32InstanceFromCode\nSetFieldValueImpl\nCheckReceiver\nField_set\ninterpreter::DoFieldPut\nMethodVerifier::VerifyISGet\nMethodVerifier::VerifyISPut\nMethodVerifier::VerifyIGetQuick\n\nBug: 13077697\n\nChange-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72\n"
    },
    {
      "commit": "c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6",
      "tree": "250455427da979409a075a2b3197bd43ccd40fe1",
      "parents": [
        "bb0b53f58f11c628f077603b56077dfed1a18f11"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 30 23:44:11 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 06 12:14:01 2014 +0100"
      },
      "message": "Fixed and refactored profiler options handling\n\n- extracted profiler options in a separate class\n- switched from system property reading to command line arguments\n- added profile based compilation options to CompilerOptions\n- removed no longer used kProfile compilation filter\n- optimize dex files only if the profiler is enabled\n- clean up unused arguments\n\nBug: 12877748\nBug: 15275634\nChange-Id: I37ff68e7694370950ce8db2360562e9058ecebb7\n"
    },
    {
      "commit": "bb0b53f58f11c628f077603b56077dfed1a18f11",
      "tree": "013482db95e8f2dcb7c7be85fc8f35df2c7f1361",
      "parents": [
        "e4283be97047a26d3476acd3863dcc386498be17"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 23 17:33:29 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 06 11:53:28 2014 +0100"
      },
      "message": "Clean up the sampling profiler\n\n- rename variables/fields names to match the code style (use\n_underscore_names_)\n- extract common property parsing in utils.cc\n- fail to load profile file if any line is malformed\n- added ProfileFile to manage the profile data generate in the previous\nruns (replaces ProfileHelper and nests ProfileData)\n\nBug: 12877748\nChange-Id: Ie7bda30bfdeb7e78534c986615b0649eac12a97b\n"
    },
    {
      "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": "2afe49450f2e018f18b5de45428b9174bfd6f196",
      "tree": "2d6f96d2dfc4c8baaef172259a824708e510225e",
      "parents": [
        "84e524207b23d58a1b1e5f4443000ccac97c4184"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 19 10:25:33 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 19 10:26:17 2014 -0700"
      },
      "message": "Follow up to \"Add ISA directory to image and odex pathnames.\"\n\nChange-Id: I7f08cc3052fbed93a56ccf1ab7675ae8bc129da9\n"
    },
    {
      "commit": "84e524207b23d58a1b1e5f4443000ccac97c4184",
      "tree": "6eb6204994d342a653fba4eea275a536a720b036",
      "parents": [
        "f04544ffdb801946d087ae1322c890e34e185156",
        "0e12bdc49744eb6d5c29b9611a8dbe10bac4cd53"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 19 16:50:20 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 19 16:50:21 2014 +0000"
      },
      "message": "Merge \"Add ISA directory to image and odex pathnames.\""
    },
    {
      "commit": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "0e12bdc49744eb6d5c29b9611a8dbe10bac4cd53",
      "tree": "aba31f1d671b4816fb63fca00b985ab0d2b6a12b",
      "parents": [
        "de1129a26e0474ea8bb9112938ebb867163969fd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 14 17:44:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 16 16:14:50 2014 -0700"
      },
      "message": "Add ISA directory to image and odex pathnames.\n\nBug: 14882223\nBug: 14694978\nChange-Id: Ic1b5ae836b8e91ea461dcd4f3da8e38dc3bec00f\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": "41ccffd58512f1fa1aeb9ad288cbb667899ff1be",
      "tree": "43d46ff4a785515b903d652371ba4fb997c88ba3",
      "parents": [
        "52f84884433f3875f4b1bc5595b8d5a2d6fb3d99"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 06 10:37:30 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 06 11:14:17 2014 -0700"
      },
      "message": "Automatically create non-/data dalvik-cache directories\n\nBug: 14471634\nChange-Id: Ie8ae4537102352dc1b270e9b65e681adf3631a80\n"
    },
    {
      "commit": "ef204fae79009caa1ec7df1f79462bf8b92b5e58",
      "tree": "9b9466c9179fd5a609e40946aaa32405a026a4fc",
      "parents": [
        "11d9f06a96a6909905c248ed684366190140095c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 17:25:23 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:25:21 2014 +0100"
      },
      "message": "Fix errno checking for dalvik-cache creation.\n\nOn the host, it\u0027s possible for /tmp/foo/dalvik-cache/\u003cisa\u003e to\nnot exist, but for /tmp/foo/dalvik-cache to be already present.\nIn this scenario, the first mkdir() can fail with EEXIST.\n\n(cherry picked from commit 6fa28aef44106eef4a7195adb5eb77f6e5531572)\n\nChange-Id: I1da79ad23a4ff510a0f87eca4b52d9f52ab791ad\n"
    },
    {
      "commit": "11d9f06a96a6909905c248ed684366190140095c",
      "tree": "27b02ab216b98ba1656d66072fd46c5adec61242",
      "parents": [
        "b3016551e5f264264dbb633a1ddf03ac97f9c66c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 23 20:24:57 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:25:07 2014 +0100"
      },
      "message": "Use instruction specific dalvik cache dirs.\n\n- All oat \u0026 art files are now placed under /data/dalvik-cache/\u003cisa\u003e/.\n- GetDalvikCacheOrDie now requires a mandatory subdirectory argument,\n  and is implicitly rooted under /data/.\n- Added helper methods to convert InstructionSet enums into strings\n  and vice versa.\n\n(cherry picked from commit 2974bc3d8a5d161d449dd66826d668d87bdc3cbe)\n\nChange-Id: Ic7986938e6a7091a2af675ebafec768f7b5fb8cd\n"
    },
    {
      "commit": "a2cee18799d7e61adb037a4219adb23fef7d022b",
      "tree": "214a6d6d4682196aa0e2ebcb5a0cc7bcf3eec2d3",
      "parents": [
        "ed0bc0bbf26f6751f31213d24ccdac49766e93ff"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 16 19:13:59 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 18 15:32:15 2014 -0700"
      },
      "message": "Modify unwind to comply with stack parser tools.\n\nBug: 14081592\n\nChange-Id: I6906b2575c74d64f1c3ba7602779b3a789de1c69\n"
    },
    {
      "commit": "0f6784737882199197796b67b99e5f1ded383bee",
      "tree": "139888bdfad743c50e800ad46b9aec97ae3415d3",
      "parents": [
        "73a471336a9515fa7fdc5859e3c481ec451237a5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 16:18:37 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 18:02:07 2014 -0700"
      },
      "message": "Unify 64bit int constant definitions.\n\nLL and ULL prefixes are word size dependent, use the INT64_C and UINT64_C\nmacros instead.\n\nChange-Id: I5b70027651898814fc0b3e9e22a18a1047e76cb9\n"
    },
    {
      "commit": "474cc79e445d4d4fedabfc5b7acf648cf338fc26",
      "tree": "ca6e6117d11f1afd47c84622a766f59d425e7c40",
      "parents": [
        "0918614b7434783477e8668df7850a7aaf8d5611"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 07 14:18:15 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 07 14:18:15 2014 -0800"
      },
      "message": "Use GetEntryPointFromQuickCompiledCode instead of GetQuickOatCodeOffset\n\nThe latter is meant for compile time use only when an offset is stored, instead of a pointer to code\n\nChange-Id: I2fa9b8b3aaab0e6cfa1fc31c4d44aab0d9c3d30f\n"
    },
    {
      "commit": "067d20fd2fddd947ce3a014d023e9de249082ebe",
      "tree": "22ebe9335ce783d6b4cfaa311281e001d578ac12",
      "parents": [
        "8785d615122d4abbd22db702139584e8c472f502"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 05 14:57:21 2014 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 06 13:38:41 2014 -0800"
      },
      "message": "backtrace: use Java stack to help decode native\n\nBefore change:\n\n  native: usb_host_run+16 [0x400a43f9] (/libusbhost.so)\n  native: android::Vector\u003cint\u003e::do_move_forward(void*, void const*, unsigned int) const+54 [0x501b1c5b] (/libandroid_servers.so)\n  native: ??? [0x624de480] (/system@framework@boot.oat)\n  at com.android.server.usb.UsbHostManager.monitorUsbHostBus(Native method)\n  at com.android.server.usb.UsbHostManager.access$000(UsbHostManager.java:38)\n\nAfter change:\n\n  native: usb_host_run+16 [0x400933f9] (libusbhost.so)\n  native: android::Vector\u003cint\u003e::do_move_forward(void*, void const*, unsigned int) const+54 [0x4e984c5b] (libandroid_servers.so)\n  native: Java_com_android_server_usb_UsbHostManager_monitorUsbHostBus__+92 [0x624de480] (system@framework@boot.oat)\n  at com.android.server.usb.UsbHostManager.monitorUsbHostBus(Native method)\n  at com.android.server.usb.UsbHostManager.access$000(UsbHostManager.java:38)\n\nChange-Id: Iea550a251a12e9ba7df9582fd454093bfa4e90e0\n"
    },
    {
      "commit": "cc460f11b5422d8ad93c64b9c1d79b694386c272",
      "tree": "45edd34545e2d9e85f0c691ec0ffc52455796324",
      "parents": [
        "511472b9110d15cf30a205bb514eb98f6afce651"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 05 14:11:04 2014 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 05 14:11:04 2014 -0800"
      },
      "message": "backtrace: trim of unneeded slash from solib\n\nPreviously we would output solib with an unnecessary slash:\n\n  native: art::JDWP::JdwpState::Run()+6018 [0x416bf3e3] (/libart.so)\n\nTrim it off so it omits the slash:\n\n  native: art::JDWP::JdwpState::Run()+6018 [0x41961f6b] (libart.so)\n\nChange-Id: I82baf1e624227858f5750ef57058474d21777451\n"
    },
    {
      "commit": "13db9aa2d23e705d49c777abb45ba47e3747d873",
      "tree": "e170ee5e06ec205baa465083c4e213983a1ccc54",
      "parents": [
        "a2806550cefb7c70781d8ee6279e6ad5769804cb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 27 12:44:32 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 27 12:44:32 2014 -0800"
      },
      "message": "Avoid tripping up debuggered with the fatal crash abort\n\nBug: 13226780\nChange-Id: Ia876d1dc7774713ec49fb8e6b0625f118fffb198\n"
    },
    {
      "commit": "a1ce1fef2d49d1d537776a5308ace7102a815fe5",
      "tree": "a1afe850d9ebd21f4b751eb68e1ec3dc60dab001",
      "parents": [
        "930f7b843ddc6e6530439d3fdb0e2133a6292f1e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 23:23:58 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 26 13:17:44 2014 -0800"
      },
      "message": "Split up CommonTest into CommonRuntimeTest and CommonCompilerTest\n\nChange-Id: I8dcf6b29a5aecd445f1a3ddb06386cf81dbc9c70\n"
    },
    {
      "commit": "4cf5e57b5ec366b8730dacd45e8011e5f9b07b6d",
      "tree": "4830199916f9f0f507af7a7c0b959e2e881a0aeb",
      "parents": [
        "51c89a953df74c872993ea9a66c3ec8133b132da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Feb 25 11:47:48 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Feb 25 11:51:26 2014 -0800"
      },
      "message": "Move waitpid(2) includes to art::Exec implementation\n\n(cherry picked from commit 446a13ff04dae7ef9c90584e7cf8e834ee841681)\n\nChange-Id: Id5fe3dd8e6c4cef953c39b00f2a53b23da5a6247\n"
    },
    {
      "commit": "35d8b8e0f6d174108b5e94ec2e49cf3c6a0c72c3",
      "tree": "881aa821d6393f6dc8c0b9c5c7d9e4f799010a83",
      "parents": [
        "efeedc2f56a7525cc5958a429636a74c7c8b77d3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Feb 25 10:51:11 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Feb 25 11:26:03 2014 -0800"
      },
      "message": "Avoid going through char* for std::string API\n\nBug: 13186058\n\n(cherry picked from commit 14ae4a873e91ae8cb1c00013579b5b058268879d)\n\nChange-Id: Ib529cc10abc2d413e9da65c043dbc2638b734acd\n"
    },
    {
      "commit": "6449c62e40ef3a9bb75f664f922555affb532ee4",
      "tree": "2f1b2120bd648c95dea32b68c8e168e42c8e24fd",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 10 23:48:36 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 14:24:12 2014 -0800"
      },
      "message": "Create CompilerOptions\n\nPackage up most compiler related options in CompilerOptions. Details include:\n- Includes compiler filter, method thresholds, SEA IR mode.\n- Excludes those needed during Runtime::Init such as CompilerCallbacks and VerificationResults.\n- Pass CompilerOptions to CompilerDriver.\n- Remove CompilerOptions from Runtime.\n- Add ability to pass options for app and image dex2oat to runtime via\n  -Xcompiler-option and -Ximage-compiler-option respectively.\n\nOther\n- Replace 2x CompilerCallbacks implementations with one.\n- Factor out execv code for use by both image and oat generation.\n- More OatFile error_msg reporting.\n- DCHECK for SuspendAll found trying to run valgrind.\n\nChange-Id: Iecb57da907be0c856d00c3cd634b5042a229e620\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": "943af7dab1454517c5bd11a31ab99f260afb22d1",
      "tree": "0c8101f7d24eee3ff02ed324e34333a83853194f",
      "parents": [
        "00e7f2e935d98f0eb14f5ef1d376604d0054bf5e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 16 12:41:46 2014 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 16 17:42:55 2014 -0800"
      },
      "message": "Change to support new BacktraceMap.\n\nChange-Id: I291313583dca2c8e1e946504c442f5810f0fb477\n"
    },
    {
      "commit": "16ce0923698d9a2df8a93d3895d2e851d8ac6fbf",
      "tree": "fd2584e44bdf658b45fa480a833245238c6aa707",
      "parents": [
        "aa368a44da1807a04fd66f348f7f867ca30ce3cf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 10 14:59:36 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 10 15:25:32 2014 -0800"
      },
      "message": "Make fast JNI part of pretty method output.\n\nChange-Id: Ic4951a22d12e93d7f1e1af7ffbb08b4bb9b8f587\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": "6e9aeb6633e42bc7d2265f73de28e521e3fc9c21",
      "tree": "22291e5e4069e620f3595b1f0c84fcd4433a554d",
      "parents": [
        "08f20c63e2bd0c41d53a4c3ddaa34fd637f5405d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 05 16:23:10 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 12 10:42:48 2013 -0800"
      },
      "message": "Update Backtrace::Create to use new define.\n\nChange-Id: Ib345ef796c99d12fb3a4118f28edec7cbffa76d2\n"
    },
    {
      "commit": "7020278bce98a0735dc6abcbd33bdf1ed2634f1d",
      "tree": "533cf9a77046a49525d916043a58949e59319f2d",
      "parents": [
        "67f128a4023bbbe55827dd2c11ed0538ee387233"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Oct 22 17:52:19 2013 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Nov 05 16:48:53 2013 -0800"
      },
      "message": "Support hardware divide instruction\n\nBug: 11299025\n\nUses sdiv for division and a combo of sdiv, mul and sub for modulus.\nOnly does this on processors that are capable of the sdiv instruction, as determined\nby the build system.\n\nAlso provides a command line arg --instruction-set-features\u003d to allow cross compilation.\nMakefile adds the --instruction-set-features\u003d arg to build-time dex2oat runs and defaults\nit to something obtained from the target architecture.\n\nProvides a GetInstructionSetFeatures() function on CompilerDriver that can be\nqueried for various features.  The only feature supported right now is hasDivideInstruction().\n\nAlso adds a few more instructions to the ARM disassembler\n\nb/11535253 is an addition to this CL to be done later.\n\nChange-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68\n"
    },
    {
      "commit": "6b98c91275d4361d1b74effad36995cc2d687a55",
      "tree": "b96cc0d6d15cc60adf0939252b93bb47cb210448",
      "parents": [
        "610e49f5adc8b5e4a37696aa20fc029dab6b1e40",
        "7b5f0cf08f74ff36760a813888779d28a175982d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 05 07:04:12 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 05 07:04:12 2013 -0800"
      },
      "message": "am 7b5f0cf0: Use libbacktrace instead of libcorkscrew.\n\n* commit \u00277b5f0cf08f74ff36760a813888779d28a175982d\u0027:\n  Use libbacktrace instead of libcorkscrew.\n"
    },
    {
      "commit": "7b5f0cf08f74ff36760a813888779d28a175982d",
      "tree": "45d77050651a3423deabe7de7c51d8169f6cfd38",
      "parents": [
        "e2946917852af9d2ec643c7c987d2bb66cf2f086"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 01 15:18:45 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 04 13:46:11 2013 -0800"
      },
      "message": "Use libbacktrace instead of libcorkscrew.\n\nAlso, removed the ignore frames of 2, this was causing threads to chop\nthe lower two frames. The original code assumed that the calls to decode\nthe frame were in the unwind trace, but that\u0027s not the case.\n\nChange-Id: Ifc0da0227f9114a5b462ef88e038439d58f951e9\n"
    },
    {
      "commit": "8d31bbd3d6536de12bc20e3d29cfe03fe848f9da",
      "tree": "2373ae08ddddaf1034623df85d647ecf9ac6c831",
      "parents": [
        "57e6d8a99058e5c74d5244b68a5f4d53526fa108"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 13 10:44:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 21 17:01:11 2013 -0700"
      },
      "message": "Throw IOException at source of failing to open a dex file.\n\nBefore is:\njava.lang.ClassNotFoundException: Didn\u0027t find class \"GCBench\" on path: DexPathList[[zip file \"/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\"],nativeLibraryDirectories\u003d[/disk2/dalvik-dev/out/host/linux-x86/lib]]\n        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)\n        Suppressed: java.lang.ClassNotFoundException: GCBench\n                at java.lang.Class.classForName(Native Method)\n                at java.lang.BootClassLoader.findClass(ClassLoader.java:781)\n                at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)\n                at java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n                ... 1 more\n        Caused by: java.lang.NoClassDefFoundError: Class \"LGCBench;\" not found\n                ... 5 more\nAnd after is:\njava.lang.ClassNotFoundException: Didn\u0027t find class \"GCBench\" on path: DexPathList[[zip file \"/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\"],nativeLibraryDirectories\u003d[/disk2/dalvik-dev/out/host/linux-x86/lib]]\n        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)\n        Suppressed: java.io.IOException: Zip archive \u0027/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\u0027 doesn\u0027t contain classes.dex\n                at dalvik.system.DexFile.openDexFile(Native Method)\n                at dalvik.system.DexFile.\u003cinit\u003e(DexFile.java:80)\n                at dalvik.system.DexFile.\u003cinit\u003e(DexFile.java:59)\n                at dalvik.system.DexPathList.loadDexFile(DexPathList.java:268)\n                at dalvik.system.DexPathList.makeDexElements(DexPathList.java:235)\n                at dalvik.system.DexPathList.\u003cinit\u003e(DexPathList.java:113)\n                at dalvik.system.BaseDexClassLoader.\u003cinit\u003e(BaseDexClassLoader.java:48)\n                at dalvik.system.PathClassLoader.\u003cinit\u003e(PathClassLoader.java:38)\n                at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:128)\n                at java.lang.ClassLoader.access$000(ClassLoader.java:65)\n                at java.lang.ClassLoader$SystemClassLoader.\u003cclinit\u003e(ClassLoader.java:81)\n                at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:137)\n        Suppressed: java.lang.ClassNotFoundException: GCBench\n                at java.lang.Class.classForName(Native Method)\n                at java.lang.BootClassLoader.findClass(ClassLoader.java:781)\n                at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)\n                at java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n                ... 1 more\n        Caused by: java.lang.NoClassDefFoundError: Class \"LGCBench;\" not found\n                ... 5 more\n\nAlso, move dex file verifier messages out of logs.\nIn the process the ClassLinker::dex_lock_ needed tidying to cover a smaller\nscope. Bug 11301553.\n\nChange-Id: I80058652e11e7ea63457cc01a0cb48afe1c15543\n"
    },
    {
      "commit": "ba5352f8393a9e4fdc06c6b63e57fc241a9770c1",
      "tree": "1518d384958b7bd3b07d5934e7ad88e9d45e2bcb",
      "parents": [
        "8348939bbb6aa582a8abb33189e452354e597026",
        "19a083603128c2cded84f0e5ad59db2044b1d6b6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 16 19:34:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 16 19:34:58 2013 -0700"
      },
      "message": "am 19a08360: Fix dumpsys meminfo for art\n\n* commit \u002719a083603128c2cded84f0e5ad59db2044b1d6b6\u0027:\n  Fix dumpsys meminfo for art\n"
    },
    {
      "commit": "19a083603128c2cded84f0e5ad59db2044b1d6b6",
      "tree": "9674ec8c522b82f9221394c5c3164e3ac6589826",
      "parents": [
        "8293f74d1232775b9f94b5a2381bfefe856d0ba5"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 16 14:37:22 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 16 19:22:24 2013 -0700"
      },
      "message": "Fix dumpsys meminfo for art\n\nBug: 10112253\n\n(cherry picked from commit fb2f70c7678d33c2027cdd0285d8b5421876e6aa)\n\nChange-Id: I149c30242f3c9ef1f67b95e26731c2505e840171\n"
    },
    {
      "commit": "1449f1dbd4174c8bee5a3a1dbdbc256216342fce",
      "tree": "f7d620c48a52a08bc3f2a9da5abe4e5941b852e2",
      "parents": [
        "a9650dd5e7195aec987a69a6ebbdaf33f73a6b00",
        "80f85137828f3ada45de7beb0acd2888ed7b3b24"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 04 12:00:22 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 04 12:00:22 2013 -0700"
      },
      "message": "am 80f85137: am 7c798419: am 7c3d13ae: Use file magic to determine file type, not file extension.\n\n* commit \u002780f85137828f3ada45de7beb0acd2888ed7b3b24\u0027:\n  Use file magic to determine file type, not file extension.\n"
    }
  ],
  "next": "80f85137828f3ada45de7beb0acd2888ed7b3b24"
}
