)]}'
{
  "log": [
    {
      "commit": "97c381e3ce34cd327c2ec35fa850bd0eaa9b697f",
      "tree": "4a21b2db89c578cdb2908547547e0546748eec7f",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:09:58 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:51:42 2017 -0800"
      },
      "message": "Separate art::Exec from utils\n\nThe rest of utils.cc does not depend on art::Runtime. This separates\nthe part dependent on that class, so that including utils.cc in the\nbuild does not require the entire Runtime. Another preparatory cleanup\nto getting tools to build on Windows.\n\nBug: 22322814\nTest: test-art\nChange-Id: I194ff363fc2ab87e5311ecea6973a2d0fad2621d\n"
    },
    {
      "commit": "888a59ed953e631e9d72e3a19eabfe114c229123",
      "tree": "f699384fc0ea23d239b5dd4caceb895c045914b6",
      "parents": [
        "f34077c96af3389e8eae65252d4c5d51cf630039"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 25 11:41:41 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 25 11:58:35 2017 -0800"
      },
      "message": "Make jvmti tests runnable on the RI again.\n\nTest: ./test/run-test --host --jvm 932\nChange-Id: Ia35c9e2b4f93884956993dc9c5e4d041344c9680\n"
    },
    {
      "commit": "36eb313c805713c1367e5b9d73897ade1c24174b",
      "tree": "a2485977f12299a493217ead13a0cb5510c4251d",
      "parents": [
        "d713d29507fb98bea3eee9277f05422a9b641ca1"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jan 13 16:32:38 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 24 11:29:34 2017 -0800"
      },
      "message": "Add dexoptanalyzer tool\n\ndexoptanalyzer is a command line tool which analyzes whether or not a\ngiven dex file needs to be dexopted. It is a wrapper around\nOatFileAssistant::GetDexOptNeeded and its results have a mapping to\nOatFileAssistant::DexOptNeeded.\n\nThis is needed for the management of secondary dex file. We need a way\nto retrieve the DexOptNeeded status from installd outside system server.\nWe can\u0027t simply use the system server path (as we do for the main apks)\nbecause system server can\u0027t access content writable by the apps.\n\nBug: 32871170\nTest: m test-art-(host|target)\nChange-Id: Ife1534560ca2658079d4a38a30bc8d94f35fe9c8\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "9186ced255f2e7402646b5b286deebb540640734",
      "tree": "833c25fd3bbb47749265947705b4fc0f0c1ba796",
      "parents": [
        "aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 14:28:21 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 11:43:48 2016 -0800"
      },
      "message": "ART: Clean up utils.h\n\nRemove functionality provided by libbase. Move some single-use\nfunctions to their respective users.\n\nTest: m test-art-host\nChange-Id: I75594035fa975200d638cc29bb9f31bc6e6cb29f\n"
    },
    {
      "commit": "9e417cdf3151194b911b267f4810aada5a0220d0",
      "tree": "bb66a7af9069a011ccc90bf402b280db82d3a663",
      "parents": [
        "3df95ca8ec6660a4062c3f8c8238d46203f8815c",
        "460cca8e33a6e235fbfafe50bc2ef4042b4b43b7"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 24 18:52:58 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 24 18:52:58 2016 +0000"
      },
      "message": "Merge \"Move dex CFG dumping out of utils.cc\"\nam: 460cca8e33\n\nChange-Id: Ic76132136e4cc4140e6420b463f767f91a19f19f\n"
    },
    {
      "commit": "caacd11864383aac65e61be837fb1bb5f91e3878",
      "tree": "0fc2836395d93349aa2e745f31a3cb248e1fdacf",
      "parents": [
        "3667e26de4856cccf24bcbab54ad3349a05267c0"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 20 16:27:02 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 24 08:55:22 2016 -0700"
      },
      "message": "Move dex CFG dumping out of utils.cc\n\nMove CFG dumping to dexdump, the only client.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I0f39f1d5dfc446419d26d709b78d04e45616f42c\n"
    },
    {
      "commit": "4adb5c4069447eb8a34573384e6305876be86922",
      "tree": "8bd7cae647afb6fedf26fc6befca31ba781eb12b",
      "parents": [
        "5ab56b01406e1cf49f227aa887d6df9764607d02",
        "c89f9776a107ca20d0146c16fa881db91c4f8266"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 19 16:25:58 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 19 16:25:58 2016 +0000"
      },
      "message": "Merge \"Remove mirror:: and ArtMethod deps in utils.{h,cc}\"\nam: c89f9776a1\n\nChange-Id: Ic364fcda0cee59f92e9a45cbfc8affb8e7d0cf71\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "b00bad7bca406175d939f38af10b75af6eaf589e",
      "tree": "f21d359af59443b13ecc2803c3de2712e74a2565",
      "parents": [
        "ea5d2566534e5ff006dcaae9a73f8e814c47f5bc",
        "1becf77e9216f000b05957a6eba63961156b7127"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 02:42:33 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 30 02:42:33 2016 +0000"
      },
      "message": "Merge \"Clean up ScopedThreadStateChange to use ObjPtr\" am: 74a69eda05 am: 039ef51ee7\nam: 1becf77e92\n\nChange-Id: I1e19a8ae4eb3eec0a2c25e072e577f66af0c0010\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "0b41b77fc9927b1c6e59db379ce883203632e6d1",
      "tree": "4960c05337121bdc09909de1d7d87bf5cbfabecb",
      "parents": [
        "71556cb74be65c697de55fcdfea8f3bc1eaaa576",
        "1764b1dae7c0e6050ea21c254b3db908e4fcf9fb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 28 22:31:37 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 28 22:31:37 2016 +0000"
      },
      "message": "Merge \"Use ObjPtr for reflection.cc/h/inl\" am: 4d46970b8a am: db7e1c3ba7\nam: 1764b1dae7\n\nChange-Id: I196dd74a0f029f6f50442affd11e9beae55b659e\n"
    },
    {
      "commit": "a59d9b228b1eda3bf71a81b6201ec64e26086c23",
      "tree": "91adf9f0e282eec50ccb28aa2dbc432a5e28d13f",
      "parents": [
        "05ce52b406dcf6b9a24287d14f0e611211e0db3d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 26 18:13:17 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 16:10:35 2016 -0700"
      },
      "message": "Use ObjPtr for reflection.cc/h/inl\n\nChanged Pretty helpers to use this to reduce usage of Decode. The\neventual goal is not have almost any calls to ObjPtr::Decode.\n\nMoved ObjPtr out of mirror namespace for convenience. Added more\nPoisonObjectPointers calls in class linker, thread suspension.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I44d08db5143d95ed1b65e2f00f9749ef5cf379f7\n"
    },
    {
      "commit": "299ad51d48f9fa4f39407a496641ca6c4bd6219f",
      "tree": "9da5473b73071a6b0283e79cae78c2f2b3e9d2c2",
      "parents": [
        "1320dc0233f10c5e466ad08e9f2749b4771fbab8",
        "37a9c75f4dbf52c250979a1e9e87a085b7956c95"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 22 22:12:43 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 22 22:12:43 2016 +0000"
      },
      "message": "Merge \"Get a basic modification of dex file working\" am: 4b55b4b39a am: 5ddce99415\nam: 37a9c75f4d\n\nChange-Id: I1d17b4b1a59706faa524fa46dae9e0b7272b0f71\n"
    },
    {
      "commit": "9c20a14103f87a8a7ad53f7d3e863887ea4e800a",
      "tree": "1fd4b123bae008f670f806024c88d3dc404da24b",
      "parents": [
        "a51a135f114f6f0dbf7c4afd336f68b4a0d1bb7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 23 15:05:12 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 21 15:47:06 2016 -0700"
      },
      "message": "Get a basic modification of dex file working\n\nThis allows the modification of a single classes methods through\ntransformation. One must ensure that the provided dex file only\ncontains one function and does not add or remove any methods or fields\nand does not change the inheritance hierarchy in any way. The provided\ndex file must verify and there must be no frames of the old code\npresent on any thread. These constraints are not checked or verified.\nBreaking them might cause undefined behavior in all parts of the\nruntime. Code that has been inlined in any way might not be replaced.\nThis feature is extremely experimental.\n\nBug: 31455788\nTest: ./test/run-test --host 902-hello-transformation\n\nChange-Id: I35133d24f6cdafdd2af9dc9863e15ba8493fc50e\n"
    },
    {
      "commit": "b31f38035efa985cdc8e8158736782d817ade258",
      "tree": "23af7e3b476d6dfd096d2efe5e564eabe65b1db9",
      "parents": [
        "5e8fcb784b064087d58c365583c4982e1e309774",
        "4759c293574fdabd912ecd3dba8abbcf98b67814"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 11:14:43 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 16 11:14:43 2016 +0000"
      },
      "message": "Merge \"Collect verifier dependencies\" am: 031f3dd847 am: e0203d3b14\nam: 4759c29357\n\nChange-Id: Ia16466e2f646d679ab179a4ad3c499c9e05430f3\n"
    },
    {
      "commit": "ca3c8c33501bf199d6fd0a5db30a27d8e010cb23",
      "tree": "12a6c3a4266bd17c6b9fe7066fd0b25cb8d9b2d6",
      "parents": [
        "0764877e21f1230e718923d5b84b048cd4346afa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 06 14:04:48 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 10:08:18 2016 +0100"
      },
      "message": "Collect verifier dependencies\n\nMethodVerifier tests whether a DEX method is valid w.r.t. the classes\nin class path. Since the APK does not change across OTA updates, it\nis not necessary to analyze the bytecode again with MethodVerifier,\nas long as its dependencies on the class path (which may have changed)\nare satisfied.\n\nThis patch introduces VerifierDeps, a class path dependency collector,\nand adds hooks into MethodVerifier where classes/methods/fields are\nresolved and where assignability of types is tested.\n\nTest: m test-art-host-gtest-verifier_deps_test\nBug: 30937355\nChange-Id: Iee0b321d772a5c7d1cb471aaa6e13918310b7e2f\n"
    },
    {
      "commit": "0ae55c57a91c2aa92b40903b70cd1c6c0262a6d1",
      "tree": "b71f2e63c9768c6d7a39b0d3042e2855b7468f18",
      "parents": [
        "31e48a10551938edb3f805a93e979bca0a9a913f",
        "dccdf2ac94d6e5c92b1e0500524cab02d946e0d3"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 12 17:48:13 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 12 17:48:13 2016 +0000"
      },
      "message": "Merge \"Introduce VDEX file, use it for DEX files\" am: 935cf1b7a5 am: 964685a1ba\nam: dccdf2ac94\n\nChange-Id: Ie6eea773fbd6105bd4db2cb0bf7fb32d9dbab60a\n"
    },
    {
      "commit": "7b49e6cade09bc65b3b5f22d45fc9d0a7184e4f2",
      "tree": "36bb77d376708ba0f054c9820f4b7ed51437fbb2",
      "parents": [
        "3bac5443975cd6312e7c6282b94014db25f369d7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Sep 01 11:06:18 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 12 14:39:07 2016 +0100"
      },
      "message": "Introduce VDEX file, use it for DEX files\n\nThis patch introduces a new output file called VDEX. In the future,\nVDEX files will store pre-validated DEX files which do not need to be\nre-extracted and re-verified when recompiling, e.g. due to new\nprofiling information or after a system update.\n\nWith this CL, the OatWriter writes DEX files into the VDEX and the\nrest of its output into OAT. The OatFile class and related classes\nare updated to load the VDEX at runtime and mmap the DEX file section\nfrom it. Patchoat creates symlinks to the source VDEX files in the\ntarget directory or copies the files if passed in as file descriptors.\n\nThe feature can be disabled by setting the environment variable\nART_ENABLE_VDEX to false.\n\nTest: m test-art-host\nBug: 30937355\nChange-Id: I54dcaececf6814c258c80524ec15e2e2ef69c8dd\n"
    },
    {
      "commit": "10bd045ac06114f56a5542036675ecd2afb9cff4",
      "tree": "76373515af1fa4f10dad5ebd7bd5ad7379222695",
      "parents": [
        "7549509e54cbe3c7971e86e1f27c52b54007c8c3",
        "9a45bff53ba0a720de7acfdb966898d8d931f6ed"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 30 17:24:56 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 30 17:24:56 2016 +0000"
      },
      "message": "Merge \"Save environment snapshot and use at fork/exec\" am: d7eabc2cc1 am: 2bbfaf15f7\nam: 9a45bff53b\n\nChange-Id: I08c3c9c9586c5769f7c40ea6842d936dfeceb2bd\n"
    },
    {
      "commit": "d106d9f871c957286ccdeb79c1c2a5ed41f859a6",
      "tree": "dc61a7fd80e1289777f6a991102b0fe4a2ef032d",
      "parents": [
        "99fd9f39f2cd74864bdc750a3444ddd776da534c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 16 19:22:57 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 30 09:32:49 2016 -0700"
      },
      "message": "Save environment snapshot and use at fork/exec\n\nSome applications may inadvertently or maliciously set of environment\nvariables such as LD_LIBRARY_PATH before spawning subprocesses.\nTo make this more difficult, save the environment at the time the\nruntime starts and use the saved copy anytime Exec is called.\n\nBUG: 30160149\nTEST: make test-art-{host,target}\n\nChange-Id: I887b78bdb21ab20855636a96da14a74c767bbfef\n"
    },
    {
      "commit": "c4cb917fa44939da4592d2dd8c9fd90b5d66c510",
      "tree": "f80fa1598355bcd44f8e1ef38424eaab40f9d867",
      "parents": [
        "eca2eebed06cf4463cd5cfeacff75de1f03cac8d",
        "021c14320c8f977421abcd02373072a57add8792"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 23 10:38:06 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 23 11:01:22 2016 -0700"
      },
      "message": "resolve merge conflicts of 021c143 to nyc-mr1-dev-plus-aosp\n\nChange-Id: Id393568264e95ba50ffc04f75131e8cda27ee15e\n"
    },
    {
      "commit": "47393386aa1f44c61a10045c7dbb5d559c9f7cab",
      "tree": "30e7211d5795395a7afe5a784a0a58872abaa721",
      "parents": [
        "1488ff8aa3b041734ef0fbd113df512a2376e44e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 23 15:59:24 2016 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 23 15:59:24 2016 +0000"
      },
      "message": "Revert \"Save environment snapshot and use at fork/exec\"\n\nThis reverts commit 1488ff8aa3b041734ef0fbd113df512a2376e44e.\n\nChange-Id: I3c237c94ffa865378f8efd9aa2b0fb2ad33867c2\n"
    },
    {
      "commit": "fa44200ad66eb2ae9c951ac33c34bc88f8b7e584",
      "tree": "6561a34ae3f259bd2fe55c6ee775863eb9b81585",
      "parents": [
        "7ff4ab2bed5b09c4b8049d4ea3da628817365477",
        "8890690dbdc0265b8c04f26679d6db3e87483bba"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Aug 22 18:42:08 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Aug 22 19:35:40 2016 -0700"
      },
      "message": "resolve merge conflicts of 8890690 to nyc-mr1-dev-plus-aosp\n\nChange-Id: Ie5fbcd93c438ebb271a871224ea668593b5ce269\n"
    },
    {
      "commit": "1488ff8aa3b041734ef0fbd113df512a2376e44e",
      "tree": "f56a2046aa03cd5ff2c637cb3e4c77c371ac23ef",
      "parents": [
        "b6f58cbfad5bb39d481d2986b2a8792bb42f65e7"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Aug 16 19:22:57 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Aug 18 11:30:27 2016 -0700"
      },
      "message": "Save environment snapshot and use at fork/exec\n\nSome applications may inadvertently or maliciously set of environment\nvariables such as LD_LIBRARY_PATH before spawning subprocesses.\nTo make this more difficult, save the environment at the time the\nruntime starts and use the saved copy anytime Exec is called.\n\nBUG\u003db/30160149\nTEST\u003dmake test-art-{host,target}-gtest-utils_test\n\nChange-Id: Ice0097bf0de30db3d4ead124caf93316f39e3df3\n"
    },
    {
      "commit": "458ab5382b7a84e5c192d62d2fb5ca0eb08ffd02",
      "tree": "eddb0f2b8c9494bb6cf1bcc6d9b3138703dd91fb",
      "parents": [
        "36bf3a2d281892e7906d3eaf9d7455b0656c9a25"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Aug 15 16:12:57 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Aug 15 16:12:57 2016 -0700"
      },
      "message": "Remove unused GetDalvikCacheFilenameOrDie.\n\nChange-Id: I8987fa488a89865d4a5fb56dd00cc396ee33bcce\nTest: m test-art-host-gtest-utils_test32\nTest: m build-art-host-tests\nTest: m build-art-target-tests\n"
    },
    {
      "commit": "55b58b6b68727ac714ed5ce2ff2f45a33caf9368",
      "tree": "d4d02eedf7a0cb92d99e27ddae6eca2eac788692",
      "parents": [
        "066187de25e3fd2ae86bad812f514e16793caae7"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Aug 12 09:05:13 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Aug 12 12:45:05 2016 -0700"
      },
      "message": "Clean up use of GetDalvikCache.\n\nSwitch the only caller of the non-void version of GetDalvikCache that set\ncreate_if_absent true to use the void version of GetDalvikCache. Then no\ncallers of the non-void version of GetDalvikCache set create_if_absent to\ntrue, so that argument is no longer needed. And without create_if_absent,\nthere is no case when the function will abort, so the \u0027OrDie\" option is no\nlonger necessary.\n\nChange-Id: I83f60dcc8a8f3b1f91fd2971e9028f6a7dd8384d\nTest: m art-test-host\nTest: m art-test-target\n"
    },
    {
      "commit": "5dd44d0da7999ab62f09a1bf03345280811736d4",
      "tree": "18dc0029caf5791b0bf831dcc6e38f623fe14eb4",
      "parents": [
        "20b975cc5c5a1f4e6f0a8e525b5d2e63abc413df"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 02 17:20:03 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 04 18:19:02 2016 -0700"
      },
      "message": "ART: Factor out native stack dumping\n\nMove DumpNativeStack and DumpKernelStack into a new file to keep\nconcerns separated. Clean up the file.\n\nIn preparation for modifications to how we use addr2line.\n\nBug: 30351473\nTest: m test-art-host\nTest: manual host testing with a test that times out\nChange-Id: I02d5645952fe94fd8e73bcf0522721547f6cef66\n"
    },
    {
      "commit": "df8789252252c77660daf5d602d425b60b344b08",
      "tree": "b393eb58d4a7749d819672d0199f35931a8e945b",
      "parents": [
        "f79c0e6f74dfaf7ca5ba3fbe1c903abd65086a1a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 13 16:44:54 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 13 19:48:30 2016 -0700"
      },
      "message": "ART: Add FdFile constructors\n\nMake Open protected, and expose constructors instead. Add a move\nconstructor and move assignment operator.\n\nAdd OS functions that return the FdFile non-pointer version.\n\nAdd tests.\n\nBug: 21192156\nTest: m test-art-host\nTest: m test-art-target (shamu)\nChange-Id: I83e390edde7cd37c900e9d5c3e4d21da22981b3f\n"
    },
    {
      "commit": "b9c1b9bdd7689c0e80c64c371581f99e53749e05",
      "tree": "5357b90f2281ac4abf5a89323441a255ab35e702",
      "parents": [
        "b8e69994d10534e0f4f96878725bc53e531f2c6f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 17 17:07:52 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 22 16:10:19 2016 +0100"
      },
      "message": "Improve resolved classes saving strategy\n\nIf we already have a non empty profile file it means that we already\nsaved once the resolved classes. So there\u0027s no need to hurry up and\nstart the profile saver eagerly after 2s.\n\nBug: 27600652\n\n(cherry picked from commit c15e566b36170237f01ccefc12129c1578a02140)\n\nChange-Id: Iecc730c25eab779efccbbde66432dbbc61192e8a\n"
    },
    {
      "commit": "c15e566b36170237f01ccefc12129c1578a02140",
      "tree": "2923afc515ccec7972d1cfb39a0cf5429876b7aa",
      "parents": [
        "c19c1c2e1def1f4f5ab5fd9e71b1a6f76d42988f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 17 17:07:52 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 18 16:12:28 2016 +0000"
      },
      "message": "Improve resolved classes saving strategy\n\nIf we already have a non empty profile file it means that we already\nsaved once the resolved classes. So there\u0027s no need to hurry up and\nstart the profile saver eagerly after 2s.\n\nBug: 27600652\nChange-Id: I92ac5869bf68c8d6cbac8fc1503fe3c4930241b4\n"
    },
    {
      "commit": "fa16a6d0039801293f7f4c035b4876d72f880adf",
      "tree": "69afa609cca590caa2ecf8deb70688077b6eeb8b",
      "parents": [
        "3a84e31b247f0c7b6c31946f15def732d556282c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 09 16:03:00 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 10 14:15:10 2016 -0800"
      },
      "message": "Log when why an Unwind failed.\n\nBug: 27449879\n\n(cherry picked from commit f193878a242f5b86db62986a9b2cba5d99505c17)\n\nChange-Id: Ieb4f258feaaef70a4982495e4f63ed778280b8da\n"
    },
    {
      "commit": "f193878a242f5b86db62986a9b2cba5d99505c17",
      "tree": "006fa6ec8d30c4d43bf9120964527ff087ef3292",
      "parents": [
        "2048b01dfec8877d672a4da41a158f68b12b5337"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 09 16:03:00 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 10 11:33:39 2016 -0800"
      },
      "message": "Log when why an Unwind failed.\n\nBug: 27449879\nChange-Id: If7ae5f0991da6fd64dd45e22d69eecef1388a28e\n"
    },
    {
      "commit": "024160850fbbf28368eae951beb4c72e2ce8fce6",
      "tree": "7f4efde22670fd105315db00897fd81f63ba650b",
      "parents": [
        "7ead0c009c64f1e10aa39e44ea10383dd859d332"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 23 18:41:18 2016 -0800"
      },
      "message": "Revert \"Revert \"Add profman tool: responsible to process profiles\"\"\n\nThis reverts commit 3da74687e42de7d33a8e75df9bd64374e650f75e.\n\n(cherry picked from commit 2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e)\n\nChange-Id: I38086cc9de939bad33bcd13b1677e1626af61c29\n"
    },
    {
      "commit": "2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "3da74687e42de7d33a8e75df9bd64374e650f75e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "message": "Revert \"Revert \"Add profman tool: responsible to process profiles\"\"\n\nThis reverts commit 3da74687e42de7d33a8e75df9bd64374e650f75e.\n\nChange-Id: Id005096bd8063c6c602744d4476d5eb7e0d34e90\n"
    },
    {
      "commit": "3da74687e42de7d33a8e75df9bd64374e650f75e",
      "tree": "f3bf62678200380dc672647af1da136c562f60b3",
      "parents": [
        "6caefd983a800a063b219f1d3ed71b1416cecd70"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "message": "Revert \"Add profman tool: responsible to process profiles\"\n\nNeeds a profile_assistant_test fix.\n\nBug: 26719109\nBug: 26563023\n\nThis reverts commit 6caefd983a800a063b219f1d3ed71b1416cecd70.\n\nChange-Id: Ibdeb7385737dd7846ed861e0a95f083abb9aa974\n"
    },
    {
      "commit": "6caefd983a800a063b219f1d3ed71b1416cecd70",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "c017318a7c5a9142b1fff9f57eb4105b1d397bbd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 01 12:06:18 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 22 13:55:18 2016 +0000"
      },
      "message": "Add profman tool: responsible to process profiles\n\nThis pulls out profile parsing from dex2oat into a separate tool.\nSome additional refactoring:\n- better return codes\n- dex2oat now accepts only one profile file\n\nThis is the first step towards support secondary dex files and\nextracting profiles out of the code_cache directory.\n\nBug: 26719109\nBug: 26563023\n\n(cherry picked from commit d81c289e58f4ced8ec7674fd377c356669f97227)\n\nChange-Id: I34d408faa318e866e1a23d4d04c369131ee5012b\n"
    },
    {
      "commit": "59a8c0bb74c353f879760bd6522b49cf7298666e",
      "tree": "b899a8d9e4dcb19023b7754255833cf710180140",
      "parents": [
        "0021c310e2e613d6d180acda0d9d422dba8688b0"
      ],
      "author": {
        "name": "tony.ys_liu",
        "email": "tony.ys_liu@htc.com",
        "time": "Wed Jan 20 18:05:31 2016 +0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 20 15:38:12 2016 -0800"
      },
      "message": "Use current pid not tid to create a backtrace map.\n\nThe BacktraceMap::Create() function assumes that the passed in\nparameter is the current pid not tid. If a tid is passed in, then\nthe logic that creates the local map in libunwind is not used\nand can bypass all of the special handling of local maps. The result\ncan be crashes if this map data gets out of sync with the real maps\nfound in the process.\n\nBug: 26676205\nBug: https://code.google.com/p/android/issues/detail?id\u003d199219\nChange-Id: Ibab9f7a7b99648a2cdaa185958bf6ffc368079ce\n"
    },
    {
      "commit": "4d87df607a0b86cdf4b2c04f61d72a60d8975ce0",
      "tree": "922e882c15633e6c700091c99864868d69822d7d",
      "parents": [
        "97f2ca08c3d9a2b1694419aea07cd64f477c0af2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 07 15:14:19 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 08 15:46:52 2016 -0800"
      },
      "message": "Improve handling of daemon threads after runtime shutdown\n\nThe main issue comes from the fact that user daemon threads are\nallowed to continue running after the runtime has shutdown. They may\nstill have a JNI env pointer. To prevent crashing if they call into\nthe env, we replace the function pointers with functions that sleep\nforever.\n\nThe other issue is that user daemon threads that are blocked in an\nART condition variable may get woken up by another user daemon inside\nof Monitor::Notify or by a spurious wakeup (i.e. SIGQUIT). To deal\nwith this issue, we check the JNI env for shutdown runtime when we\nare woken up from a condition variable wait. This check fixes test\n132 with --host --gdb --interpreter. Previously this test crashed\nsince dlclose was somehow causing a spurious futex wakeup.\n\nTODO: Investigate adding a unit test.\n\nBug: 18577101\nChange-Id: I479b38968ee9fbc4ee4b252ee2528787279972cc\n"
    },
    {
      "commit": "5e2b971e468ca73a8e10a120730b3b6f17fad408",
      "tree": "5168766339acfd7c61852ca38595fe3459b2eb81",
      "parents": [
        "b7371a5517f78f61759f7e6124f2d957d974d9cd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Dec 18 14:10:00 2015 +0200"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 04 19:01:13 2016 +0000"
      },
      "message": "Assume the profile file was created before saving.\n\nbug: 26080105\nChange-Id: I9969a4abd8533614922076551fcbae2cdf695525\n"
    },
    {
      "commit": "4d77b6a511659f26fdc711e23825ffa6e7feed7a",
      "tree": "7ac013467a20fcdf64cb6cf4c79a8ff67dc7690a",
      "parents": [
        "66f55237679db90cb0a0a265043a787932b466f8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 01 18:38:09 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 24 12:02:12 2015 +0200"
      },
      "message": "Save profile information in a separate thread.\n\nPreviously we would save the profiling information only when the app\nwas sent to background. This missed on an important number of updates\non the jit code cache and it didn\u0027t work for background processes.\n\nBug: 26080105\n\nChange-Id: I84075629870e69b3ed372f00f4806af1e9391e0f\n"
    },
    {
      "commit": "5096e66d07db8041589518f8c5b0281d859d0817",
      "tree": "52a1d28a6286d9054d2559fea8168541612093bd",
      "parents": [
        "88b2b80aed15bb1f931cddd40e44ca525ef10018"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 08 19:25:49 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 09 15:40:31 2015 +0000"
      },
      "message": "ART: Add FdFile::Copy() to copy data from another file.\n\nAlso move utilities for inspecting file magic numbers to\nbase/file_magic.{h,cc} and drop the unused IsOatMagic().\n\nChange-Id: I2cc4dd18a5e8b9738fb386c8057faad3722bdd68\n"
    },
    {
      "commit": "732f016139acac7bd7ec0d0c1d5e964eb8a28b2e",
      "tree": "6ea503f90c55e1879c170b2de096496931282122",
      "parents": [
        "7ecbd49c6c78e6c633883aa6766675df8abaa7dd"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Nov 20 01:24:47 2015 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Nov 20 01:24:47 2015 +0000"
      },
      "message": "Revert \"Use arc4random when available to select delta for image relocation.\"\n\nThis reverts commit 7ecbd49c6c78e6c633883aa6766675df8abaa7dd.\n\nChange-Id: Ifb37e23584722b31cb2369bcc9b91da6146d2cf6\n"
    },
    {
      "commit": "7ecbd49c6c78e6c633883aa6766675df8abaa7dd",
      "tree": "612cfb1749b8cf74b92c29dcf00141e76e28484f",
      "parents": [
        "16cabc4acd14d5a61c73cef821162e1827f08788"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 19 11:03:10 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 19 16:47:49 2015 -0800"
      },
      "message": "Use arc4random when available to select delta for image relocation.\n\nBug: 25776162\n\nChange-Id: I1c4cc992977b5d6fe782ff819903a802a40391ee\n"
    },
    {
      "commit": "ae35c3716dd4d974f6e6c3900577d9d98f99132f",
      "tree": "731994aa28a7017133f6fecff16b1886e63c3ded",
      "parents": [
        "4ba3766449e4c36478ed896ee6d2ad9e9ee43f74"
      ],
      "author": {
        "name": "Tobias Lindskog",
        "email": "tobias.lindskog@sonymobile.com",
        "time": "Wed Nov 04 19:41:21 2015 +0100"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Nov 05 11:44:57 2015 -0800"
      },
      "message": "Use _exit instead of exit after exec fails\n\nA call to exit() will run the atexit handlers before exiting, which is\nusually not desirable in a forked-off child process.\n\nCalling _exit() instead will not run the atexit handlers.\n\nChange-Id: Ide9a69c0468faafeaf32b0babd9fcf2b4f06f546\n"
    },
    {
      "commit": "abbb0f76b07417f13f712f54d5afddb72e3b9931",
      "tree": "bb26eeb28b58aed669ad16af30aa35771eb02be4",
      "parents": [
        "594c0612519e96bcc1bd42ff4dcbfa2c53b09c5a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 29 18:55:58 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 30 11:17:00 2015 +0000"
      },
      "message": "Refactor code so that JIT can parse compiler options.\n\nCurrently only the CompilerOptions class. We should also\ndo it for the CompilerDriver options.\n\nThis will fix the flakiness seen on jdwp testing, as the\ndebuggable flag was not passed to the compiler.\n\nChange-Id: I4218dd5928c9f4fe2d6191ab11e5598e7cf84bcf\n"
    },
    {
      "commit": "6cff48f05894a60aa4742472983a75504536ca15",
      "tree": "bd399d46ef08cd836010f3119c8c5db054561267",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Sun Jan 26 21:36:13 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 23 11:16:11 2015 -0700"
      },
      "message": "ART: Speed up thread stack tracing for ANRs\n\nShare a BacktraceMap for all threads being dumped, which speeds up\nANR dumping. Results from Nexus 9 (average of five):\n\nBefore: 0.587s\nAfter:  0.206s\n\nChange-Id: Ia70e0dbd39049318c02de561e7b95258d4849467\n"
    },
    {
      "commit": "ab60b68183cc8052b113c566f4851263444eb29c",
      "tree": "a97c508946ad8910386343b33f76e46af8ea87c6",
      "parents": [
        "4206af2185bd1d3d0356a8fbc7c5e151fdd261d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 13:35:38 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 13:35:38 2015 +0100"
      },
      "message": "New attempt at fixing mac build.\n\nChange-Id: I00e3df55e65eb5edb4e8dd244bb7f8918dd942d4\n"
    },
    {
      "commit": "b937a443752d4185a18cafb88e686bec1dd53d15",
      "tree": "8e0831ff94c789fe6b26e8d85d0716a589603c24",
      "parents": [
        "94e24ac0e9e2bad74e9beecbd068f2b87798b815"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 12:55:20 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 12:55:20 2015 +0100"
      },
      "message": "Fix mac build.\n\nChange-Id: I7229a628a619164eea22735bcaed507428ab054a\n"
    },
    {
      "commit": "524e7ea8cd17bad17bd9f3e0ccbb19ad0d4d9c02",
      "tree": "ad07cc96f633bdae839ff2f1553d84b9c864a930",
      "parents": [
        "b697c447eb61c2e14315166ec3b0d16375ae403c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 16 17:13:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 11:52:11 2015 +0100"
      },
      "message": "Remove ArtCode.\n\n- Instead use OatQuickMethodHeader.\n- Various cleanups now that we don\u0027t have all those\n  ArtMethod -\u003e ArtCode -\u003e OatQuickMethodHeader indirections.\n\nAs a consequence of this cleanup, exception handling got a bit\nfaster.\n\nParserCombinators benchmark (exception intensive) on x64: (lower is better)\nBefore:\nParserCombinators(RunTime): 1062500.0 us.\nAfter:\nParserCombinators(RunTime): 833000.0 us.\n\nChange-Id: Idac917b6f1b0dc254ad68fb3781cd61bccadb0f3\n"
    },
    {
      "commit": "6bc4374e3fa00e3ee5e832e1761c43e0b8a71558",
      "tree": "38118523aa6b9a92fbdcd7bf1d32ca6185a3d3f0",
      "parents": [
        "16065ce56394c73c87dcb78ead4164ddc80fddb3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 18:11:10 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 13 12:05:27 2015 +0100"
      },
      "message": "Add an abstraction over a compiled code.\n\nThat\u0027s just step 1, moving code-related functions of ArtMethod to\nanother class. That class is only a wrapper on an ArtMethod, but will\nbe changed to be a wrapper around compiled code.\n\nChange-Id: I6f35fc06d37220558dff61691e51ae20066b0dd6\n"
    },
    {
      "commit": "f9f6441c665b5ff9004d3ed55014f46d416fb1bb",
      "tree": "3d66a0b44e1ac927156eec6e6488de5fd52b982b",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 14:05:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 20:16:58 2015 +0100"
      },
      "message": "Optimizing: Tag Arena allocations with their source.\n\nThis adds the ability to track where we allocate memory\nwhen the kArenaAllocatorCountAllocations flag is turned on.\n\nAlso move some allocations from native heap to the Arena\nand remove some unnecessary utilities.\n\nBug: 23736311\nChange-Id: I1aaef3fd405d1de444fe9e618b1ce7ecef07ade3\n"
    },
    {
      "commit": "53de99cd7e863e95179823504335f1f67e03c791",
      "tree": "9bd18cc5295e8c4b569dc16d45b0ff1e19ce6ef2",
      "parents": [
        "4b7b5fcda0f97ed874de0ccd18940030e6c71f04"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 17 13:43:55 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 17 13:43:55 2015 -0700"
      },
      "message": "ART: Follow-up fixes\n\nAddressing comments for CL 166499, commit\n5073fedd553afeb6ccdb49c1a1ab2cc2947c0870.\n\nChange-Id: I359e5a4c026d58d75cb62b90c495796855302b94\n"
    },
    {
      "commit": "5073fedd553afeb6ccdb49c1a1ab2cc2947c0870",
      "tree": "6c47517d6e2580729442d08f287d05e2070dee83",
      "parents": [
        "b19b82bf6c8a55459fddcd55e86b162b2c0b9101"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 10 11:40:25 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 12 22:52:32 2015 -0700"
      },
      "message": "ART: Add utility function to dump dex CFG\n\nAdd a utility function in utils.h to dump the dex CFG of\na method.\n\nAdd an option (\"-g\") to dump CFGs of a dex file in dexdump2.\n\nChange-Id: I380082f0abe8ed7eeb6a9186364a99425f69f55c\n"
    },
    {
      "commit": "dd6712578b6aa8a292bc6249295b6d2a7b182717",
      "tree": "28e428fc2b4fd2a1a78b1ffb8659611f2ad45df0",
      "parents": [
        "bd76db36abc1026cdc3f737ec0f2be6174a131a1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 23 14:37:18 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 24 15:10:22 2015 -0700"
      },
      "message": "ART: Change the stack dump format to be in line with debuggerd\n\nMake offsets 16 digits on 64-bit platforms.\n\nAdd the ability to provide the build fingerprint, and print it in\nthe traces output.\n\nBug: 22693991\n\n(cherry picked from commit 242ae94dc39be53e519a6163ea1db494ceb75954)\n\nChange-Id: Ibd3d3b3bd65dce84acfb97a487807d6f280a9508\n"
    },
    {
      "commit": "1e13374baf7dfaf442ffbf9809c37c131d681eaf",
      "tree": "9a8a53295a8389d7ec10accf3efb8785a97a3599",
      "parents": [
        "f68c8545382925062da2b87169ca2b5314f0b431"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed May 20 12:30:59 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jul 13 17:38:40 2015 -0700"
      },
      "message": "Generalize Valgrind annotations in ART to support ASan.\n\nAlso add redzones around non-fixed mem_map(s).\nAlso extend -Wframe-larger-than limit to enable arm64 ASan build.\n\nChange-Id: Ie572481a25fead59fc8978d2c317a33ac418516c\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": "ce39200492e2715a94d96fbd39fa42b46115c255",
      "tree": "a295d2f9265092513d728122cd201943288a8820",
      "parents": [
        "dc31313c4577bb4c00d90774159c84e738ed348d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 19:57:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 20:12:19 2015 +0100"
      },
      "message": "Fix mac build: include \u003csys/time.h\u003e in time_utils.cc .\n\nRequired for gettimeofday(). Not needed in utils.cc .\n\nBug: 13925192\nChange-Id: If06840d8a47c9193ccc7bd4cee5c16fcf76d9729\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "8508e37deeb291f92d28a9bff2df77cabdc29ddf",
      "tree": "cad2b501e3bf8ca2c6f784f4fc69fff6f8b1e7ac",
      "parents": [
        "f07f71f9af8f56e738ef0451c60734ec6022d08e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 06 14:55:43 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 07 13:33:13 2015 +0100"
      },
      "message": "Fix broken checks in IsValidPartOfMemberNameUtf8Slow.\n\nGetUtf16FromUtf8 returns a surrogate pair only if it encounters\na 4-byte UTF sequence. Three byte UTF sequences will only return the\nfirst or second half of a pair so we need to check for that\nexplicitly.\n\nbug: 20844537\n\n(cherry picked from commit 3ba8671d60061359fd833f60f7a9dca14878cc0b)\n\nChange-Id: I2e2a4f9f736cd11050a2b634b3bb27b75a0ee0ba\n"
    },
    {
      "commit": "0b063d9ba7a11779667c0888e9f3495de0118b74",
      "tree": "77edd15b599b2f6e1d87d37c62c9573f2138c460",
      "parents": [
        "8a30bf23bcb1ad8d4ed9060ddbb27edbfd57a897"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 04 09:53:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 04 09:58:02 2015 -0700"
      },
      "message": "Fix NanoSleep and add test\n\nFixed a bug where tv_nsec was\u0027t between 0 and 999,999,999.\n\nBug: 14450052\nChange-Id: I30b29a716bfa63c6b57d589dd1102d2ca934c061\n"
    },
    {
      "commit": "5a1b2bff14465113280265fc856e1cae116faa25",
      "tree": "461c10588bad98e2d26b3c5f697862d9f74334a4",
      "parents": [
        "43e1bc667e66386443aee6477d767d9b8ef5aa79"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 01 16:03:49 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 01 17:09:00 2015 -0700"
      },
      "message": "Let the map function compute the relative pc.\n\nThe new packed relocations linker option creates an elf with a non-zero\nload base. It\u0027s no longer an easy task to compute the relative pc yourself\nso call the helper function to do it for us.\n\nBug: 20687795\n\n(cherry picked from commit 332ef327c2b1a5e1774ba0d1da23e07303002af9)\n\nChange-Id: I3d61c767f21a3f240a14f9e8bc6bee53b6cdb60d\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "40da286d3207d88ed8ff3f5caac4873874603428",
      "tree": "3f9720425b2a024a5a54a0a71447dcea107229a8",
      "parents": [
        "6508158f8388847f4cc3693e2cc1dbee6c2c7d18"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 12:49:04 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 15 20:45:35 2015 -0700"
      },
      "message": "ART: Streaming trace mode\n\nAdd a streaming mode for tracing. Streaming uses a buffer of 16KB\nand writes to the output when that buffer gets full. Streaming mode\ncan be enabled with -Xmethod-trace-stream and is currently not\nexposed otherwise.\n\nAdd a python script that can parse the streaming format, which\nsimply contains strings for newly encountered threads and methods\ninline, and create output that can be used with traceview.\n\nAdd Trace::Pause and Trace::Abort, which can pause and abort tracing.\nAbort is different from Stop in that it does not write the data.\n\nAdd code to the zygote hooks JNI implementation that pauses tracing\nbefore the fork, making sure that a child cannot clobber the parent\u0027s\ndata.\n\nAdd code to the zygote hooks JNI implementation that aborts old\ntracing and starts new tracing in the child after the fork. Currently\nbase the output on the pid. This will not work on an unmodified\ndevice, as the profiles directory is not generally writable, but\nwe do not have enough information at that point. Consider a scheme\nthat restarts tracing later.\n\nChange-Id: I93c7bf87e35af582bdfdd3ecc7c52454514220dd\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": "66d874d96d5699bb090c59f47a5a528956ca053e",
      "tree": "d59bf83a08fead7d9823230831bea63c9e43a62c",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 15 09:37:19 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Mar 09 14:46:23 2015 -0700"
      },
      "message": "Create OatFileAssistant class for assisting with oat files.\n\nThe oat file assistant is used for determining whether dex2oat or\npatchoat is needed, for running dex2oat or patchoat as needed to make\nan oat file up to date, and to load dex files associated with a given\ndex location.\n\nThe introduction of the OatFileAssistant class is meant to clean up and\nconsolidate code related to the management of oat files that was\nduplicated and spread across dalvik_system_DexFile.cc and\nclass_linker.cc.\n\nBug: 11301553\nChange-Id: I0c16027b9bae4570c2c50faa9c14f581c0cbafb8\n"
    },
    {
      "commit": "4ab52e75c782abf19ff9ebff8d19c87ec4ec97b6",
      "tree": "182699e6f100d74902790594dc0b377999332378",
      "parents": [
        "2eb5168bd9e43b80452eaee5be32c063e124886e",
        "965fd02721746d4164bc40719cd53eefab37cfb3"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Mar 02 15:50:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 02 15:50:09 2015 +0000"
      },
      "message": "Merge \"Don\u0027t require three-character extensions for dex locations.\""
    },
    {
      "commit": "00a1f5bfa57bb4007a08435ba83b029dcebde5c0",
      "tree": "a3d2562b439ba15faafafa60544eb9a342ff1bd8",
      "parents": [
        "242026e246a8b9efe098a0cce008fd525e011e5b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 13:35:39 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 20:12:47 2015 -0800"
      },
      "message": "Revert \"Revert \"Re-enable one thread dumping the native stack of another.\"\"\n\nThis reverts commit edfdaf37d5520a3c3a858b6b3fba4f759c60dadc.\n\nTests seem to succeed. Might be helpful to understand some deadlock/timeout\nsituations.\n\nBug: 15446488\nBug: 18713034\nChange-Id: I5be225363f698556221576b5827d9501e26799f3\n"
    },
    {
      "commit": "965fd02721746d4164bc40719cd53eefab37cfb3",
      "tree": "f1140d01dfc9547757fbf5e5b97a9c780a7d7503",
      "parents": [
        "01b7c431ed85e0eae4554f6fc0f79a78bc82f31f"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Feb 26 11:08:57 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Feb 26 11:08:57 2015 -0800"
      },
      "message": "Don\u0027t require three-character extensions for dex locations.\n\nBug: 19437875\nChange-Id: Ib62b4c691b04f27c5d499affd5a7fd4d9f0c64f9\n"
    },
    {
      "commit": "01b7c431ed85e0eae4554f6fc0f79a78bc82f31f",
      "tree": "3d203eca0ee9c82c7e5d1fd82c9cb3e5d7375987",
      "parents": [
        "ec27dc12124d57283d8f86e5386c95896b01eb23",
        "a6dfdae1cffc78f9791348b2e1dc8f4c6c3f7128"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 25 18:12:27 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 25 18:12:27 2015 +0000"
      },
      "message": "Merge \"ART: Print maps directly to log\""
    },
    {
      "commit": "a6dfdae1cffc78f9791348b2e1dc8f4c6c3f7128",
      "tree": "2b07c1cc94212963ec38a2c0a784a26fe1522194",
      "parents": [
        "96ac49a260223dc00291116daa63d7489c52bb0f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 15:50:19 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 22:30:47 2015 -0800"
      },
      "message": "ART: Print maps directly to log\n\nDo not read proc maps into a string before printing them later back\nto the log. In low-memory situations this can cause a bad_alloc.\n\nExternal bug: http://b.android.com/153990\nBug: 19494774\n\nChange-Id: Ie63d8788afe8c9da65b30b2f89c50d3dbb820755\n"
    },
    {
      "commit": "e5f13e57ff8fa36342beb33830b3ec5942a61cca",
      "tree": "02e370ecc4e0d955f28bfc71a41015f94fbb19b7",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 09:37:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 10:47:02 2015 -0800"
      },
      "message": "Revert \"Revert \"Add JIT\"\"\n\nAdded missing EntryPointToCodePointer.\n\nThis reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.\n\nChange-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af\n"
    },
    {
      "commit": "a5ca888d715cd0c6c421313211caa1928be3e399",
      "tree": "bdb08a2cbcf277ab7f02626a23b52a3fdf272ffe",
      "parents": [
        "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "message": "Revert \"Add JIT\"\n\nSorry, run-test crashes on target:\n0-05 12:15:51.633 I/DEBUG   (27995): Abort message: \u0027art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast\u003cuintptr_t\u003e(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc\u003d71e3366b code\u003d0x71e3362d size\u003dad000000\u0027\n10-05 12:15:51.633 I/DEBUG   (27995):     r0 00000000  r1 0000542b  r2 00000006  r3 00000000\n10-05 12:15:51.633 I/DEBUG   (27995):     r4 00000006  r5 b6f9addc  r6 00000002  r7 0000010c\n10-05 12:15:51.633 I/DEBUG   (27995):     r8 b63fe1e8  r9 be8e1418  sl b6427400  fp b63fcce0\n10-05 12:15:51.633 I/DEBUG   (27995):     ip 0000542b  sp be8e1358  lr b6e9a27b  pc b6e9c280  cpsr 40070010\n10-05 12:15:51.633 I/DEBUG   (27995): \n\nBug: 17950037\nThis reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4.\n\nChange-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3\n"
    },
    {
      "commit": "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4",
      "tree": "140026ff9638ff34050680b6c706b82fa1740b56",
      "parents": [
        "38fee8ef4bc0f4dbe2c6d1f5585895f0c4d16984"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 17 10:38:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 23 16:45:49 2015 -0800"
      },
      "message": "Add JIT\n\nCurrently disabled by default unless -Xjit is passed in.\n\nThe proposed JIT is a method JIT which works by utilizing interpreter\ninstrumentation to request compilation of hot methods async during\nruntime.\n\nJIT options:\n-Xjit / -Xnojit\n-Xjitcodecachesize:N\n-Xjitthreshold:integervalue\n\nThe JIT has a shared copy of a compiler driver which is accessed\nby worker threads to compile individual methods.\n\nAdded JIT code cache and data cache, currently sized at 2 MB\ncapacity by default. Most apps will only fill a small fraction of\nthis cache however.\n\nAdded support to the compiler for compiling interpreter quickened\nbyte codes.\n\nAdded test target ART_TEST_JIT\u003dTRUE and --jit for run-test.\n\nTODO:\nClean up code cache.\nDelete compiled methods after they are added to code cache.\nAdd more optimizations related to runtime checks e.g. direct pointers\nfor invokes.\nAdd method recompilation.\nMove instrumentation to DexFile to improve performance and reduce\nmemory usage.\n\nBug: 17950037\n\nChange-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca\n"
    },
    {
      "commit": "80b96d1a76790527f72a660ac03d9c215eed17ce",
      "tree": "8af6fb3840c60c65887cd5de64d987058bb8986e",
      "parents": [
        "39109a06015c91188232e59fa9e60e0915d24cd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 19 15:50:28 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 19 18:02:20 2015 +0000"
      },
      "message": "Replace a few std::vector with ArenaVector in Mir2Lir.\n\nChange-Id: I7867d60afc60f57cdbbfd312f02883854d65c805\n"
    },
    {
      "commit": "a5afcfc73141e5e378d79a326d02c5c2039fb025",
      "tree": "424add9558fb816c4f1d2f4edd128f4f2a086d9a",
      "parents": [
        "5a3399deaf448c8434d9ba0916ff799b1b791d95"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jan 29 20:06:46 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Feb 12 11:54:37 2015 +0000"
      },
      "message": "Be more lenient with 4 byte UTF-8 sequences.\n\nAccept 4 byte sequences and convert them into surrogate\npairs instead of expecting 2 separate 3 byte sequences\neach encoding one half of a surrogate pair.\n\nNote that in addition to supporting 4 byte sequences in\nstrings from JNI, we also tolerate them in dex files. This\nis mainly for consistency, and there\u0027s no need to claim any\nsort of official support.\n\nbug: 18848397\nbug: https://code.google.com/p/android/issues/detail?id\u003d81341\nChange-Id: Ibc98d29e59d98803e640f2489ea4c56912a59b29\n"
    },
    {
      "commit": "a1c9665c4659f4a8a3469bdb667a63a438725a17",
      "tree": "b93e59b0705aeebbbe9f402597687f24bbef0e30",
      "parents": [
        "076018addcb0f27d1a4ed9d1967a28bd5fb21230"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 06 13:18:58 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 06 14:29:43 2015 -0800"
      },
      "message": "Support map data in the backtrace data structure.\n\nThe backtrace data structure used to keep a pointer to the map data. Now\nthe code has the map data embedded in the structure and no pointers.\n\nBug: 19028453\nChange-Id: If7088a73f3c6bf1f3bc8cdd2bb4b62e7cab831c0\n"
    },
    {
      "commit": "3ef69b4692978daa620f2db2b1b057ef38c8a2f5",
      "tree": "c307bf3086e0f5a5a617225254107f17e42bc751",
      "parents": [
        "ac99db2751f1ac432a84739e7a4e011579296caf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 26 10:38:34 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 26 10:38:34 2015 -0800"
      },
      "message": "ART: Take apart stream output\n\nTo investigate bug.\n\nBug: 19028453\nChange-Id: Ib109caf2747f9adeef15dfc0f4708498e395dacf\n"
    },
    {
      "commit": "941c551acbc1fac40db89a723edc6b04d506d55c",
      "tree": "5ad00dfd62ad7004fd74ca5ba10923e493500a29",
      "parents": [
        "e81e1cd75b7dc6e44c5654e3ae329e86662ca02b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 10:38:19 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 10:38:19 2015 -0800"
      },
      "message": "ART: Only run addr2line in abort thread dumps\n\nAvoid addr2line overhead for SIGQUIT and other thread dumps.\n\nBug: 18933933\nChange-Id: I81bb291ede870d1d14b30bb0afdc47830ed14e8b\n"
    },
    {
      "commit": "1de532495b2669ce4fae9b9d20848d78d83813d8",
      "tree": "362fff8964f1f2cd52beaf5b7445cb117f9c2dc4",
      "parents": [
        "25d034cedea702c1f9ecb7a3a3ca977b07b9c3ba",
        "0a18df82f4dea95b7398f8c934341fccbf04eeee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "message": "Merge \"Clean up some #ifdefs.\""
    },
    {
      "commit": "0a18df82f4dea95b7398f8c934341fccbf04eeee",
      "tree": "125c8285763ffc6d9c00b27eaed6a7aad5b317ee",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "message": "Clean up some #ifdefs.\n\nOnly the Mac doesn\u0027t have POSIX clocks. (And it still doesn\u0027t, a decade\nlater.)\n\nglibc gained pthread_setname_np in 2.12.\n\nOnly the Mac doesn\u0027t have prctl.\n\nChange-Id: I218e409f7e133736e15fb68e8a254cdc5799d667\n"
    },
    {
      "commit": "00bd2da6ea009dedafc677229b485923f49ad61b",
      "tree": "a01999d4da5aec08f83fa468c0b01576a0aad94a",
      "parents": [
        "b9b26e1b036308e18113e37dfa5b81a64d1a7bd4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 09 15:05:46 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 09 15:05:46 2015 -0800"
      },
      "message": "ART: Fix prefix issues in Addr2line dump\n\nThe code incorrectly wrote the prefix twice for overly long lines.\n\nBug: 18933933\nChange-Id: I4bc7c2cde435bd966276ca2dae6a5d060aa2d0f3\n"
    },
    {
      "commit": "8e1cb91d2de6cacf388ca8550325fd8c21b1e58c",
      "tree": "927cef6c60ab2943b4f1692b71160a80dbfcc213",
      "parents": [
        "46af48acf4221a7f819d58dfffb576d0523ae285"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 20:11:09 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 09 09:49:46 2015 -0800"
      },
      "message": "ART: Use addr2line on the host for DumpNativeStack\n\nUse addr2line to attempt some better debug output for unexpected\nsignals in tests. This prints the demangled function name, source\nfile and line number (including inlined frames) when possible.\n\nBug: 18933933\nChange-Id: I4b98d0cc7bef5cdc63c7ee0882629b363778afe2\n"
    },
    {
      "commit": "9387c72720767b65b2ef27d6e922373d9ddc8d6c",
      "tree": "31def0a395d475b736ac607ca071e1cf65ec48bf",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 11:32:22 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 11:32:22 2015 -0800"
      },
      "message": "ART: Fix Mac build\n\nFix Mac build after change-id Id2710d2fd44b7c3b3335973a9288979a5793638b.\n\nBug: 18933933\nChange-Id: Ib0bb5082908d5dff33ef8f8a69d82c07406c176d\n"
    },
    {
      "commit": "628a61ac52a8a314e74ab445397add60b4e72a5b",
      "tree": "df78aa48e31e58669c6ae63ace7ba6bb532ec65d",
      "parents": [
        "4270e74152d8a7cd979ab5a92fe2a8f84adb8a42"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 07 22:08:35 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 08 09:35:31 2015 -0800"
      },
      "message": "ART: Pass ucontext to Backtrace in Stack Dump\n\nIn case of an unexpected signal on the host we dump the thread stack\nourselves. We have to pass the context given to the signal handler,\nas the signal handler is run on an alternate stack. Otherwise\nlibbacktrace can\u0027t dump the actual faulty part.\n\nBug: 18933933\nChange-Id: Id2710d2fd44b7c3b3335973a9288979a5793638b\n"
    },
    {
      "commit": "edfdaf37d5520a3c3a858b6b3fba4f759c60dadc",
      "tree": "4b08c00ba9bc427771413a758c669df56dbba62d",
      "parents": [
        "e652b62c581a3d68b1fc82e0b04e3a59dd633e52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 05 16:12:21 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 05 16:12:21 2014 +0000"
      },
      "message": "Revert \"Re-enable one thread dumping the native stack of another.\"\n\nThis reverts commit e652b62c581a3d68b1fc82e0b04e3a59dd633e52.\n\nChange-Id: Ida56d2c23849c1ede82a22100df402877256e270\n"
    },
    {
      "commit": "e652b62c581a3d68b1fc82e0b04e3a59dd633e52",
      "tree": "42cba0668fe1898cec136dc8a8b6f3f4ff45878c",
      "parents": [
        "c5454372f23da8248c84c29e251fb1b21c421a63"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 04 20:11:48 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 04 20:11:48 2014 -0800"
      },
      "message": "Re-enable one thread dumping the native stack of another.\n\nBug: 15446488\nChange-Id: I49d4d283f7b7d04b9d8c940313d6c5107ba9f99d\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": "83597d06cd4707b19c1985353418bd99f3aca6c7",
      "tree": "2901c93180f2003c2da6cf75eb56554aa8128a16",
      "parents": [
        "bdfbf86afde269ee3b38a6c928618333ffac13cf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 20 10:29:00 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 20 10:38:51 2014 -0800"
      },
      "message": "Re-enable DumpNativeStack.\n\nBug: 15446488\nChange-Id: Icdd0b90c8abe2a361a488fc1742c6896605ddc41\n"
    },
    {
      "commit": "4545d773856203eab6b026f66a005ee75b33e1c8",
      "tree": "11cbf98145d0da4386fc0034d42576f889b0777c",
      "parents": [
        "346bcbde27e4620ed1e7bce91728f22069a371f0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 10:34:29 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 10:40:50 2014 -0800"
      },
      "message": "Disable DumpNativeStack.\n\nCauses crashes on 004-ThreadStress, already was a no-op on the target.\nBug: 15446488\n\nChange-Id: I9a1541b894087337dafa3fdde00d845f3542b141\n"
    },
    {
      "commit": "d7576328811e5103e99d31f834a857522cc1463f",
      "tree": "5c20cecc09ca8786434b663cbfcad31e56c7ac72",
      "parents": [
        "b7ce2074ef43ff221cdec6ddba953f0b0c67447b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 24 22:13:45 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 06 19:47:07 2014 -0800"
      },
      "message": "ART: Fix valgrind\n\nAllow ValgrindMallocSpace wrapper for RosAlloc.Requires refactoring,\nas ValgrindMallocSpace was bound to the signature of DlMallocSpace.\n\nAlso turn of native stack dumping when running under Valgrind to\nwork around b/18119146.\n\nRitzperf before and after\nMean               3190.725   3082.475\nStandard Error     11.68407   10.37911\nMode               3069       2980\nMedian             3182.5     3051.5\nVariance           16382.117  12927.125\nStandard Deviation 127.99264  113.69751\nKurtosis           1.1065632  0.3657799\nSkewness           0.9013805  0.9117792\nRange              644        528\nMinimum            2991       2928\nMaximum            3635       3456\nCount              120        120\n\nBug: 18119146\nChange-Id: I25558ea7cb578406011dede9d3d0bdbfee4ff4d5\n"
    },
    {
      "commit": "78a3233313260665fe82ba56257855e043bca3d4",
      "tree": "46622bf088b3f30d2c6d8a5b548519137c88c867",
      "parents": [
        "fe50a0f644bf57a92612d08ad21dc4ea5a2f652a",
        "277ccbd200ea43590dfc06a93ae184a765327ad0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "message": "Merge \"ART: More warnings\""
    },
    {
      "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": "e6ac4fd428a4897951aeb4cb3b45f1665276c511",
      "tree": "c8456425dcd515de5d5299c61f2254cc70acaa7c",
      "parents": [
        "457e6170ac55e4cbede79a23b021422ef4ccd92f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 04 13:03:29 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 04 13:13:48 2014 +0000"
      },
      "message": "Try to fix mac build.\n\nChange-Id: I6c7faa1c80bc7c250d14859d51c910d50b7fb562\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "c0d8229898c44c0f604f08a5df1de83ff56c18fd",
      "tree": "13b150e68e806204c547e04bc071246c06199c37",
      "parents": [
        "c70535b4f9f1ff3e3da451734bb7d9601012ccc1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 23 10:38:30 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 11:40:16 2014 -0700"
      },
      "message": "ART: Better IllegalAccessException message\n\nBug: 17618578\nBug: 17614623\nChange-Id: I0e3f15e676acd6ed5844fc86e136f75cc335372d\n"
    },
    {
      "commit": "76433275dbe39e5ced1c223b006d1b900b1937f6",
      "tree": "a72c101defa86ceff8b633cf2eaa606c87f783eb",
      "parents": [
        "88adf36315237947d3a5d10b28fdf8b9da7794a4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 14:32:37 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 19:54:39 2014 -0700"
      },
      "message": "Optimize get/set reflection performance\n\nSpeedups mostly from reducing how often access checks are needed,\nand adding more inlining, and adding templates.\n\nField_getInt from ~850ns -\u003e 350ns.\nField_setInt from ~900ns -\u003e 370ns.\n\nBug: 14063288\n\n(cherry picked from commit ffc788cb7b5b9f53734d7bb8af2d5e45d885546b)\n\nChange-Id: I2441581ff3478c6ae43b6aa49939ff3f07555ec8\n"
    },
    {
      "commit": "3c13a794845e0cf7887e33b2ec20de7e6ba85f8f",
      "tree": "ab9a9a426a371de0c32e48a85fdda44a321a06a0",
      "parents": [
        "5cdd0734d2f79eedc530f5f1e876cd2110e29c86"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 20:56:04 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 23:43:07 2014 -0700"
      },
      "message": "ART: Only allow the zygote to create the global boot image\n\nDo not allow arbitrary processes, even when root, to write the\nboot image in /data/dalvik-cache.\n\nBug: 17478752, 17510489, 17439961\nChange-Id: Iba2b74be6d0752f4221f4ff5ee295b45a34cb2e1\n(cherry picked from commit 33c36d4f22ab6a5e61eb47b654deaf647c34e49c)\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"
    }
  ],
  "next": "68b56858367e29461ae290fd797443a1ef6d8005"
}
