)]}'
{
  "log": [
    {
      "commit": "0e8443995af602bcc2e70dcef1d20ee48acec934",
      "tree": "2d81b8db23bea139e40e33e4e9b8c69027fb1e56",
      "parents": [
        "c4cb3d532db8a500c1a15e8a0052895960259209"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Sep 08 13:43:31 2016 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Sep 21 11:42:21 2016 +0100"
      },
      "message": "Collapse ART\u0027s AbstractMethod class into Executable\n\nAfter the OpenJDK 8 pull there is now a common base class\nfor Method and Constructor that can be used instead.\n\nMethods that are abstract on Executable but on Android\nwere implemented in AbstractMethod are now consistently\nrenamed to \"{method}Internal\", declared final and\ngiven package-protected access.\n\nFor consistency with all other private, natively\nimplemented methods, the method getDeclaredAnnotations()\nhas been renamed getDeclaredAnnotationsNative().\n\nBug: 28666126\nBug: 31052885\nTest: make test-art-host and cts run of CtsLibcoreTestCases\nChange-Id: Ibfe6af6a47fe0cfffd0859ffbe58980aeb84e053\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "e01e3644205c3644546889237c20185391a0092e",
      "tree": "413fcf279b415a305605a601297e3856f13a2948",
      "parents": [
        "de4cf16f467b531373560ca6eb785f0f36606aae"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:06:04 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:09:41 2016 -0700"
      },
      "message": "ART: Add pointer-size template to some reflection functions\n\nThe unstarted runtime may run code for a different pointer size,\neven when no transaction is active (e.g., during startup). To\nretain performance when the runtime is up and executing under\nnormal conditions, add a template parameter and use sizeof(void*)\nin places where it is adequate.\n\nFor maintainability, it is necessary to drop the default for\nthe transaction template parameter. Implicit conversions from\nbool to size_t may lead to incorrect code and hard to diagnose\nproblems. So instead ensure that all callers must give all\ntemplate parameter values.\n\nTest: m test-art-host\nChange-Id: I3076883422c8553ede4de5642409c5684a5a9aa8\n"
    },
    {
      "commit": "6039e5662507e42896084e561fa546b432698ee6",
      "tree": "d8a4b6260cc134fcdf7f4a24d89d062dae7f7a61",
      "parents": [
        "dc148d24cc11845036063a2876c9bfef03d00ce5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 05 18:18:43 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 06 13:43:54 2016 -0700"
      },
      "message": "ART: Add getDeclaredConstructor cutout for unstarted runtime\n\nIn the vein of getDeclaredMethod and getDeclaredField. Refactor\ncode from java_lang_Class to share code.\n\nAllows to compile-time initialize:\n* sun.security.x509.AVAKeyword\n* sun.security.x509.X500Name\n\nBug: 27265238\n\n(cherry picked from commit f72f19fac0016499d33fd75b0463d0128a58a9f4)\n\nChange-Id: I075c1b11f3408f5b31e4f84140a24fd8d3eaa17e\n"
    },
    {
      "commit": "bc4d218ce2ceef0c4f308d4ff42f7ec1ec43c40e",
      "tree": "a583db9be377183508653607a724dcb8742f4ca2",
      "parents": [
        "01c30e8dbc45bdc5d922cef6e5a404be7bed0e8c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 22 10:03:12 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 26 15:43:14 2016 -0800"
      },
      "message": "ART: Add unstarted-runtime functions\n\nAdd more functions to allow compile-time initialization of\ncode.\n\nBug: 27248115\n\n(cherry picked from commit 0866f4ed6338faa4a193b7e819fc7cd72bd7b0ae)\n\nChange-Id: Iaf8d92deb73547ccd31c0d6dde68da3bc14c3985\n"
    },
    {
      "commit": "ed8990a467f3d93545221a33e43a9d34b1cc363f",
      "tree": "74e9fa58eb8582ed3ca81822d96d34d90bc62c59",
      "parents": [
        "bea4eb4b29aa1030aa1919dfedaa95aea2599b7a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 23 14:11:16 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 23 14:46:52 2015 -0700"
      },
      "message": "Add some more uninterruptible annotations\n\nAdded to mirror sites, class linker, and intern table.\n\nBug: 20072211\nChange-Id: I2224bcefefaab05d325f14844b1514e3d719e649\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "fc58af45e342ba9e18bbdf597f205a58ec731658",
      "tree": "3f93906235cb4d2462d237223b72ccf4eedef645",
      "parents": [
        "bbf02afc641a393d33342976e269218668c07386"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 16 18:00:39 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 15:51:29 2015 -0700"
      },
      "message": "Add AbstractMethod, Constructor, Method\n\nMoves functionality to ART from libcore. Precursor to moving\nArtMethods to native. Mostly performance improvements.\n\nN5 perf before (irrelevant results removed):\n            Class_getConstructor  962.87 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 2394.37 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 Class_getMethod 2509.20 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n               Class_newInstance 1999.81 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeI 1439.02 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1415.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1456.24 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1427.32 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  814.47 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  816.56 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nAfter:\n                       benchmark      ns linear runtime\n            Class_getConstructor 1302.04 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 1459.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 Class_getMethod 1560.40 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n               Class_newInstance 2029.94 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeI 1312.89 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1255.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1289.13 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1196.52 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  790.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  791.73 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nPerformance improvements are more than just fixing regressions introduced\nin: http://android-review.googlesource.com/#/c/146069/\n\nBug: 19264997\n\nChange-Id: Ife79c469fdb09f30e3aefcfc3e0ce5ed32303fce\n"
    }
  ]
}
