)]}'
{
  "log": [
    {
      "commit": "3a0909248e04b22c3981cbf617bc2502ed5b6380",
      "tree": "b0b7013ea78b10f23fae75ef145e53a696ff797c",
      "parents": [
        "457e874459ae638145cab6d572e34d48480e39d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "message": "Revert \"lambda: Add support for invoke-interface for boxed innate lambdas\"\n\n955-lambda is flaky\n\nBug: 24618608\nBug: 25107649\n\nThis reverts commit 457e874459ae638145cab6d572e34d48480e39d2.\n\nChange-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7\n"
    },
    {
      "commit": "457e874459ae638145cab6d572e34d48480e39d2",
      "tree": "b192c4698c4889ae90db6abe2652199802213fe6",
      "parents": [
        "3944f7175dcf60316ba58a42698ccf23c65ac57c"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 22 17:37:50 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Nov 20 16:33:06 2015 -0800"
      },
      "message": "lambda: Add support for invoke-interface for boxed innate lambdas\n\nLambda closures created with the \u0027create-lambda\u0027 instruction\n(termed \"innate lambdas\") can be turned into an object with \u0027box-lambda\u0027.\n\nThis CL enables support for those kinds of lambdas to work with\n\u0027invoke-interface\u0027 by generating a proxy class for the lambda.\n\nNote: MIPS32/64 support not included.\n\nBug: 24618608\nBug: 25107649\nChange-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb\n"
    },
    {
      "commit": "99babb6add7db19ce7605f6d5e4aee79d52e386f",
      "tree": "116f63fc2f96ad103a5dc121667d4b3df9e6e2ff",
      "parents": [
        "3f922d1f3ccd7a1341f887ac3e8176b5208ecf6d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 02 16:20:00 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 04 12:16:16 2015 -0800"
      },
      "message": "ART: Change behavior for rethrowing init failures\n\nAllow to store a Throwable instance or a throwable class. Handle\nrethrow accordingly.\n\nBug: 25444180\nChange-Id: I703c2c6eaf34ad0e3bc0f5a104d65f2ff1b212ca\n"
    },
    {
      "commit": "9507fa2c9545156747a5eb248bc1af3159bfd8c8",
      "tree": "f8facbd68dabc781cc4f8e76353a418ef633896e",
      "parents": [
        "c65d1f3d26a47e2fce3c3f8872e7942fec23f9b9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 29 15:08:57 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 29 15:22:00 2015 -0700"
      },
      "message": "Change a few places to use string version of GetTypeId\n\nGetTypeId is about 20% faster than GetStringId + integer GetTypeID\nsince it does less binary searches.\n\nChange-Id: I876c4ac89ab206acca217b2287b0197ef2e408c2\n"
    },
    {
      "commit": "951ec2c93c79c5539cbcc669566f0808d4460338",
      "tree": "ce3505be2fc526afafaf6135e9d15d831860502d",
      "parents": [
        "6a6916b378c413c2692782e901393607c47f0005"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 22 08:50:05 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 22 16:25:09 2015 +0000"
      },
      "message": "Revert \"Revert \"Add one LinearAlloc per ClassLoader\"\"\n\nIssue was fixed by:\nhttps://android-review.googlesource.com/#/c/171945/\n\nBug: 22720414\n\nThis reverts commit 7de5dfe37f3cf24e1166412b589f6f67dcd1f1c0.\n"
    },
    {
      "commit": "7de5dfe37f3cf24e1166412b589f6f67dcd1f1c0",
      "tree": "a87eeac15fd485bb14ea8ace2b2bc839c4c253be",
      "parents": [
        "356412e2b7ba3fde164bc08a44fee0ddc19c54e1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 22 09:48:02 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 22 09:48:02 2015 +0000"
      },
      "message": "Revert \"Add one LinearAlloc per ClassLoader\"\n\nTimes out on 32bit target/host for 132-daemon-locks-shutdown test.\n\nBug: 22720414\n\nThis reverts commit 356412e2b7ba3fde164bc08a44fee0ddc19c54e1.\n\nChange-Id: I5ab3a09e88a5ad8c306a27d2606ecbecc80b9326\n"
    },
    {
      "commit": "356412e2b7ba3fde164bc08a44fee0ddc19c54e1",
      "tree": "9e07c960e67b3627ced80fa9a0dcd0c9fd8b5951",
      "parents": [
        "d0d11f20811f260453f6dfe2e26d7dbd6ed55f01"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 21 09:07:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 21 12:48:12 2015 -0700"
      },
      "message": "Add one LinearAlloc per ClassLoader\n\nAlso added freeing linear alloc and class table when the\ncorresponding class loader is no longer reachable.\n\nBug: 22720414\n\nChange-Id: Icb32c3a4c865f240e147bc87ed080a6b1d8a5795\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    },
    {
      "commit": "673ed3d8aedc5462a47ded827c99f35d46525457",
      "tree": "83de4690228c9f7772c48c770c5e2e5ba2dac6fe",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 14:56:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 10:58:31 2015 -0700"
      },
      "message": "Revert \"Revert \"Change dex caches to be weak roots\"\"\n\nThis reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b.\n\nBoot.oat creation time goes from 4.7s to 4.9s on host due to extra\nlocking. Will try to improve this in another CL.\n\nBug: 23602225\nBug: 22720414\n\nChange-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021\n"
    },
    {
      "commit": "52a7f5caebdf359ab877f1928aad59f1e9ad29fa",
      "tree": "fe23aeb3682128a31c62324e427b906c9804afd3",
      "parents": [
        "944973e56fd3c04c92d902b05d0148f77ed28a78"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 18:35:52 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 21 10:25:36 2015 -0700"
      },
      "message": "Add class flags to class to help GC scanning\n\nReduces GC time and pauses by reducing the number of loads required\nto scan an object.\n\nAverage total GC time before on EvaluateAndApplyChanges (EAAC): 7.452s\nAfter: 7.144s\n\nAverage GC pause times before on EAAC: 860.67us\nAfter: 722.75us\n\nAdding the class flags field cause a memory increase of ~24k system\nwide on low memory devices.\n\nChange-Id: I3f04212d5787bfbf5e55026584d149f55476105e\n"
    },
    {
      "commit": "6b06953817bdf613b52389c457e2f4ed6cf46f5c",
      "tree": "fb4ba014d048eae6a28778568a9b7c30889a01b7",
      "parents": [
        "7fbaa22e10979cf17b8c1c0c96bef4919e9d4163"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 05 15:08:12 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 07 16:10:07 2015 -0700"
      },
      "message": "Add class table field to class loader\n\nFixes bug with the class table where the comparator would cause read\nbarriers and break the map strict ordering properties.\n\nBug: 22957957\n\nChange-Id: I8dbc042db6e22e2172ab4ec58ddf1db0345dcaaa\n"
    },
    {
      "commit": "54d220eb9cc51215d75b9e0fe921b94bebbb3fd6",
      "tree": "fe08749dea3ca6cad97bce48416beb37203efdf5",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 30 16:20:06 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 05 18:15:22 2015 -0700"
      },
      "message": "Move ArtFields and ArtMethods to be a length prefixed array\n\nFixes race conditions between changing method and fields arrays\nbeing seen in the wrong order by the GC.\n\nBug: 22832610\nChange-Id: Ia21d6698f73ba207a6392c3d6b9be2658933073f\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": "9d1e19035a59ff8bf05a09ad880ede99806ba73f",
      "tree": "7eb3c9eb01d4f581f3e354d947300547582fdd38",
      "parents": [
        "3fd79afbb7490f52817f737ecceb694f6618dcf9",
        "848f70a3d73833fc1bf3032a9ff6812e429661d9"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 28 02:04:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 02:04:09 2015 +0000"
      },
      "message": "Merge \"Replace String CharArray with internal uint16_t array.\""
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "60f63f53c01cb38ca18a815603282e802a6cf918",
      "tree": "4f18427401ead0c790e926672957189a0c0a39eb",
      "parents": [
        "633a37ece49c5afcf3fa9a89692f07d19c56229b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 23 16:12:40 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 23 21:11:40 2015 -0700"
      },
      "message": "Use the lock word bits for Baker-style read barrier.\n\nThis enables the standard object header to be used with the\nBaker-style read barrier.\n\nBug: 19355854\nBug: 12687968\n\nChange-Id: Ie552b6e1dfe30e96cb1d0895bd0dff25f9d7d015\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"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\n"
    },
    {
      "commit": "daaf3265806eb2eadb2e03302bd68022fab5ca28",
      "tree": "aff5d6d53d6d2b65995aa204839f88ee66400989",
      "parents": [
        "68e22f3b982ff9ccbdfb3b65b7cfc16fcae907ba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 24 13:30:28 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 29 14:13:08 2015 -0700"
      },
      "message": "Add AccessibleObject and Field to mirror\n\nMain motivation is to remove all the functionality / field access on\njava side to ArtField. Also comes with some reflection speedups /\nslowdowns.\n\nSummary results:\ngetDeclaredField/getField are slower mostly due to JNI overhead.\nHowever, there is a large speedup in getInt, setInt,\nGetInstanceField, and GetStaticField.\n\nBefore timings (N5 --compiler-filter\u003deverything):\n\n                       benchmark      ns linear runtime\n          Class_getDeclaredField  782.86 \u003d\u003d\u003d\n                  Class_getField  832.77 \u003d\u003d\u003d\n                    Field_getInt  160.17 \u003d\n                    Field_setInt  195.88 \u003d\n                GetInstanceField 3214.38 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  GetStaticField 6809.49 \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\nAfter:\n          Class_getDeclaredField 1068.15 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Class_getField 1180.00 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                    Field_getInt  121.85 \u003d\n                    Field_setInt  139.98 \u003d\n                GetInstanceField 1986.15 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  GetStaticField 2523.63 \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\nBug: 19264997\n\nChange-Id: Ic0d0fc1b56b95cd6d60f8e76f19caeaa23045c77\n"
    },
    {
      "commit": "81c6f8db12b203878a7d72444ead2bc7cf5c47ad",
      "tree": "11caae30b75b700ac648356fd30759a6154be997",
      "parents": [
        "cac51526bbd03947676a8d49700425b19a57e447"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 25 17:19:53 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 27 21:43:21 2015 -0700"
      },
      "message": "ART: PathClassLoader for compiler\n\nUse an actual PathClassLoader when compiling apps, instead of a\nside structure and cutout.\n\nThis CL sets up a minimal object \u0027cluster\u0027 that recreates the Java\nside of a regular ClassLoader such that the Class-Linker will\nrecognize it and use the internal native fast-path.\n\nThis CL removes the now unnecessary compile-time-classpath and\nreplaces it with a single \u0027compiling-the-boot-image\u0027 flag in the\ncompiler callbacks.\n\nNote: This functionality is *only* intended for the compiler, as\nthe objects have not been completely initialized.\n\nBug: 19781184\n\nChange-Id: I7f36af12dd7852d21281110a25c119e8c0669c1d\n"
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "e34fa1df67fbe0173b4ea9abddcc3ae3d0537037",
      "tree": "a5148f079b5671a95f60910c41981ebf91db3a02",
      "parents": [
        "9f06b1946ae3ef1d2fd75bbf7f0a288bc611fe58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 14 14:55:47 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 15 12:23:28 2015 -0800"
      },
      "message": "Print more info in MarkSweep::VerifyRoot\n\nRefactored old root callback to use a new class called RootInfo.\nRootInfo contains all the relevant info related to the root\nassociated with the callback. The MarkSweep::VerifyRoot function\nnow uses this info to print the StackVisitor\u0027s described location\nif the GC root is of the type kRootJavaFrame.\n\nSome other cleanup.\n\nExample output:\nE/art     (12167): Tried to mark 0x123 not contained by any spaces\nE/art     (12167): Attempting see if it\u0027s a bad root\nE/art     (12167): Found invalid root: 0x123 with type RootJavaFrame\nE/art     (12167): Location\u003dVisiting method\n\u0027void java.lang.Runtime.gc()\u0027 at dex PC 0xffffffff (native PC 0x0)\nvreg\u003d0\n\n(cherry picked from commit 12f7423a2bb4bfab76700d84eb6d4338d211983a)\n\nBug: 18588862\nChange-Id: Ic5a2781f704e931265ffb3621c2eab4b2e25f60f\n"
    },
    {
      "commit": "fbef44de596d298dc6430f482dffc933a046dd28",
      "tree": "57345e86b7dda80b82a263069230b7e312db5ef2",
      "parents": [
        "603104b5b5c3759b0bc2733bda2f972686a775a3"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Dec 23 09:48:51 2014 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Jan 13 16:32:34 2015 -0800"
      },
      "message": "Use unique_ptr to track ownership of dex files.\n\nBug: 18809837\nChange-Id: Ie571eae8fc19ee9207390cff5c7e2a38071b126a\n"
    },
    {
      "commit": "baede348efa86600e64fb9db43cec1eef07c86d9",
      "tree": "7ab2c2a69c72b7cd2ce1b7bf1ed9d26b07e4fd7e",
      "parents": [
        "989210eb453898bd94bf3527f18f6146b07aa4bb",
        "6963e44331258b131bcc0599b868ba15902d6d22"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 04 10:21:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 04 10:21:02 2014 +0000"
      },
      "message": "Merge \"JDWP: fix breakpoint for method in the image\""
    },
    {
      "commit": "6963e44331258b131bcc0599b868ba15902d6d22",
      "tree": "24ef16e739e99d3e9d980f2acde8dd301c236c37",
      "parents": [
        "220526b05d4365a1820a694c98527eda2d3dc980"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Nov 26 22:11:27 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 04 10:20:24 2014 +0100"
      },
      "message": "JDWP: fix breakpoint for method in the image\n\nWhen we set a breakpoint in a compiled method, we deoptimize it by\nchanging its entrypoint so it is executed with the interpreter.\nHowever, methods in the image can be called with their direct code\npointer, ignoring the updated entrypoint. In that case, the method\nis not executed with the interpreter and we miss the breakpoint.\n\nThis CL avoids that situation by forcing a full deoptimization so\neverything runs with the interpreter. However, if the image has been\ncompiled in PIC mode, we keep using selective deoptimization because\ndirect code pointer is not used in this mode.\n\nBug: 17965285\nChange-Id: Icaf8cbb7fe9ad01d36f7378c59d50d9ce42ae57f\n"
    },
    {
      "commit": "08f1f50d6c2e8f247b8f5f19711d75a792851c7a",
      "tree": "dca490545d56168f7f9ae4a4616199b1b1c8ba0c",
      "parents": [
        "8443637f71a777a13317fe7635028d758a0adf97"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:04:37 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:12:27 2014 -0800"
      },
      "message": "Remove FieldHelper.\n\nChange-Id: I2d74e2d5b3c35a691c95339de0db9361847fca11\n"
    },
    {
      "commit": "eace45873190a27302b3644c32ec82854b59d299",
      "tree": "73fbf327839263b6847bdc4359ac1dbea2b897e3",
      "parents": [
        "8ac8d5556fae9c728bcebcc9036a1bbf40087c76"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 24 18:29:54 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 25 16:02:04 2014 -0800"
      },
      "message": "Move dexCacheStrings from ArtMethod to Class\n\nAdds one load for const strings which are not direct.\n\nSaves \u003e\u003d 60KB of memory avg per app.\nImage size: -350KB.\n\nBug: 17643507\nChange-Id: I2d1a3253d9de09682be9bc6b420a29513d592cc8\n\n(cherry picked from commit f521f423b66e952f746885dd9f6cf8ef2788955d)\n"
    },
    {
      "commit": "2d7210188805292e463be4bcf7a133b654d7e0ea",
      "tree": "7705a3bf841ae44b2396728fa22ed0b5dcb44dbf",
      "parents": [
        "e0491682d101c69bf88c3c24a965312129cbfa38"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 11:08:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 18 12:27:37 2014 -0800"
      },
      "message": "Change 64 bit ArtMethod fields to be pointer sized\n\nChanged the 64 bit entrypoint and gc map fields in ArtMethod to be\npointer sized. This saves a large amount of memory on 32 bit systems.\nReduces ArtMethod size by 16 bytes on 32 bit.\n\nTotal number of ArtMethod on low memory mako: 169957\nImage size: 49203 methods -\u003e 787248 image size reduction.\nZygote space size: 1070 methods -\u003e 17120 size reduction.\nApp methods: ~120k -\u003e 2 MB savings.\n\nSavings per app on low memory mako: 125K+ per app\n(less active apps -\u003e more image methods per app).\n\nSavings depend on how often the shared methods are on dirty pages vs\nshared.\n\nTODO in another CL, delete gc map field from ArtMethod since we\nshould be able to get it from the Oat method header.\n\nBug: 17643507\n\nChange-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8\n\n(cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)\n"
    },
    {
      "commit": "76649e8d775519fe19f2b14d18ac488c13296054",
      "tree": "a899ec37ce51672c9e14d2954b2a7af7397e63da",
      "parents": [
        "d94a0a1d2868baaab49f4d2835bca086d98cf763"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 10 18:32:59 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 14 11:33:53 2014 +0000"
      },
      "message": "Keep original order of fields in Class.\n\nThe fields of a class are ordered alphabetically in the dex\nfile. Keep the same order in the field arrays so that we can\ndo binary search lookups by name. Those lookups will be\nimplemented in a subsequent change in libcore/.\n\nBug: 18211592\n\n(cherry picked from commit bfa3ed0ad988e1da13626ddbaf6dcae0c58ea79e)\n\nChange-Id: I8f979de62ffe37d1c7d5c721717d2f3501e7c9e6\n"
    },
    {
      "commit": "5f9a95423dda3a2f945c81a04107fedf18e2c2c1",
      "tree": "27f55e828ea076674f9bc510523c675fe6caf3b5",
      "parents": [
        "974bc2747b345667e07692109d63675ec50955a3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 07 18:38:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 10:07:57 2014 -0800"
      },
      "message": "Delete unused imtable field\n\nBug: 17643507\n\nChange-Id: I1fc7ca2d3bdf1810bcc3b46f867b68a4a6d28ed3\n\n(cherry picked from commit f2d556401ec1d82fec31c0b29d712de18d838282\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "647b1a86f518d8db0331b3d52a96392b7a62504b",
      "tree": "7370f795ef3c7fbdd2695d23bc6f8171f40f43f1",
      "parents": [
        "acfbbd4df2fc1c79a7102587bebf398f95b5e5de"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 11:02:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 12:26:02 2014 -0700"
      },
      "message": "Fix 2 new sets of clang compiler warnings.\n\nFix issues that are flagged by -Wfloat-equal and -Wmissing-noreturn.\nIn the case of -Wfloat-equal the current cases in regular code are deliberate,\nso the change is to silence the warning. For gtest code the appropriate fix is\nto switch from EXPECT_EQ to EXPECT_(FLOAT|DOUBLE)_EQ.\nThe -Wmissing-noreturn warning isn\u0027t enabled due to a missing noreturn in\ngtest. This issue has been reported to gtest.\n\nChange-Id: Id84c70c21c542716c9ee0c41492e8ff8788c4ef8\n"
    },
    {
      "commit": "cdc1aaffabbdf417d29b203b2cd2763ed2d623f8",
      "tree": "ff56b9bbaa3ce0305c0ef71c055d3664dddfe93a",
      "parents": [
        "bbb1fc6e95f46470979936450b0d3f1e020c5904"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 13:21:38 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 14:31:29 2014 -0700"
      },
      "message": "Simplify instance reference offsets.\n\nDon\u0027t encode Object\u0027s class. Use trailing rather than leading zeroes to give\noffset position.\n\nChange-Id: I1ae74e7a01f63696429644adf81cdf6ee58832fe\n"
    },
    {
      "commit": "5a4b8a236030460651a3136397d23ca6744e7eb7",
      "tree": "0e43891398e416d3fa77c7de391bf4db4408e8ee",
      "parents": [
        "19f7c95491a053b818f914137fa73df0517b8792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:30:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:50:12 2014 -0700"
      },
      "message": "ART: Rename Handle hierarchy\n\nBring the names in line with normal OO principles: ConstHandle\nbecomes Handle, and Handle becomes MutableHandle.\n\nChange-Id: I0f018eb7ba28bc422e3a23dd73a6cbe6fc2d2044\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "48498591b90a8ff7b24b1ce05c220e3bc42013df",
      "tree": "39ca61335fafc57cbcf91c5087335f367ccbedc4",
      "parents": [
        "b9620f305c79914f5159cf9279a7ccd173af1186"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 10 19:48:05 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:04:35 2014 -0700"
      },
      "message": "ART: Correctly make methods preverified\n\nBug: 16828525\n\n(cherry picked from commit df1532b9ba0cda2d00b78fbdef461f8a6cf8a737)\n\nChange-Id: I66756348b2aa50e41dacca59769b6810a91c73b0\n"
    },
    {
      "commit": "faff0f05fef90577c9744505555675185832aacd",
      "tree": "40b5130526b80fe0a59f815f19dc2b87b0a9f879",
      "parents": [
        "05382d22a2ebbc95142ec2fc46e2d56b23e699ee"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Sep 10 12:03:22 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Sep 10 14:40:37 2014 -0700"
      },
      "message": "Remove reference_static_offsets used for iterating through class static fields.\n\nSince static fields are contiguous in class object and there is no need to\ntraverse super classes, it\u0027s not meaningful to use reference_static_offsets.\nAlso especially with embedded vtable/imt, static field offset can\u0027t be encoded\nwith an unsigned integer anyway.\n\nA corresponding change is made to Class.java to remove the member field.\n\nBug: 16236588\nChange-Id: I1fde3cd9efce884945876f0658c63d992164fd94\n"
    },
    {
      "commit": "1ff3c98775a4577cf053dba9a0c2d5c21c07b298",
      "tree": "2d09c27c69678b53b4c9dc486024f3547efd4bca",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 02:30:58 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 16:08:05 2014 -0700"
      },
      "message": "Avoid use of std::string where we have const char*.\n\nRemoving the ClassHelper caused std::string creation for all calls to\nClass::GetDescriptor and a significant performance regression. Make the\nstd::string an out argument so the caller can maintain it and its life time\nwhile allowing GetDescriptor to return the common const char* case.\n\nDon\u0027t generate GC maps when compilation is disabled.\n\nRemove other uses of std::string that are occuring on critical paths.\nUse the cheaper SkipClass in CompileMethod in CompilerDriver.\nSpecialize the utf8 as utf16 comparison code for the common shorter byte\nencoding.\nForce a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing\ncode), add some LIKELYs.\n\nx86-64 host 1-thread interpret-only of 57 apks:\nBefore: 29.539s\nAfter: 23.467s\n\nRegular compile:\nBefore: 1m35.347s\nAfter: 1m20.056s\n\nBug: 16853450\nChange-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad\n"
    },
    {
      "commit": "58a5af8568d224ca7eccf2483396ff9862f8d1ee",
      "tree": "4dfac17316970040e079244523b9b1e2ea163f05",
      "parents": [
        "1b192268f167f603fc372f02f9067f3ce5d82daf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 31 16:23:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 06 15:57:05 2014 -0700"
      },
      "message": "ART: Add guards to the dex cache and its shortcuts\n\nDo not return fields, methods or classes if the (declaring) class is\nerroneous.\n\nBug: 16692788\nChange-Id: If43c2414ad0eb22db5eba7cf66396c7f16c26597\n"
    },
    {
      "commit": "2cdbad7c62f126581ec5177104de961c4d71adaa",
      "tree": "6283b87bc9b65249decac9b0e38fe396782b8d7e",
      "parents": [
        "c62944adcd427dca55489d234428da47c43a0aab"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jul 16 10:44:41 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 15:03:50 2014 -0700"
      },
      "message": "Set vtable in class object to null after linking.\n\nThis is follow-up work of embedding imt and vtable for\nfaster interface/virtual call dispatching.\nOnce vtable becomes embedded, the original vtable is nulled.\n\nChange-Id: I307696657d1e283654169dbecb8f7815c42bbabc\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "e63db27db913f1a88e2095a1ee8239b2bb9124e8",
      "tree": "893dee6783bca6717259321a6e4ba029c9c123e2",
      "parents": [
        "07b8441303ea82fca3cb85d71ecf8752d73cedd7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 15:36:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 17:07:49 2014 -0700"
      },
      "message": "Break apart header files.\n\nCreate libart-gtest for common runtime and compiler gtest routines.\nRename CompilerCallbacksImpl that is quick compiler specific.\nRename trace clock source constants to not use the overloaded profiler term.\n\nChange-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\n"
    },
    {
      "commit": "9e82bd3f0ce9e5f5777bea2f752ff3e251d32f9f",
      "tree": "b2d65f4668793fab5652dfe41dcf13c913fee3a8",
      "parents": [
        "d4415e8bd04c4a9367744ff0149597b4f37a0e0a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 11 10:09:13 2014 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 11 10:09:13 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add intrinsic for Reference.get()\"\"\"\n\nThis reverts commit d4415e8bd04c4a9367744ff0149597b4f37a0e0a.\n\nChange-Id: I34553ccbdcfea35c7742d21be2a74dc7085ab2a0\n"
    },
    {
      "commit": "d4415e8bd04c4a9367744ff0149597b4f37a0e0a",
      "tree": "97c42c08fd04034cf6cecadb39644bf9531be0f1",
      "parents": [
        "a9b870b73a155ce70c867d5b3f9758fab0b45f07"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 06:44:39 2014 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 06:44:39 2014 +0000"
      },
      "message": "Revert \"Revert \"Add intrinsic for Reference.get()\"\"\n\nThis reverts commit a9b870b73a155ce70c867d5b3f9758fab0b45f07.\n\nChange-Id: Ic2a9b47f2b911bef4b764d10bc33cf000e4b4211\n"
    },
    {
      "commit": "a9b870b73a155ce70c867d5b3f9758fab0b45f07",
      "tree": "b2d65f4668793fab5652dfe41dcf13c913fee3a8",
      "parents": [
        "460503b13bc894828a2d2d47d09e5534b3e91aa1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 04:18:58 2014 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 04:18:58 2014 +0000"
      },
      "message": "Revert \"Add intrinsic for Reference.get()\"\n\nThis reverts commit 460503b13bc894828a2d2d47d09e5534b3e91aa1.\n\nChange-Id: Ie63f43049307e02e3b90f4e034abc9ea54ca4e24\n"
    },
    {
      "commit": "460503b13bc894828a2d2d47d09e5534b3e91aa1",
      "tree": "97c42c08fd04034cf6cecadb39644bf9531be0f1",
      "parents": [
        "adce33da293b0eeaaf52673338770f22be71ca5d"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jun 18 11:26:11 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Thu Jul 10 10:41:34 2014 -0700"
      },
      "message": "Add intrinsic for Reference.get()\n\nAdded an intrinsic function for Reference.get(). Return immediately\nwithout going through JNI if the slow path is not currently in use.\nOtherwise, branch off to the the existing JNI function.\n\nApproximately 47x speedup for cases where slow path is not enabled.\n\nChange-Id: I13ad65a356fe4e104d8d83980694dc2740d7d039\n"
    },
    {
      "commit": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\n"
    },
    {
      "commit": "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb",
      "tree": "444936c3e3718b692ba7f1981b863190f26b4ed7",
      "parents": [
        "25c4f6a25b3de9b9d7ca5162f1629753a0b7f003"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 05 17:42:53 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 13:12:17 2014 -0700"
      },
      "message": "Change FieldHelper to use a handle.\n\nFixed compaction bugs related to FieldHelper::GetType in:\nartSet32InstanceFromCode\nSetFieldValueImpl\nCheckReceiver\nField_set\ninterpreter::DoFieldPut\nMethodVerifier::VerifyISGet\nMethodVerifier::VerifyISPut\nMethodVerifier::VerifyIGetQuick\n\nBug: 13077697\n\nChange-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72\n"
    },
    {
      "commit": "b74cd29802f364b4cec88f4913fa38ade26b8fab",
      "tree": "73ccdce1c5a6e57d5763cae1f889e53dca2b5e24",
      "parents": [
        "11138c73e0c5f8a90d1eeed3c48a2b63b310671c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 29 14:31:33 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 13:58:22 2014 -0700"
      },
      "message": "Compaction cleanup for FindArrayClass.\n\nWe now pass double pointer in to signify that it can cause thread\nsuspension, this double pointer gets wrapped by a handle if don\u0027t\nfind the array class in the cache.\n\nChange-Id: I43436b6c35597c7252b65d1180baddb5ac4caabb\n"
    },
    {
      "commit": "0cd81352a7c06e381951cea1b104fd73516f4341",
      "tree": "fcc8ff9cdeb608d0913097aa1fb64d1879f11ffa",
      "parents": [
        "dfd301f19800a4f168283cf2d0b15b2c09071955"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 16:48:55 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 12:55:45 2014 -0700"
      },
      "message": "Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\n\nFixed the generic trampoline to not use ToJObject when unnecessary.\n\nBug: 15167269\n\nThis reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459.\n\nChange-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271\n"
    },
    {
      "commit": "3bdb873122964da7937eb070cbcf2ef638a8e459",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "message": "Revert \"Fix an outstanding compaction bug in interpreter.\"\n\nThis reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.\n\nChange-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1\n"
    },
    {
      "commit": "e09ae0920be57760fb390b6944bce420fa0b5582",
      "tree": "acc40266093df4289ffb6728c979cafd6b5114d2",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 15 12:39:19 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 10:47:44 2014 -0700"
      },
      "message": "Fix an outstanding compaction bug in interpreter.\n\nFixed a bug in DoFieldPut where the FieldHelper GetType could cause\nthread suspension which would result in a stale obj.\n\nAdded more handles in the class linker to facilitate moving fiels\nand methods in the future.\n\nRemoved un-necessarly passing handle references since these are value\ntypes and don\u0027t need to be passed by reference.\n\nAdded a special NullHandle type which allows null handles without a\nhandle scope.\n\nChange-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b\n"
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "507dfdd147c97bfbadebfd63584d094b6a4e7b47",
      "tree": "cce43931b6dcd088cb2932c2491f86116353a27f",
      "parents": [
        "922ddb30982d2597eab634d8b8598bec0eb7d3b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:42:40 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:50:51 2014 -0700"
      },
      "message": "Compatibility layer to transition from UniquePtr to std::unique_ptr.\n\nUse ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr,\nfor the host switch to std::unique_ptr. For now the type remains called\nUniquePtr.\nMake dalvik compile with clang on the host, move its build to C++11.\n\nChange-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "7624d25dad2d1ba25969ae704fccf68649103ae5",
      "tree": "de72194b76a4e23e0b15ec4085447ae7e4425815",
      "parents": [
        "e1910f1d802dff79bba5ef61e1c4fd0b95f6e5b0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 02 14:40:15 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 13 11:43:22 2014 +0100"
      },
      "message": "Move quick frame info to OatQuickMethodHeader.\n\nRename OatMethodHeader to OatQuickMethodHeader, move frame\ninfo from OatMethodOffsets to OatQuickMethodHeader. Retrieve\nthe info from other places for non-quick methods (portable\ncompiled bytecode or jni stub, generic jni, runtime,\nabstract and proxy).\n\nThis change has a libcore/ companion CL\n  \"Remove ArtMethod\u0027s quick fields for frame size and spills.\"\n  https://android-review.googlesource.com/94164\n\nBug: 11767815\nChange-Id: I0e31a7875d76732e1ec479c86b9b5ca01203507f\n"
    },
    {
      "commit": "8a630577ed2d9e9571c3434c505e5de223b23c07",
      "tree": "106367100c639011f0abb72b3b0e227c0764e8e0",
      "parents": [
        "96c6ab93336b972a38bd2448bcccf19188b8389b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 09 18:45:35 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 25 12:24:46 2014 +0100"
      },
      "message": "Move mapping table and vmap table offsets to OatMethodHeader.\n\nThis change has a libcore/ companion CL\n  \"Remove ArtMethod\u0027s quick fields mapping table and vmap table.\"\n  https://android-review.googlesource.com/91254\n\nBug: 11767815\nChange-Id: I46ce2067e1ecd915da3890606498e31ffc332813\n"
    },
    {
      "commit": "624468cd401cc1ac0dd70c746301e0788a597759",
      "tree": "b21c389d43e25c3d95208c9d2f3f1bc81355a4e5",
      "parents": [
        "cfd5acf281b0c509f86b13d73c6a8dfa3ea9922c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Mar 31 15:14:47 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Mar 31 17:40:21 2014 -0700"
      },
      "message": "Make the support code for read barriers a bit more general.\n\nAdd an option for Baker in addition to Brooks.\n\nBug: 12687968\nChange-Id: I8a31db817ff6686c72951b6534f588228e270b11\n"
    },
    {
      "commit": "8fa2dad7fe7909c8335101d6c8904ae997cdf29f",
      "tree": "b4809584363705a640b8a4d5c87f9fa2af59c41e",
      "parents": [
        "282cbe489046face5475991aaa1ecb5f1deba107"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 13 12:22:56 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 14 10:15:18 2014 -0700"
      },
      "message": "Refactor reference code into mirror namespace.\n\nAdded two new files: mirror/reference.h and mirror/reference-inl.h.\n\nChange-Id: Ibe3ff6379aef7096ff130594535b7f7c0b7dabce\n"
    },
    {
      "commit": "0f6784737882199197796b67b99e5f1ded383bee",
      "tree": "139888bdfad743c50e800ad46b9aec97ae3415d3",
      "parents": [
        "73a471336a9515fa7fdc5859e3c481ec451237a5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 16:18:37 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 18:02:07 2014 -0700"
      },
      "message": "Unify 64bit int constant definitions.\n\nLL and ULL prefixes are word size dependent, use the INT64_C and UINT64_C\nmacros instead.\n\nChange-Id: I5b70027651898814fc0b3e9e22a18a1047e76cb9\n"
    },
    {
      "commit": "893263b7d5bc2ca43a91ecb8071867f5134fc60a",
      "tree": "a99238843a9caad00122c8f7d13e031f5d81bc38",
      "parents": [
        "2fece5941f12395a94e742313e7059a9e419994d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 11:07:42 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 14:21:58 2014 -0800"
      },
      "message": "Avoid marking old class linker and intern table roots during pause.\n\nThe new root visiting logic has a concept of a root log which holds\nnew roots which were added since the start of the GC. This is an\noptimization since it lets us only mark these newly added roots\nduring the pause (or pre-cleaning) since the other roots intern table\nand class linker roots were marked concurrently at the start of the\nGC.\n\nBefore (EvaluateAndApplyChanges):\nMarkConcurrentRoots:\tSum: 605.193ms\nAfter:\nMarkConcurrentRoots:\tSum: 271.858ms\n\nThis should also reduce pathological GC pauses which used to be able\nto happen when the intern table or class linker became \"dirty\"\nduring the concurrent GC.\n\nChange-Id: I433fab021f2c339d50c35aaae7161a50a0901dec\n"
    },
    {
      "commit": "a1ce1fef2d49d1d537776a5308ace7102a815fe5",
      "tree": "a1afe850d9ebd21f4b751eb68e1ec3dc60dab001",
      "parents": [
        "930f7b843ddc6e6530439d3fdb0e2133a6292f1e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 23:23:58 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 26 13:17:44 2014 -0800"
      },
      "message": "Split up CommonTest into CommonRuntimeTest and CommonCompilerTest\n\nChange-Id: I8dcf6b29a5aecd445f1a3ddb06386cf81dbc9c70\n"
    },
    {
      "commit": "9d04a20bde1b1855cefc64aebc1a44e253b1a13b",
      "tree": "85b8315677c3d6545ac6c8b27db7cb00b82e68b7",
      "parents": [
        "0f8aa6b38f204ccacd3ac12bb844e628cec2215b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 31 13:35:49 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 25 13:56:48 2014 -0800"
      },
      "message": "(Experimental) Add Brooks pointers.\n\nThis feature is disabled by default.\n\nVerified that the Brooks pointers are installed correctly by using the\nCMS/SS collectors.\n\nChange-Id: Ia9be9814ab6e29169ac85edc4792ce8c81d552a9\n"
    },
    {
      "commit": "9837939678bb5dcba178e5fb00ed59b5d14c8d9b",
      "tree": "00f0e6b54d7c4cac78a02752e268724157e50b6e",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 16:53:16 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 18:47:23 2014 -0800"
      },
      "message": "Avoid std::string allocations for finding an array class.\n\nIntroduce ClassLinker::FindArrayClass which performs an array class lookup\ngiven the element/component class. This has a 16 element cache of recently\nlooked up arrays.\nPass the current thread to ClassLinker Find .. Class routines to avoid calls\nto Thread::Current().\nAvoid some uses of FindClass in the debugger where WellKnownClasses is a\nfaster and more compacting GC friendly alternative.\n\nChange-Id: I60e231820b349543a7edb3ceb9cf1ce92db3c843\n"
    },
    {
      "commit": "815873ecc312b1d231acce71e1a16f42cdaf09f2",
      "tree": "18ba2fa951775e60b240271bfe975e6e2cfc654c",
      "parents": [
        "2befd09cf4fe89a18a655f3e1dd310831bfa769f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 13 18:02:13 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 18 10:45:12 2014 -0800"
      },
      "message": "Change root visitor to use Object**.\n\nSimplifies code and improves the performance of root visiting since\nwe usually don\u0027t need to check to see if the object moved.\n\nChange-Id: Iba998f5a15ae1fa1b53ca5226dd2168a411196cf\n"
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "5ddb4104ac605d66693b55b79f26f8b8a5505e63",
      "tree": "9231f1e54e9a1aaca640c590d5b4f318720e263b",
      "parents": [
        "5a2ced515a456f15dcf194843c024e835eda7dbe"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 07 08:58:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 08 09:15:46 2014 -0800"
      },
      "message": "Remove intialized static storage from dex cache.\n\nThe initialized static storage array is used by compiled code to determine if\nfor a sget/sput class initialization is necessary. The compiled code typically\ndoesn\u0027t require this test as the class is pre-initialized or the class being\naccessed is the same as the current method.\n\nChange-Id: Icbc45e692b3d0ac61e559e69edb6c9b29439e571\n"
    },
    {
      "commit": "c528dba35b5faece51ca658fc008b688f8b690ad",
      "tree": "d95c113a639d07f7e3b88e8a6caa9b5f6e044801",
      "parents": [
        "76f552307ee980221626d1dff0ada56c989d24ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 12:00:11 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 16:00:58 2013 -0800"
      },
      "message": "Enable moving classes.\n\nSlight reduction in Zygote size, memory savings are in the noise.\nBefore: Zygote size: 8739224\nAfter: Zygote size: 8733568\n\nFixed a bug where we didn\u0027t set the concurrent start bytes after\nswitching the allocator from bump pointer to ROSAlloc in the\nzygote. This caused excessive memory usage.\n\nAdded the method verifiers as roots to fix an issue caused by\nRegTypes holding a Class*.\n\nAdded logic to clear card table in the SemiSpace collector, this\nreduces DalvikOther from ~2400k -\u003e ~1760k when using the SemiSpace\ncollector.\n\nAdded a missing lock to the timing loggers which caused a rare\none time crash in std::set.\n\nBug: 11771255\nBug: 8499494\nBug: 10802951\n\nChange-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "88474b416eb257078e590bf9bc7957cee604a186",
      "tree": "7c59aa370bec9b0f2d37cb7a96d3b2effb3d92ce",
      "parents": [
        "9780099e445884d8bc9444c8c1261b02d80a26c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 23 16:24:40 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 29 12:01:28 2013 -0700"
      },
      "message": "Implement Interface Method Tables (IMT).\n\nChange-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39\n"
    },
    {
      "commit": "241b5de2d3cf06868ac31f1153aa0b32ddb07b20",
      "tree": "6161a90ea504c3907d171f16ca7d94817bbf8b9a",
      "parents": [
        "252a00273bc945ebe4a1d77d82d085fdff2ae769"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 09 17:58:57 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 10 17:26:04 2013 -0700"
      },
      "message": "Clinits may not have the kAccConstructor flag.\n\nBug: 11157540\nSet the clinit access flag when we load the method and warn about badly\nformed access flags.\n\nChange-Id: I515c692095051f84f98510722ab764591185918e\n"
    },
    {
      "commit": "d91d6d6a80748f277fd938a412211e5af28913b1",
      "tree": "5c45f4ae53aab3f530284a97dc328b4e38ce7c94",
      "parents": [
        "9c11b56296b8cffc94b0b854ce6cff7e014b8d57"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 25 20:26:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 26 21:08:25 2013 -0700"
      },
      "message": "Introduce Signature type to avoid string comparisons.\n\nMethod resolution currently creates strings to then compare with strings formed\nfrom methods in other dex files. The temporary strings are purely created for\nthe sake of comparisons. This change creates a new Signature type that\nrepresents a method signature but not as a string. This type supports\ncomparisons and so can be used when searching for methods in resolution.\n\nWith this change malloc is no longer the hottest method during dex2oat (now its\nmemset) and allocations during verification have been reduced. The verifier is\ncommonly what is populating the dex cache for methods and fields not declared\nin the dex file itself.\n\nChange-Id: I5ef0542823fbcae868aaa4a2457e8da7df0e9dae\n"
    },
    {
      "commit": "8b2c0b9abc3f520495f4387ea040132ba85cae69",
      "tree": "13ea7e5c4e3d1804ec8d420d36f7ea5ab18f6ac0",
      "parents": [
        "5712d5d04640925970db9c98938ffaf806b3962c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 15:17:12 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nDepends on:\nhttps://googleplex-android-review.git.corp.google.com/362363\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "b307052d619ec757478951fc026e6230c92e3b36",
      "tree": "7fee60cf62ec02fab20f70f111b5925be8a772fa",
      "parents": [
        "cb135ad769a5368f6ceb8caf25105a95580cbd6a",
        "613eae4a6f75282c0737a84850418afcab54d4e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 14:18:21 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 14:18:21 2013 -0700"
      },
      "message": "resolved conflicts for merge of 613eae4a to dalvik-dev\n\nChange-Id: I61734cbf585decf9a50ba23f008b341d025339ff\n"
    },
    {
      "commit": "c4621985bdfc2b27494087e5dee65a6d0cc5a632",
      "tree": "d8165f5b8d337e73942ee29d66fb40585dc7caf1",
      "parents": [
        "5666afd6854b5634ae741dc8a3a633fc47d52168"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 16 19:43:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 10:03:00 2013 -0700"
      },
      "message": "Fix race in root marking.\n\nThere was a race which caused the class linker / intern table to not\nbecome dirty after adding a root. We now guard the is dirty flag by\nthe corresponding locks to prevent this from occuring. This was\ncausing roots to be occasionally missed.\n\nAlso fixes the bug where we occasionally scan more cards than\nneeded.\n\nBug: 10626133\n\nChange-Id: I0f6e72d92035ff463954d66988ef610ea0df61be\n"
    },
    {
      "commit": "423d2a3dcbb260b020efb5da59f784c9f02accbf",
      "tree": "79ed739e6072f8308c1cd880f9420a1c63539c95",
      "parents": [
        "b048dd2b662c19644361f4396a1e8d6213445ee8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 12 17:33:56 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 10:30:24 2013 -0700"
      },
      "message": "Add support for changing roots through the root visitor callback.\n\nNeeded for copying collectors.\n\nChange-Id: Icc4a342a57e0cfb79587edb02ef8c85e08808877\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "7655f29fabc0a12765de828914a18314382e5a35",
      "tree": "219f2df20cf7f053a73a345ae20e131a73759c79",
      "parents": [
        "1a8080d4c2e1772cfcc5e9d6587bc63bba3945d9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 11:07:13 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 30 16:00:24 2013 -0700"
      },
      "message": "Portable refactorings.\n\nSeparate quick from portable entrypoints.\nMove architectural dependencies into arch.\n\nChange-Id: I9adbc0a9782e2959fdc3308215f01e3107632b7c\n"
    },
    {
      "commit": "3e3d591f781b771de89f3b989830da2b6ac6fac8",
      "tree": "9fc07d9785dd6e008f902ce1a5901df861d59b70",
      "parents": [
        "df62950e7a32031b82360c407d46a37b94188fbb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:19:45 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 11:57:02 2013 -0700"
      },
      "message": "Fix cpplint build/namespaces issues\n\nChange-Id: I19c68703270c1482d6c6aad8cdf97d3d2924360a\n"
    },
    {
      "commit": "df62950e7a32031b82360c407d46a37b94188fbb",
      "tree": "038bf95a2ce296ae3e0c30a131ac22c0986f0f52",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 22:39:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:13:18 2013 -0700"
      },
      "message": "Fix cpplint whitespace/parens issues\n\nChange-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "00626c2e50ba085b95f860e941d0f41eb84d4ac9",
      "tree": "a3643f7de76053f678565a78e2727cafb81b1564",
      "parents": [
        "d457d8a5542aacfb497790a0c648c7e34f1e4f69"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 14 15:04:14 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 14 16:42:20 2013 -0700"
      },
      "message": "Fix Class.getModifiers for array classes.\n\nA separate libcore change is needed to fix Class.getModifiers for\narrays of inner classes.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d56267\nChange-Id: I3d95b266bb14a72b766921fe09e53fdef2f6d01b\n"
    },
    {
      "commit": "aa4a793d7175ceeb1efa215c2af5e52e42b22f0a",
      "tree": "9c3db54a108d4327471c6d4890d28cdfe1f030ff",
      "parents": [
        "167436311a08a65dea28dda079a137893821c9c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 11:28:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 13:14:19 2013 -0700"
      },
      "message": "Rename abstract method code_ to entry_point_from_compiled_code_.\n\nChange-Id: I9b02d2df95bbeafa6e6387b461f574c57337a61e\n"
    },
    {
      "commit": "167436311a08a65dea28dda079a137893821c9c7",
      "tree": "4754f47306a0ffa0ad97635015d9596b427dd425",
      "parents": [
        "c44f68fb6a6d55c0df28dd05b93d8906ec20bd08"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 08 10:59:04 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 10 17:16:00 2013 -0700"
      },
      "message": "Improve interpreter to interpreter invokes.\n\nThe interpreter constructs a shadow frame instead of arg array to make\ninterpreter to interpreter transitions faster. This adds a pointer to\nan entry for the interpreter to each method.\n\nChange-Id: If48911d3aa3470847b8548a9e92090b829f4f254\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\n"
    },
    {
      "commit": "74180cad94848107cf297d37e72437c5a6eecf1b",
      "tree": "9dfa6f7183bc7d6085a2753483b0f7a93c3ce486",
      "parents": [
        "857fe960a02834c0d6b8792dcc0af8143995cb1f"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 27 15:29:11 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 27 15:29:11 2013 -0700"
      },
      "message": "Remove code related to compiled invoke stubs.\n\nNote that the oat file version is now bumped to 004. A clean-oat will be\nnecessary after syncing this change.\n\nChange-Id: If8875335b7fcc39b6b40c6f95de07da50da7b6b8\n"
    },
    {
      "commit": "265091e581c9f643b37e7966890911f09e223269",
      "tree": "ae493ce6c3537aebc3a85f59a73500fa819a7baf",
      "parents": [
        "4c1c283a7410784e9cab309f868248690b788a9c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 30 14:08:26 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 06 14:08:46 2013 -0800"
      },
      "message": "Remove ExtractCodeAndPrelink and switch Portable to MCLinker\n\nChange-Id: Ia2459c7da6b79e0a1c0f1148c6e28ad9cbbe27a2\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    },
    {
      "commit": "2fa6b2e2fc3d2a2fc27808ce518dc76b80ce369a",
      "tree": "daba5f5e64409452e31ae42e3b1b6b6491ccb007",
      "parents": [
        "6ed960d260d0ec3cbbef455c646ccd47f4e78119"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 17 00:10:17 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 16:12:59 2012 -0700"
      },
      "message": "Interpreter.\n\nThe opcodes filled-new-array and packed-switch aren\u0027t implemented but\nare trivial given that they are variants of implemented opcodes.\nRefactor Field::Get routines to take the declaring class in the case of\nstatic field accesses. This avoids a check on every use of a field.\nRefactor arg array builder to be shared by JNI invokes and invocations\ninto the interpreter.\nFix benign bug in const decoding in the verifier.\n\nChange-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8\n"
    },
    {
      "commit": "9bc81918a2c663339f7739d9cf968f354506e3a7",
      "tree": "372dc5beb2969c5467d1553cee583130085e442f",
      "parents": [
        "3cc3981018b0eb2c4f1b05ed620d8aad36098e7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 21:43:36 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 22:56:17 2012 -0700"
      },
      "message": "Flatten interface entries into the iftable.\n\nAvoid an indirection when scanning the iftable by inlining the interface\nentry into the iftable.\nCopy the iftable for marker interfaces from parents to their children\n(for example for exceptions).\nDon\u0027t allocate method arrays for 0 element interface method tables.\n\nChange-Id: I8402960d4ddbe4b1ffd335ed4ce4b4825210fd0d\n"
    },
    {
      "commit": "50b35e2fd1a68cd1240e4a9d9f363e11764957d1",
      "tree": "4f3c58b7b293380f19e4f33357cb352e3330772e",
      "parents": [
        "8e9a1497f0d7da4d55f6e7ed8a7d96ba6db7222d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 10:09:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 11:07:39 2012 -0700"
      },
      "message": "Explicitly pass Thread::Current to MutexLock and Alloc.\n\nChange-Id: I8b75bc0617915465f102815b32306aa7760dcae4\n"
    },
    {
      "commit": "1f5393447b9f45be7918042d9ee7b521376de866",
      "tree": "1793cb0ae00b38a63f8cfd3a25b6cb0ee4edca16",
      "parents": [
        "870ea4772199f8d4cbd9a269f9093620ee50a59c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 21:09:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 09:27:04 2012 -0700"
      },
      "message": "Make PopSirt inlinable, pass self to SirtRef.\n\nChange-Id: Ieb91526b1cb1f8644ceb3c5b99649f658f43bbc1\n"
    },
    {
      "commit": "66f19258f9728d4ffe026074d8fd429d639802fa",
      "tree": "fd94009774c6cbbb1528ea096e606133bd35f104",
      "parents": [
        "a5e1e3d153990845d80cb8d013157210f11a473c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 18 08:57:04 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 21 17:32:56 2012 -0700"
      },
      "message": "Change dex cache to be java object instead of array, add pointer to dex file in dex cache.\n\nGeneric clean up to facilitate having GDB macros for Pretty* helper functions.\n\nImproved cleanliness of DexCache since having it as an object array was not the best solution.\n\nFixed a bug in InOrderWalk caused by ResolveType sometimes allocating classes.\n\nRename C++ Method to AbstractMethod and add two new classes Constructor, Method which both inherit from AbstractMethod.\n\nRename done to have the C++ code be closer to the java code.\n\nChange-Id: I4995b4c5e47a3822192b08afa24a639d3b1f4da9\n"
    }
  ],
  "next": "0c7abda482f53db3d153c073d1c7a145f84e0626"
}
