)]}'
{
  "log": [
    {
      "commit": "cff30a0bfa3c4212f304caef24236884e144375d",
      "tree": "6a431222409f3a1a96c775d14cf455b82d466301",
      "parents": [
        "34aebb676cd442475e9384d72193b3693846247f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 25 17:33:32 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 31 21:33:24 2021 +0000"
      },
      "message": "Better support ICs on virtual calls\n\nDue to the way we implement profiles InlineCaches are only valid on\nmethods with implementations. Unfortunately due to the rather slow way\nwe update boot profile definitions code refactorings can lead to\ninline-caches being lost. This change makes profman more resilient to\nthis error by searching up the superclass resolutions to try to find a\nmethod the inline-caches can be attached to. This should ensure that\nboot-profile definitions fall out of date more slowly.\n\nTest: ./test.py --host\nBug: 168941430\n\nChange-Id: I5f6096500fa6f17e285b5a7bab21ad8216221966\n"
    },
    {
      "commit": "a2f1319a8941ae52c98594824b919c08eeb0ecd1",
      "tree": "df07248cd6701bf764c01ed1322b355c16e159bf",
      "parents": [
        "642c0f0e79ce35f11e0af5625618cb126ad40ffa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 03 18:19:03 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 19 20:32:08 2021 +0000"
      },
      "message": "Add text-profile support for multiple ICs\n\nText profile inline-cache support was limited to methods with only a\nsingle invoke. This extends support so it is instead based on the\nreceiver type and supports an arbitrary number of invokes. It does\nassume that all invokes of the same receivers should have the same\nICs. This enables us to create text profiles that can survive most\ncommon edits to the underlying java language files.\n\nIC lines are of the following format\n\n\u003c\u003cCLASS_GROUP\u003e\u003e :\u003d {CLASS}(,{CLASS})*\n\u003c\u003cIC_GROUP\u003e\u003e :\u003d \\[{CLASS}{CLASS_GROUP}\n\u003c\u003cIC_LINE\u003e\u003e :\u003d {PROFILE_FLAGS}{CLASS}-\u003e{METHOD}\\+{IC_GROUP}*\n\nThis means a typical line might look like:\n\n```\nHLTestInline;-\u003einlineTriplePolymorphic(LSuper;LSecret;LSecret;)I+[LSuper;LSubA;,LSubB;,LSubC;[LSecret;LSubB;,LSubC;\n```\n\nNote that old style single-invoke IC lines are still supported as\nwell and their format has not changed.\n\nUpdated --dump-classes-and-methods to dump ICs using this format. Note\nthat it will combine ICs for different pcs with the same target so it\nis possible to construct a profile where the \u0027profile -\u003e dump -\u003e\nprofile\u0027 operation is not idempotent. Any profile coming from a\ntext-dump will be idempotent under this transform.\n\nTest: ./test.py --host\nBug: 168941430\nChange-Id: I69ba3b312caa7ca454487aaeb49862e393de3a4a\n"
    },
    {
      "commit": "1061c7d2bf7a559abe5a234c680b27b8838862ca",
      "tree": "b9e299414fbdb05f9763a71fe46b9078449eaac6",
      "parents": [
        "8b959958d1df3545957ddbce2be2ea21003a121c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 23 21:00:29 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Clean up profile AddMethod APIs\n\nRestructure the profile assistant test to use the same APIs as profile\nsaver and\nclean up all the other usages for AddMethodIndex and AddMethod.\n\nBug: 139884006\nTest: m test-art-host\n\nChange-Id: Icf76d6aa05f0f9dcc589182196ca34a0298f2cb7\n"
    },
    {
      "commit": "589e71eb71477603c88b14118b2d3a33508c3c79",
      "tree": "95d88c7c8ba3a9b2009361d61164cef6a6339308",
      "parents": [
        "d9f647ac9a5cb0c6f112332d584756251c2cfb9f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 16:05:05 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 06 12:57:30 2017 -0800"
      },
      "message": "Encode inline caches with missing types in the profile\n\nNot all runtime types can be encoded in the profile. For example if the\nreceiver type is in a dex file which is not tracked for profiling its\ntype cannot be encoded.\n\nPreviously we would just skip over these types but that can lead to\nencode a polymorphic inline cache when in fact it should be megamorphic.\n\nWith this CL, inline caches for which types are missing are marked in\nthe profile with a special bit, kIsMissingTypesEncoding.\n\nAlso, extend profman to understand text lines which specify an inline\ncache with missing types.\n\nTest: test-art-host\n\nBug: 35927981\nBug: 32434870\nChange-Id: I34528a39c227f3133771fd4454701c1ddc234f40\n"
    },
    {
      "commit": "e0ac1151b360be7147fa20320c0b427688b1424f",
      "tree": "c33419b00c47b731075bcfd7b75b81f366beda91",
      "parents": [
        "425b5d23e2c60d295471817a75b1b554481c5334"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 13 19:03:47 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 13:12:31 2017 -0800"
      },
      "message": "Extend profman to generate profiles with inline caches\n\nExtend profman logic to generate profiles based on a simple textual\nrespresentation. This will help writing tests for profile guided\ncompilation.\n\nBefore this CL, profman was able to generate profiles based on a list of\nclasses like:\njava.lang.Comparable\njava.lang.Math\njava.lang.Object\n\nThis CL, enables profman to understand methods and classes alike. The\nnew format is:\n\n# Classes\nLjava/lang/Comparable;\nLjava/lang/Math;\n# Methods with inline caches\nLTestInline;-\u003einlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;\nLTestInline;-\u003enoInlineCache(LSuper;)I\n\n\"LTestInline;-\u003einlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;\"\nmeans that method `int inlineMonomorphicSubA(Super)` from class Main\nwill be added to the profile with the inline cache (SubA,SubB) for its\none and only invoke virtual.\n\n@Main#noInlineCache:(LSuper;)I+;\nmeaning that method `int noInlineCache\u0027 from class Main will be added\nto the profile with no inline cache.\n\nNote that the methods are allowed to have a single invoke virtual in\ntheir dex bytecode. That is to keep the parsing the file format\nsimple and easy to use.\n\nAlso, add a few more tests for profiles and fix an issue caused by\nwriting the dex files in a possibly wrong order.\n\nTest: m run-test-host-gtest-profile_assistant_test\nBug: 32434870\nChange-Id: I6b7340cf613007117d9818be206ccb3a27b815bf\n"
    },
    {
      "commit": "877fd963548a3175665bfef25b0d24bc0e5a0135",
      "tree": "db4cae18266f7cd9415a362c21d50fef93a8488f",
      "parents": [
        "37a5abcf5e7644ae1fd1a85e865c8a71e38a9af2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 05 14:29:29 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 19 11:17:24 2016 -0800"
      },
      "message": "Improve profile processing\n\n- allow file descriptors in addition to file names for profiles\n- fix some minor issues (wrong comparison signs, unhandled errors)\n- added gtests for profile_compilation_info, profile_assistant\nand compiler_driver\n\nBug: 26080105\nChange-Id: I136039fa1f25858399000049e48b01eafae54eb1\n"
    }
  ]
}
