)]}'
{
  "log": [
    {
      "commit": "d456117108c1efad790808698787868813b428e2",
      "tree": "d5785c40ad689dbd158fc52eed8b32c9ced967d5",
      "parents": [
        "ba2531826613a21736dd170d09877d3eb7990c5d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 30 17:48:25 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 13 15:36:23 2019 +0000"
      },
      "message": "ART: Mark StringBuilder.append()s as intrinsics.\n\nWe do not actually emit intrinsic implementations for these\nmethods but we use this designation to simplify their use\nknowing that they \"return this\". This also prepares for\nrecognizing and optimizing the StringBuilder append pattern.\n\nNote that intrinsics are never inlined but these methods are\ndefined in core-oj and therefore the rest of the boot image\nand prebuilts are not allowed to inline them anyway.\n\nBoot image sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19756400\n   arm64/boot*.oat: 23415656\n - after:\n   arm/boot*.oat: 19653872 (-100KiB)\n   arm64/boot*.oat: 23292784 (-120KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 19575890\nChange-Id: I2f3bac17830ac1c51287b090a96facddd3d09f5c\n"
    },
    {
      "commit": "bf44f151b735364434fb886d43b78ea0b47d08be",
      "tree": "d259e9460372ca27edda3ec1e7d2a463546bdcaa",
      "parents": [
        "1e152a6090c546f4a6184a5610c85cae7ac77068"
      ],
      "author": {
        "name": "Jinseong Jeon",
        "email": "jsjeon@google.com",
        "time": "Thu Nov 01 22:45:29 2018 -0700"
      },
      "committer": {
        "name": "Jinseong Jeon",
        "email": "jsjeon@google.com",
        "time": "Thu Nov 01 22:45:47 2018 -0700"
      },
      "message": "Update 624-checker-stringops and 911-get-stack-trace.\n\nAfter https://r8-review.googlesource.com/29460, D8/R8 canonicalize\nconst-string if possible.\n\nTwo ART tests have some constant strings, which are canonicalized by\nthat optimization, while outputs still expect constant loading.\n\nFor 624-checker-stringops, we can use different constants without\nchanging test expectations.\n\nFor 911-get-stack-trace, every `doTest()` starts with, e.g.,\n\n  System.out.println(\"######\");\n  System.out.println(\"message\");\n  System.out.println(\"######\");\n\nand one of #\u0027s is canonicalized, hence consistenlty shifted offset in\nexpected outputs.\n\nTest: art/test/testrunner/testrunner.py -b --host -t 624-checker-stringops\nTest: art/test/testrunner/testrunner.py -b --host -t 911-get-stack-trace\nBug: 118235919\nChange-Id: I4432fdf3e3d9cda111d0726ce930c935f2c334f0\n"
    },
    {
      "commit": "51e52c0856cd44f0c324ab35e6658008d84bf3df",
      "tree": "78d9050aad96f6a328123ad5689d2c01e422c0d3",
      "parents": [
        "67e4f8faa93a5ef8ed3ed84708c8655182409b76"
      ],
      "author": {
        "name": "Ian Zerny",
        "email": "zerny@google.com",
        "time": "Thu Sep 20 07:12:46 2018 +0000"
      },
      "committer": {
        "name": "Ian Zerny",
        "email": "zerny@google.com",
        "time": "Thu Sep 20 07:12:46 2018 +0000"
      },
      "message": "Revert \"Use different operations to load string before loops in LICM test.\"\n\nThis reverts commit 67e4f8faa93a5ef8ed3ed84708c8655182409b76.\n\nReason for revert: This is an invalid optimization on D8\u0027s part and should not need ART test updates.\n\nChange-Id: I948ad1c5d720e7236205ed1e728dbb5fbc378974\n"
    },
    {
      "commit": "67e4f8faa93a5ef8ed3ed84708c8655182409b76",
      "tree": "f9dfcc01315c7d96f43fa8c63abcd8c5f18b9657",
      "parents": [
        "a93364cbd4ebf4b8c309c4c18f30e16c8f9a8997"
      ],
      "author": {
        "name": "Jinseong Jeon",
        "email": "jsjeon@google.com",
        "time": "Tue Sep 18 22:51:37 2018 -0700"
      },
      "committer": {
        "name": "Jinseong Jeon",
        "email": "jsjeon@google.com",
        "time": "Wed Sep 19 06:04:56 2018 +0000"
      },
      "message": "Use different operations to load string before loops in LICM test.\n\nThe test assertion will not hold if a compiler (D8) removes the\nstring load, e.g., by computing String#length at compile time:\n  https://r8-review.googlesource.com/c/r8/+/26540\n\nBug: 115968045\nBug: 113880427\nTest: art/test.py --host -r -t 624-checker-stringops\n\nChange-Id: Ibe6a4a46f534b7079ba516f27da82fec2d60f4ea\n"
    },
    {
      "commit": "4a509bea8e4d41ecb2d21742946ad9ac97aca4ec",
      "tree": "ac9058610e4475267f6725365ca7b9397742bcf2",
      "parents": [
        "8cdfac752808784d29185710095ad104922cd861"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Tue Oct 03 22:33:47 2017 -0700"
      },
      "committer": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Wed Oct 04 12:55:53 2017 -0700"
      },
      "message": "Make 624-checker-stringops less Dexer-sensitive.\n\nRewrite Dexer-sensitive tests from 624-checker-stringops using Smali\n\nBug: 65168732\nTest: art/test/run-test ... 624-checker-stringops\nChange-Id: Ia808f9237a6386a3a45a65245d902eb3f19c65f0\n"
    },
    {
      "commit": "3e86bb035fc52bee2d277c71b57d8d40d1577b7f",
      "tree": "03584a4d4f50f76993742e47f358150d5b8f296f",
      "parents": [
        "c898aa8d2865197cbeefc63d8ec78d93c305c68e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 16 12:47:06 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 16 14:13:34 2017 +0000"
      },
      "message": "Fix 624-checker-stringops for PIC.\n\nDo not rely on the const-string \"x\" to be non-throwing;\njust pull the \"x\" out of the loop to make it irrelevant.\n(The non-PIC test was \"lucky\" because \"x\" is a boot image\nstring and HLoadString/kBootImageAddress in non-throwing.\nIn PIC mode, the HLoadString/kBssEntry is throwing; the\n\"is in boot image\" optimization for HLoadClass has not been\nimplemented for HLoadString.)\n\nTest: testrunner.py --host -t 624\nTest: testrunner.py --host --pictest -t 624\nChange-Id: Iff5cfb1276af0e4896707f19a18e6053afd87a77\n"
    },
    {
      "commit": "ab2270f8f7ecd93c7ba353dd4e300669de3e7aee",
      "tree": "113e6b264117bc9a3217a2d1685a09bb589075f8",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 15 09:36:31 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 15 11:03:38 2016 -0800"
      },
      "message": "Fixed signal 11 bug by not testing resolved method first.\n\nTest: test-art-host\nBug: 33656359\n\nChange-Id: Idb1afccf811a2fbf7500fc1d953e118981ad36d4\n"
    },
    {
      "commit": "71bf7b43380eb445973f32a7f789d9670f8cc97d",
      "tree": "76425f8578b247a845fe61724d71efc63059760f",
      "parents": [
        "52f52361c2ea37941fbda71e3c653bb8096bf516"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Nov 16 10:17:46 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Nov 30 13:21:21 2016 -0800"
      },
      "message": "Optimizations around escape analysis. With tests.\n\nDetails:\n(1) added new intrinsics\n(2) implemented optimizations\n      more !can be null information\n      more null check removals\n      replace return-this uses with incoming parameter\n      remove dead StringBuffer/Builder calls (with escape analysis)\n(3) Fixed exposed bug in CanBeMoved()\n\nPerformance gain:\nThis improves CafeineString by about 360%\n(removes null check from first loop, eliminates second loop completely)\n\nTest: test-art-host\n\nChange-Id: Iaf16a1b9cab6a7386f43d71c6b51dd59600e81c1\n"
    },
    {
      "commit": "ff7d89c0364f6ebd0f0798eb18ef8bd62917de6a",
      "tree": "9a8401416b499f815731fd38dec219a1e49b623d",
      "parents": [
        "8acdebc1a1b5821d3bb8e9461f7877fc234a37ff"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Nov 07 08:49:28 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Nov 09 09:32:36 2016 -0800"
      },
      "message": "Allow read side effects for removing dead instructions.\n\nRationale:\nInstructions that only have the harmless read side effect may\nbe removed when dead as well, we were too strict previously.\nAs proof of concept, this cl also provides more accurate information\non a few string related intrinsics. This removes the dead indexOf\nfrom CaffeineString (17% performance improvement, big bottleneck\nof the StringBuffer\u0027s toString() still remains in loop).\n\nTest: test-art-host\nChange-Id: Id835a8e287e13e1f09be6b46278a039b8865802e\n"
    }
  ]
}
