)]}'
{
  "log": [
    {
      "commit": "f04cf5470fd53d93f7ae5b07205284c19fa59f41",
      "tree": "2eeb90611ef858fb542ec475c2d8cbb1ee719d8f",
      "parents": [
        "081e7a16c4fcbdb014441a236e12f58eb89ff99a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 15:25:25 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 16:53:30 2016 +0100"
      },
      "message": "Remove workarounds for [D]CHECK()s in constexpr functions.\n\nWe\u0027re now using C++14, so we can use [D]CHECK()s directly\nin constexpr functions. Remove the C++11 workaround macros\n([D]CHECK_CONSTEXPR) and C++ version checks. Also remove the\n\u0027static\u0027 qualifier from inline functions in affected files.\n\nTest: m test-art-host\nChange-Id: I0f962ad75e4efe9b65325d022cd272b229574222\n"
    },
    {
      "commit": "f8b3b8bc37fb04d8ae113ae6bfcf4de2f5a700d4",
      "tree": "cee02ae8f42e413e2d6af2140cd2f08e6ea34e6d",
      "parents": [
        "8b0e9b87ab6e54237b2d1e101b8cce7ea6443238"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 04 19:46:56 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 10 10:12:22 2016 +0000"
      },
      "message": "Try to substitute constructor chains for IPUTs.\n\nMatch a constructor chain where each constructor either\nforwards some or all of its arguments to the next (i.e.\nsuperclass constructor or a constructor in the same class)\nand may pass extra zeros (of any type, including null),\nfollowed by any number of IPUTs on \"this\", storing either\narguments or zeros, until we reach the contructor of\njava.lang.Object.\n\nWhen collecting IPUTs from the constructor chain, remove\nany IPUTs that store the same field as an IPUT that comes\nlater. This is safe in this case even if those IPUTs store\nvolatile fields because the uninitialized object reference\nwasn\u0027t allowed to escape yet. Also remove any IPUTs that\nstore zero values as the allocated object is already zero\ninitialized.\n\n(cherry picked from commit 354efa6cdf558b2331e8fec539893fa51763806e)\n\nChange-Id: I691e3b82e550e7a3272ce6a81647c7fcd02c01b1\n"
    },
    {
      "commit": "eb3bd88f263d8fed12132bb3cb4444c6f289c6ca",
      "tree": "e3f86ccf55bd5f8f80390c5c0af690854a9c8956",
      "parents": [
        "3ded7766981b3105c7686e0c9d75c378c42fa4a0"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Aug 07 16:19:01 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Aug 07 16:19:01 2015 -0700"
      },
      "message": "Fix C++14 bitrot.\n\nChange-Id: I22f7925a87bca45646c563971342a9a1b2090ba6\n"
    },
    {
      "commit": "d7cbf8a6629942e7bd315ffae7e1c77b082f3e11",
      "tree": "fc8c3371ed4ddac96bbe90a2f94ef5fb5c5472ee",
      "parents": [
        "f5988cf0c47ff935bb19c89ed0398be5fbe44bb6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 19 12:43:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 19 20:00:50 2015 -0700"
      },
      "message": "Change RETURN_VOID_BARRIER to RETURN_VOID_NO_BARRIER\n\nWe want to default to having a barrier for the case where we don\u0027t\ndex to dex.\n\nBug: 19762303\nChange-Id: I60348d89eaf0b9e1e480298afcecbb5f52e8661b\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": "7a01dc2107d4255b445c32867d15d45fcebb3acd",
      "tree": "5f25d4a2889e6fbcb5119484f2b0b6a4253f9b00",
      "parents": [
        "bce889940f10319bf67bdc5630c84dd7f6e5c246"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 02 17:00:44 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 17 21:06:27 2015 +0000"
      },
      "message": "Dead code elimination based on GVN results.\n\nChange-Id: I5b77411a8f088f0b561da14b123cf6b0501c9db5\n"
    },
    {
      "commit": "321b987ef037c44c0ed4e0e82661c88959a6239f",
      "tree": "b333364689dbd22753d9fb543bd0a53541aa632f",
      "parents": [
        "8173e4776afac6e8da01c42ddab09b635769415f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 24 16:33:51 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 24 17:27:42 2014 +0000"
      },
      "message": "Further cleanup using dex_instruction_utils.h.\n\nChange-Id: I85aa9e7d744b37ee3d2531c50470cd3fa87dc864\n"
    },
    {
      "commit": "26e7d454b9924f3673b075b05e4c604ad658a062",
      "tree": "6cfc018247661e298137cb0985b6ce7c7fb400a6",
      "parents": [
        "c2155048075b4916536f3aa23a88cd483b0f64a2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 24 14:09:46 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 24 14:40:22 2014 +0000"
      },
      "message": "Eliminate suspend checks on back-edges to return insn.\n\nThis optimization seems to have been broken for a long time.\n\nChange-Id: I62ec85c71bb5253917ad9465a952911e917f6b52\n"
    },
    {
      "commit": "af6925b7fe5dc5a3c8d52ee3370e86e75400f873",
      "tree": "1fe667865bb7dbae3a00bb002492bd4ff4ab194a",
      "parents": [
        "f585e549682a98eec12f92033e9634dc162b7df8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 31 16:37:32 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 21 18:47:37 2014 +0000"
      },
      "message": "Rewrite GVN\u0027s field id and field type handling.\n\nCreate a helper unit for dex insn classification and cache\ndex field type (as encoded in the insn) in the MirFieldInfo.\nUse this for cleanup and a few additional DCHECKs.\n\nChange the GVN\u0027s field id to match the field lowering info\nindex (MIR::meta::{i,s}field_lowering_info), except where\nmultiple indexes refer to the same field and we use the\nlowest of the applicable indexes. Use the MirMethodInfo from\nMIRGraph to retrieve field type for GVN using this index.\nThis slightly reduces GVN compilation time and prepares for\nfurther compilation time improvements.\n\nChange-Id: I1b1247cdb8e8b6897254e2180f3230f10159bed5\n"
    }
  ]
}
