)]}'
{
  "log": [
    {
      "commit": "21300536fec3e9fcf8b436fdb09767b03c8cf945",
      "tree": "e319512f74c0e43bec9046a55865174270e06a68",
      "parents": [
        "cc92b213c1931a68b1317471b0e8fd12a98e96b0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 24 18:06:55 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 24 22:39:55 2017 +0000"
      },
      "message": "Rewrite retrieval of resolved classes.\n\nUse ClassLinker::VisitClasses() instead of walking over dex\ncache type arrays. The old technique relies on the dex cache\nholding references to all resolved classes, an assumption\nthat we\u0027re going to break soon.\n\nTest: m test-art-host-run-test-595-profile-saving\nBug: 30627598\nChange-Id: Icae71f53b5a33ff931d83aa8d44cc182889f26da\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "9275af6ec0d71d1a13a97a1d292806b73f755717",
      "tree": "3768c629647df0c499d180e9dc277e8c62c37e9a",
      "parents": [
        "206d27da4e38df51e2fc44de3ed4d1f54198662a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 29 12:03:56 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 29 14:07:37 2016 -0700"
      },
      "message": "Fix profile saver to use base dex location\n\nPreviously we were using the dex location. This only matches the\nbase location for the main dex file, and resulted in only the\nmain dex file to have classes recorded.\n\nBug: 28463739\n\nChange-Id: I0117352150c7244dd048338dbb677abdd4554eb0\n"
    },
    {
      "commit": "8913fc1a27df8cf3b37fd99e94d87f290591328e",
      "tree": "103dae9d86a153e8520dfa9f733c3208bcadd06d",
      "parents": [
        "167e638ffd46186ef4fa26d1c0b6c7e00ed51ccb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 09 16:38:30 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 26 11:35:59 2016 -0800"
      },
      "message": "Add and use loaded class profiling\n\nClass profiling is a way to keep track of which classes are resolved.\nFrom here the compiler can use this information to generate a smaller\napp image.\n\nTODO: Add tests for profile stuff.\n\nBug: 22858531\n\nChange-Id: I91ccd686394cc2517512f66abb0e277f3d26d4da\n"
    }
  ]
}
