)]}'
{
  "log": [
    {
      "commit": "b1f9c79c550e4d9d77d85ab723b642cd0eb7afad",
      "tree": "99e6c330f7b9c9c4e7c659788e4920ebdd96555a",
      "parents": [
        "b27d874ebc0c067d96994a6ebe3c10eaeb2e4a75"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:10:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:11:52 2018 +0100"
      },
      "message": "Remove all multidex.jpp files.\n\nThese are unused since jack was removed from the tree.\n\nTest: Rely on TreeHugger\nChange-Id: Iaf16bc70ed943d46cd56a3140deb7508c8bf985f\n"
    },
    {
      "commit": "a9b131069c146df4ac58254b496443e20d5beace",
      "tree": "9e8b8aebe2e17d04c23054d5fb1c462046fa3a09",
      "parents": [
        "1e739fa94947147953c53e92964e0e9e1eac0526"
      ],
      "author": {
        "name": "Tamas Kenez",
        "email": "tamaskenez@google.com",
        "time": "Fri Jun 15 14:12:12 2018 +0200"
      },
      "committer": {
        "name": "Tamas Kenez",
        "email": "tamaskenez@google.com",
        "time": "Fri Jun 15 14:12:12 2018 +0200"
      },
      "message": "ART-tests: Remove DX dependency from 569-checker-pattern-replacement.\n\nTest has already been working with D8, this CL only enables it.\n\nTest: art/test.py -b -r --host -t 569-checker-pattern-replacement\nBug: 65168732\nChange-Id: If3496ff7a474adef319a3de89eb438f9b1c31676\n"
    },
    {
      "commit": "a1b1b1bd56c609cea90330dd39ba375f3ec081c7",
      "tree": "a9180710d5e6f035f0091304cc9db3817c36e46c",
      "parents": [
        "b7f680727032a6fa82f166c2c268db8eb0f3b570"
      ],
      "author": {
        "name": "Rico Wind",
        "email": "ricow@google.com",
        "time": "Tue May 01 15:50:27 2018 +0200"
      },
      "committer": {
        "name": "Rico Wind",
        "email": "ricow@google.com",
        "time": "Tue May 01 16:51:27 2018 +0000"
      },
      "message": "Add a few cases of non compatiple d8 tests\n\nUnblock rolling r8\nBug: b/65168732\nTest: Test still work with dx\nChange-Id: I54c805e205c550215a6dc3f05ec5f83a753c054b\n"
    },
    {
      "commit": "a308a327884920cbb1e3e62964c4b5a01c29af8c",
      "tree": "4bd09065c52f18685dc9e10d9eabdcdb29a51539",
      "parents": [
        "bacafb19fa654fb6c7ad610305bed45c2e4682e8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 16:51:51 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:02:27 2017 -0700"
      },
      "message": "Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\n\nThe \u0027:\u0027 separator is commonly used to separate class path elements. That\nmeans that we cannot easily encode multidex location in a classpath\nwithout complicating the parsing logic unnecessarily (e.g. when encoding\nclasspaths in the oat file).\n\nFor easy parsing and understanding kMultiDexSeparator and\nkClassPathSeparator should have different values. \u0027:\u0027 is a wide spread\nclasspath separator so this CL changes the value of kMultiDexSeparator to\n\u0027!\u0027 which is also commonly used to denote an object inside a given\ncontainer.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I30995c553d9131478c6c071b27327df6d2de06a7\n"
    },
    {
      "commit": "79d8fa7c52c1810d4618c9bd1d43994be5abb53d",
      "tree": "411a76dec2adf4139328d5e607b498b72c9aa2af",
      "parents": [
        "acac09dad3d5aa3922e6cdf54ff2e4fa6f176484"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Apr 18 09:37:23 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu May 18 14:14:13 2017 +0000"
      },
      "message": "optimizing: Build HConstructorFence for HNewArray/HNewInstance nodes\n\nAlso fixes:\n* LSE, code_sinking to keep optimizing new-instance if it did so before\n* Various tests to expect constructor fences after new-instance\n\nSidenote: new-instance String does not get a ConstructorFence; the\nspecial StringFactory calls are assumed to be self-fencing.\n\nMetric changes on go/lem:\n* CodeSize -0.262% in ART-Compile (ARMv8)\n* RunTime -0.747% for all (linux-armv8)\n\n(No changes expected to x86, constructor fences are no-op).\n\nThe RunTime regression is temporary until art_quick_alloc_* entrypoints have their\nDMBs removed in a follow up CL.\n\nTest: art/test.py\nBug: 36656456\nChange-Id: I6a936a6e51c623e1c6b5b22eee5c3c72bebbed35\n"
    },
    {
      "commit": "d01745ef88bfd25df574a885d90a1a7785db5f5b",
      "tree": "058eb1593dbb0fe8a8e26b901909bec8aa01d474",
      "parents": [
        "a57c334075b193de9690fff97acf6c1b1d1283fc"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Apr 05 16:40:31 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue May 02 09:45:45 2017 -0700"
      },
      "message": "optimizing: constructor fence redundancy elimination - remove dmb after LSE\n\nPart one of a few upcoming CLs to optimize constructor fences.\n\nThis improves load-store-elimination; all singleton objects that are not\nreturned will have their associated constructor fence removed.\n\nIf the allocation is removed, so is the fence. Even if allocation is not\nremoved, fences can sometimes be removed.\n\nThis change is enabled by tracking the \"this\" object associated with the\nconstructor fence as an input. Fence inputs are considered weak; they do not keep\nthe \"this\" object alive; if the instructions for \"this\" are all deleted,\nthe fence can also be deleted.\n\nBug: 36656456\nTest: art/test.py --host \u0026\u0026 art/test.py --target\nChange-Id: I05659ab07e20d6e2ecd4be051b722726776f4ab1\n"
    },
    {
      "commit": "264e96c70ee588b16da570fec9403e21f1ab74fb",
      "tree": "e4cbc07b6d8e2bf11f294b5d4608b48ae7f0b53b",
      "parents": [
        "064e9d401c49d3789b5deeeb6b423a4f551e4206"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 03 18:08:17 2016 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Mar 08 11:15:02 2016 +0100"
      },
      "message": "Support multidex run-test with Jack\n\nUpdates default-build script to compile multidex run-tests with\nJack. Such test needs a \u0027multidex.jpp\u0027 file specifying how to\npartition classes in the output dex files (mainly how to stick some\nclasses in the classes.dex file and others in a classes2.dex file).\n\nBug: 19467889\n\n(cherry picked from commit 4856ca7f652b889c176a2af747d5cc4b334fc1c6)\n\nChange-Id: I056d49d50f62f9fadbc6749fb4b185d5bb3dea12\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": "0d11ffe0d59170903695b94c9af8bbadad59ebfe",
      "tree": "cc120789d31f6ed08be24cedf17bcb9b55c4d134",
      "parents": [
        "f1e2b4dd9238d85d041f47b6bd853babe0a53c85"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 02 11:10:16 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 02 11:23:27 2016 +0000"
      },
      "message": "Optimizing: Do not depend on sharpening in test 569.\n\nThe sharpening may or may not remove the ArtMethod*\nparameter, so the test must not depend on its absence.\nThis fixes the test 569 checker test on mips/mips64.\n\nChange-Id: Ibee88d3602778006558caf33cf69e7c419918699\n"
    },
    {
      "commit": "be10e8e99a78caae01fb65769218800d465144ae",
      "tree": "cfa5cd3264137febdba6e49cae0393c779c6439c",
      "parents": [
        "fa72bf1823a39b43552fa1b9ae572023830a4ac1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 22 12:09:44 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 28 18:13:53 2016 +0000"
      },
      "message": "Optimizing: Try pattern substitution when we cannot inline.\n\nChange-Id: I7c01f4494bac8498accc0f087044ec509fee4c98\n"
    }
  ]
}
