)]}'
{
  "log": [
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "16b21cd4874be8550f43987b0bd2e4ba8ba3ca42",
      "tree": "475aeec7476e039442009ca36c1ddde1c9cdbd47",
      "parents": [
        "ca11dc008457e1596554eb9b1b77c823ae9dcf54"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Fri Aug 12 09:37:02 2016 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Fri Aug 26 14:31:26 2016 +0100"
      },
      "message": "Tracking java.lang.reflect.Executable changes\n\nAdded a method to Class: total vtable entries increases\nby one.\n\nHandling knock-ons of introducing Executable into the\nclass hierarchy above AbstractMethod.\n\nRearranging java_lang_reflect_*.cc code to track libcore\nchanges that reduce duplication between Constructor / Method\n/ Executable and AbstractMethod and track the OpenJDK 8\nmore closely.\n\nBug: 28666126\nChange-Id: I6b5c476a14b8ea25556c35448431de744519b6c2\n"
    },
    {
      "commit": "3aaa37bba53d6df0265793de48b4b0b57327e57a",
      "tree": "ce795803f0f10003eb3d96d9348da620937675b3",
      "parents": [
        "792c98bb773c8c2390f9cbf774f85be9d9a75332"
      ],
      "author": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Fri Jul 29 14:46:37 2016 -0700"
      },
      "committer": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Tue Aug 23 15:12:26 2016 -0700"
      },
      "message": "creating workflow for mirror::String compression\n\nAll-ASCII String characters are stored in 8-bit blocks\ninstead of 16-bit. The compression has not taken place, but all\nworkflow are in the code already (changing kUseStringCompression in\nstring.h file to TRUE will enable the feature)\n\nNotes: Feature works on interpreter only without optimizing\n\nTest art: m ART_TEST_INTERPRETER\u003dtrue ART_TEST_OPTIMIZING\u003dfalse\n          test-art-host\n\nAlso tested with String tests from libcore/:\n1. libcore.java.lang.StringTest\n2. libcore.java.lang.StringBufferTest\n3. libcore.java.lang.StringBuilderTest\n4. libcore.java.lang.OldStringTest\n5. libcore.java.lang.OldStringBufferTest\n\nMemory improvement is 33% (from 6.03% to 4.03%, total String memory\nfrom all apps per total memory of all apps) measured on Angler\nwith Hprof tools\n\nBug: 31040547\nChange-Id: I9cc92c265ebf1305fc06b5fc33efd83797660cce\n"
    },
    {
      "commit": "9c07ab332b8ebbcb1586c311bfcb75e19b8a35b4",
      "tree": "26a300b803f77e64c17e3d239a1880a4c5960666",
      "parents": [
        "6670bd2098264d4c4e19750ab4741121da7ee54b",
        "bf44e0e5281de91f2e38a9378b94ef8c50ad9b23"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 19 17:33:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 19 17:33:03 2016 +0000"
      },
      "message": "Merge \"ART: Implement a fixed size string dex cache\""
    },
    {
      "commit": "bf44e0e5281de91f2e38a9378b94ef8c50ad9b23",
      "tree": "bb6e65a3434806dc58f286ee75ad3b78ba9d6c36",
      "parents": [
        "d99565069c64fefc069005286de04599dc2619b8"
      ],
      "author": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 10:37:42 2016 -0700"
      },
      "committer": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 16:18:36 2016 -0700"
      },
      "message": "ART: Implement a fixed size string dex cache\n\nPreviously, the string dex cache was dex_file-\u003eNumStringIds() size, and\n@ruhler found that only ~1% of that cache was ever getting filled. Since\nmany of these string dex caches were previously 100,000+ indices in\nlength, we\u0027re wasting a few hundred KB per app by storing null pointers.\nThe intent of this project was to reduce the space the string dex cache\nis using, while not regressing on time that much. This is the first of a\nfew CLs, which implements the new fixed size array and disables the\ncompiled code so it always goes slow path. In four other CLs, I\nimplemented a \"medium path\" that regresses from the previous \"fast path\"\nonly a bit in assembly in the entrypoints. @vmarko will introduce new\ncompiled code in the future so that we ultimately won\u0027t be regressing on\ntime at all. Overall, space savings have been confirmed as on the order\nof 100 KB per application.\n\nA 4-5% slow down in art-opt on Golem, and no noticeable slow down in the\ninterpreter. The opt slow down should be diminished once the new\ncompiled code is introduced.\n\nTest: m test-art-host\n\nBug: 20323084\n\nChange-Id: Ic654a1fb9c1ae127dde59290bf36a23edb55ca8e\n"
    },
    {
      "commit": "2ca5828b08b1c4184d802c90585b48dbfd3efb3d",
      "tree": "a7cd7ac14eecd6b3b37aad9c5da6a4f8f0c3a6eb",
      "parents": [
        "c6efcaa17319e9f81def246c277fec523f5b85e0"
      ],
      "author": {
        "name": "Dmitriy Filchenko",
        "email": "dmitriyf@google.com",
        "time": "Wed Aug 17 17:58:08 2016 -0700"
      },
      "committer": {
        "name": "Dmitriy Filchenko",
        "email": "dmitriyf@google.com",
        "time": "Thu Aug 18 01:41:27 2016 +0000"
      },
      "message": "Remove unused include.\n\nBUG: 29824203\n\nChange-Id: Iea74f7b166c3e81c0d00c92442f27e162631e5ae\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "e01e3644205c3644546889237c20185391a0092e",
      "tree": "413fcf279b415a305605a601297e3856f13a2948",
      "parents": [
        "de4cf16f467b531373560ca6eb785f0f36606aae"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:06:04 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:09:41 2016 -0700"
      },
      "message": "ART: Add pointer-size template to some reflection functions\n\nThe unstarted runtime may run code for a different pointer size,\neven when no transaction is active (e.g., during startup). To\nretain performance when the runtime is up and executing under\nnormal conditions, add a template parameter and use sizeof(void*)\nin places where it is adequate.\n\nFor maintainability, it is necessary to drop the default for\nthe transaction template parameter. Implicit conversions from\nbool to size_t may lead to incorrect code and hard to diagnose\nproblems. So instead ensure that all callers must give all\ntemplate parameter values.\n\nTest: m test-art-host\nChange-Id: I3076883422c8553ede4de5642409c5684a5a9aa8\n"
    },
    {
      "commit": "65ad9b3516c4f4bc4e7abf5c6e065a675cf024d8",
      "tree": "7650ae342ce201d498526609d506df7f52783d3a",
      "parents": [
        "a92938a17b75eed3213030faaff9cfb321d47f37",
        "bb268b14da040c5df27a413426aa2baab602ed15"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 21 10:33:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 21 10:33:13 2016 +0000"
      },
      "message": "Merge \"Clean up Class::FindStaticField().\""
    },
    {
      "commit": "09b710c6e3e496edb2ff0312eb59d10ba53f3922",
      "tree": "59e872a516d8012b704468afd915889d4efa1cbf",
      "parents": [
        "b55ad7c146fbb7ca5995ff54dc655241fc54a3b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 14 16:50:52 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 14 16:53:55 2016 -0700"
      },
      "message": "ART: Fix build break\n\nBuild break introduced by mismatch from merges.\n\nBug: 28251566\n\n(cherry picked from commit a472e4fd6260740af230bab7be5740d8c7bac360)\n\nTest: m test-art-host\nChange-Id: I83a333dd7394af630c5a79153d4838eb3a910714\n"
    },
    {
      "commit": "b55ad7c146fbb7ca5995ff54dc655241fc54a3b3",
      "tree": "e7cd025ff1203211f54f8a9baf79b1f92bad6b58",
      "parents": [
        "f18f3cb337161b2cb651cd38642d6f9c06266728"
      ],
      "author": {
        "name": "Philip Cuadra",
        "email": "philipcuadra@google.com",
        "time": "Tue Jul 12 16:37:40 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 14 16:53:10 2016 -0700"
      },
      "message": "Add API for getting location of odex or oat file\n\nAdd an API for getting the file path of odex or oat file given a dex\npath.\n\nBug 28251566\n\n(cherry picked from commit b4827ace453b9280060a826e8f22cc8c9b6edb7d)\n\nChange-Id: Ibebaa20f15d8135b25d9eb5927b7979801ebf0b2\n"
    },
    {
      "commit": "e8508094c322a232b89bc835c59ae24c82d735b4",
      "tree": "2716e34943cdb409d64aa05c945437db97562c4c",
      "parents": [
        "0599c5976ada2095142b671e5ad4d7698313849b",
        "03c0134ef033853ce0526cbe8fb7a61a780e5de4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 13 00:35:48 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 13 00:35:48 2016 +0000"
      },
      "message": "Merge \"Update the get_process_name call.\""
    },
    {
      "commit": "0599c5976ada2095142b671e5ad4d7698313849b",
      "tree": "f5987008eecb5f751f0591f706ea843d402989d8",
      "parents": [
        "058d934b429513380218b029fc2ee562c7f47696",
        "d1472a27e856ec68ab5a27abaaebe9c61d91d343"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 12 18:32:29 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 12 18:32:29 2016 +0000"
      },
      "message": "Merge changes Iafd12677,I40595d15\n\n* changes:\n  profile_changed should not effect GetBestOatFile.\n  Make OpenImageSpace static and ArtFileName internal.\n"
    },
    {
      "commit": "03c0134ef033853ce0526cbe8fb7a61a780e5de4",
      "tree": "5d1c09c6e97d2e42bc08955041bd8d7905a3c23a",
      "parents": [
        "dadc075149eb322bf28ba35a75a70157147c1c30"
      ],
      "author": {
        "name": "Dmitriy Filchenko",
        "email": "dmitriyf@google.com",
        "time": "Mon Jul 11 17:41:28 2016 -0700"
      },
      "committer": {
        "name": "Dmitriy Filchenko",
        "email": "dmitriyf@google.com",
        "time": "Mon Jul 11 17:41:28 2016 -0700"
      },
      "message": "Update the get_process_name call.\n\nBUG:29824203\nTest: test-art-host\n\nChange-Id: Iba75b48b836b6ec249e6c77b9895ab3575f1027b"
    },
    {
      "commit": "de9007f60259e9099030cd7a818dc6357a856703",
      "tree": "8f4b2bb6ed017ef99b5162a8e7e278cf63b800c6",
      "parents": [
        "f79c0e6f74dfaf7ca5ba3fbe1c903abd65086a1a"
      ],
      "author": {
        "name": "Oleksiy Vyalov",
        "email": "ovyalov@google.com",
        "time": "Tue Jun 21 16:21:37 2016 -0700"
      },
      "committer": {
        "name": "Oleksiy Vyalov",
        "email": "ovyalov@google.com",
        "time": "Mon Jul 11 14:35:42 2016 -0700"
      },
      "message": "Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable.\n\nEnabled Yama security may prevent non-privileged debugger from\nattaching to the app. However, if app is marked is debuggable\nthen it should acceptable to allow debugger with arbitrary pid\nto connect the app.\n\nBug: 29549463\n\nChange-Id: I50c79dbca272dc473e489cc61471628e2fdc4a03\n(cherry picked from commit e21145f6625a7faa939c1ca17fb95285aa245c16)\n"
    },
    {
      "commit": "d1472a27e856ec68ab5a27abaaebe9c61d91d343",
      "tree": "7a3aa99465a6b1f5563bdced3af009bd628bfacd",
      "parents": [
        "4c7f1933cb5d5cdd43741a5e352d662187f81ca4"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Apr 15 15:18:56 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jul 07 16:13:00 2016 -0700"
      },
      "message": "profile_changed should not effect GetBestOatFile.\n\nThis change moves the check for whether a profile changed from\nGetBestOatFile to GetDexOptStatus, because profile_changed should not\neffect what oat files are loaded.\n\nTest: OatFileAssistantTest.ProfileOatUpToDate\nChange-Id: Iafd12677f20d2844809337d1d83b688f17461cc0\n"
    },
    {
      "commit": "bb268b14da040c5df27a413426aa2baab602ed15",
      "tree": "04e2fbfa54bc278170d361f97781b066b4abe46a",
      "parents": [
        "d80c5d2368b4455c452e8b4fe2d8511fe1c0430c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 30 15:52:56 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 04 17:44:17 2016 +0100"
      },
      "message": "Clean up Class::FindStaticField().\n\nPreviously we have wrapped the class pointer in a Handle\nfor the GetDirectInterface() call but we didn\u0027t wrap the\nDexCache pointer. Since GetDirectInferface() call from\nthis function cannot cause thread suspension anyway, fix\nthe inconsistency by using raw pointers where possible\nand asserting that no thread suspension takes place.\n\nTest: Run standard ART test suite in gcstress mode.\nChange-Id: Ie4c6101aabd6fa68733e4920db277f835793d943\n"
    },
    {
      "commit": "be84b59e802d9176a9b60b040e0be6bda54e958a",
      "tree": "9a4fd41bef42a5487581244f74c4c41f6abd2730",
      "parents": [
        "9822f6b81f7e8cb31d6ff8a1b60fe15fa9d439a8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 23 17:09:13 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 28 14:01:25 2016 +0100"
      },
      "message": "Remove the old obsolete profiler\n\nBug: 24698874\nTest: all the existing run-tests pass.\nChange-Id: I56d25c75541275512a64ae5708569461b875df9c\n"
    },
    {
      "commit": "c92a7a14ce44c4bb7e63e4c447a008b558bc0bca",
      "tree": "c48ebef140dd292cc2cc29726045c03f5b2b02ea",
      "parents": [
        "6c54dfb86a6cd6f63a9518893562595460b480ad"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 06 11:09:20 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Jun 07 20:04:02 2016 -0700"
      },
      "message": "Wrap certain exception types when loading an erroneous class.\n\nBug: 28787733\n\n(cherry-picked from commit 7c8aa8357196781c811a73d2eb66aaaa1681ce36)\n\nChange-Id: Iea55486c4b95ee16e1f19c8ba2d24c18b9100c97\n"
    },
    {
      "commit": "f284d448e3edd428b6ade473d0993028638b2064",
      "tree": "e24f57f952f4e6c850ec910de3361aef6340727a",
      "parents": [
        "3f432d5a7c184b7580bd5aba27158c1455c328ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 02 11:48:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 02 18:03:41 2016 -0700"
      },
      "message": "Hold dex caches live in class table\n\nPrevents temporary dex caches being unloaded for the same dex file.\nUsually this is OK, but if someone resolved a string in that dex\ncache, it could leave stale pointers in BSS. Also it can use extra\nmemory in linear alloc if we allocate dex cache arrays multiple\ntimes.\n\nBug: 29083330\nChange-Id: Ia44668f013ceef1f5eb80f653a48d0f8004548c9\n"
    },
    {
      "commit": "06e3f4fa00ea9f71c4675f90e250e59b6d9ba36f",
      "tree": "f7b88bb422a27a38971de6944e77f6ce8a8ce180",
      "parents": [
        "01be68100e96a44b4ff8cb4cb3c9baa346ff048d"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 15:42:37 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 17:33:11 2016 -0700"
      },
      "message": "Base isDexOptNeeded result on OatFileAssistant::IsUpToDate.\n\nSo that it is consistent with when ART will try to run dex2oat.\n\nBug: 28826195\n\n(cherry picked from commit 10267549f5ea8acc07ea6163a87c9b4b8ea62be4)\n\nChange-Id: I5c891dc1a5a42ff7e0a4d3e66e9ecca37da743f2\n"
    },
    {
      "commit": "278a80b59f570d72e03656b4a561d08c54a73007",
      "tree": "21c8256f52efc4b6f6c3a168984b4b8d2761b1d1",
      "parents": [
        "8f2ea28b2504dcd86dc3bbcea4a5a800eede9f5b"
      ],
      "author": {
        "name": "Oleksiy Vyalov",
        "email": "ovyalov@google.com",
        "time": "Wed Mar 30 20:27:00 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 17 14:01:10 2016 -0700"
      },
      "message": "ART: Return native debuggable status of the app.\n\nBug: 27942453\n\n(cherry picked from commit dfbbeef151d52ec9c5bbc9f12449d4c74b8ec19e)\n\nChange-Id: Ie474f4d830237d015436158829264b8bdf0a7194\n"
    },
    {
      "commit": "e5a5aaae4bca5d649ac95ae33b92d39d91cbe527",
      "tree": "29462afecc2a796e20ba939ddef8e0f55f4c0538",
      "parents": [
        "cf79a4d5512ea9d6a5163207a823174e5cbe08f1",
        "36a95bcf9de9f90b49eee6c18c9b3b57487d806a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 10 18:05:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 18:05:16 2016 +0000"
      },
      "message": "Merge \"Make all java.lang.reflect.Constructor methods handle proxies.\""
    },
    {
      "commit": "cf79a4d5512ea9d6a5163207a823174e5cbe08f1",
      "tree": "c4dbc661af5fb151902ac186f8bff7e6a6cb5361",
      "parents": [
        "e16259f9dfef36728ac50d6ec7b4444fa8ecb772",
        "90671be8ca352f96eaf4f3109334f2f516268201"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 10 17:47:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 17:47:38 2016 +0000"
      },
      "message": "Merge \"Add ability to see if a dex file is backed by an oat file.\""
    },
    {
      "commit": "e16259f9dfef36728ac50d6ec7b4444fa8ecb772",
      "tree": "c672a02c9df08eb21f62ff83002e31e3bf3c0ba2",
      "parents": [
        "36a94ab70d4ae1ce239022a5841abf3ffe1196e3",
        "52c9da0925c67265bf353f5a66b7cb5541a88046"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 10 17:17:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 17:17:46 2016 +0000"
      },
      "message": "Merge \"Fix issue with Constructor proxies.\""
    },
    {
      "commit": "90671be8ca352f96eaf4f3109334f2f516268201",
      "tree": "a843ca882e30f7e104a6061d62dcb4a2d244f881",
      "parents": [
        "36a94ab70d4ae1ce239022a5841abf3ffe1196e3"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 22 14:00:06 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 10 09:48:42 2016 -0700"
      },
      "message": "Add ability to see if a dex file is backed by an oat file.\n\nNative support for new DexFile.isBackedByOatFile.\n\nPart of a multi-project change.\n\nBug: 26880306\n\n(cherry-picked from commit 93a66cc779898d46c620e5d9c8bc71e2a71f6610)\n\nChange-Id: I8843d13d961b24a7caec549abe630524d734e78e\n"
    },
    {
      "commit": "52c9da0925c67265bf353f5a66b7cb5541a88046",
      "tree": "4c6b36d9ee344c7d7b4953d6cd380f8ca53494d8",
      "parents": [
        "266f2d4d51a18a703b2d4fbfedc63eb1baaf3ffb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 09 15:31:18 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 10 09:23:08 2016 -0700"
      },
      "message": "Fix issue with Constructor proxies.\n\nBug: 28659889\nChange-Id: I4307916c79e7b56608c3ff5c9bbe83e175254f28\n"
    },
    {
      "commit": "8943c1dc59da4dd182fb906bbe111d3b598b9fdb",
      "tree": "2f9a061954c1961d5a0e5849b95bdc4797f3baf5",
      "parents": [
        "d8cd1c83f9fe7637494f7a65807289041d2fb7d3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon May 02 13:14:48 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue May 10 14:00:09 2016 +0100"
      },
      "message": "DexFile: Add an API to query oat file status.\n\nAdds DexFile.getDexFileStatus(path), which returns an opaque,\nhuman-readable string representation of the oat file status. This\nrepresentation isn\u0027t guaranteed to be stable and can change from\nrelease to release.\n\nbug: 27494108\n\n(cherry picked from commit cd7e7f78b8e97c1f6419f3f44e0d5fdc6eddfdc6)\n\nChange-Id: If6997f7d28d022e118ffea1eec6183841577a637\n"
    },
    {
      "commit": "36a95bcf9de9f90b49eee6c18c9b3b57487d806a",
      "tree": "bb3561b504a38bcd4fba91df147c49d77538fc2c",
      "parents": [
        "266f2d4d51a18a703b2d4fbfedc63eb1baaf3ffb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 09 16:25:11 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 09 16:56:31 2016 -0700"
      },
      "message": "Make all java.lang.reflect.Constructor methods handle proxies.\n\nBug: 28676926\nChange-Id: If5e7f1c886334ce0ea2e3e2b64616eddf69c9377\n"
    },
    {
      "commit": "a96f316f6f0526c91c6c102a267df6b1e4df39da",
      "tree": "308f1886e026df0ba6aa816b107172637f11984a",
      "parents": [
        "a6513729ae2ad0d2f9dd21d77ea6cf9ed9fa6eef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 03 14:04:02 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 03 14:04:02 2016 +0100"
      },
      "message": "Put a handle on the String object.\n\nOtherwise, a GC could occur in the loop below, and the String\nbe moved (note that there was already one for the Class object to\nprotect for that same problem).\n\nbug:27561834\nChange-Id: I5ad0e0cac148bc6e028d05eff67f18932ec46ea8\n"
    },
    {
      "commit": "97cbc9206e9adc473a90650ebdb5d620f517ff04",
      "tree": "bef15a43a1c3f3dc2639f156aeea40d95763258e",
      "parents": [
        "85e47976a483844177eb486d6e501fa070fbe6e2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 15 16:16:35 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 28 16:12:33 2016 +0100"
      },
      "message": "Allow the framework to register sensistive threads to the runtime\n\nBug: 27865109\nBug: 28065407\n\n(cherry picked from commit 8fff24953c78bd58f3a42ac83b340b90e7e7228a)\n\nChange-Id: I82094e46a2fd12617e091d98831193f9ff56d26b\n"
    },
    {
      "commit": "bb661c0f0cb72d4bbfc2e251f6ded6949a713292",
      "tree": "4fe7e66f3385b1955934d3ec6f02e00bde6e13b8",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Mon Apr 04 16:27:32 2016 +0100"
      },
      "committer": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Fri Apr 22 13:33:30 2016 +0100"
      },
      "message": "Refactor use of __ANDROID__ macro\n\nWe use the __ANDROID__ macro, which is provided by the toolchain, in\nnumerous places. This patch refactors the usage of this by defining a\nnew macro, ART_TARGET_ANDROID, that is being passed during build to\nART_TARGET_CFLAGS in Android.common_build.mk on the same line as\nART_TARGET. The codebase currently assumes that the existence of the\n__ANDROID__ macro implies that we are compiling art for an android\ntarget device. This is because, currently, target builds are compiled\nwith target toolchains that provide the macro, while host toolchains\ndo not.  With this change this assumption is still preserved. However,\nin a future patch we will add the ability to compile art for a linux\ntarget, and in that case the ART_TARGET_ANDROID macro won\u0027t be passed\nanymore.\n\nChange-Id:  I1f3a811aa735c87087d812da27fc6b08f01bad51\n"
    },
    {
      "commit": "715fdc2c99f688f97c684978632f311a284ba43c",
      "tree": "a45838f4788a04ec18332bf386e8eaf2daa07632",
      "parents": [
        "a584db5460a31198bf621cdacf5bc304a984efa4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 18 17:07:30 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 20 10:20:45 2016 -0700"
      },
      "message": "ART: Add some reflection cutouts\n\nAdd Class.getInnerClassFlags and Method.invoke to unstarted runtime.\n\nAllows to compile-time initialize:\n* android.net.NetworkInfo\n* android.net.wifi.WifiInfo\n\nBug: 27265238\n\n(cherry picked from commit b3ffbe32b78c18739736fc998d65430b46c510e5)\n\nChange-Id: I3e267519acf14b08c687f1e831e2027d37158767\n"
    },
    {
      "commit": "f38a6618b453b76a3370bbf6b351971687099388",
      "tree": "b958345de0a1b0d789985a74df6e1b9ca4e106dd",
      "parents": [
        "336dd6a0989dafb356be5f689028d983b0931335"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 11 08:42:26 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 12 14:18:51 2016 -0700"
      },
      "message": "ART: Flag to fail thread creation\n\nAdd a flag to mark when the zygote is not allowed to create threads.\n\nBug: 27248115\nBug: 28149511\n\n(cherry picked from commit 415d8070e37c20dfb7e6dc37e74fdb5fffc2022e)\n\nChange-Id: I1dc3620d9e7d0054c672b993d89459fc4b353dfc\n"
    },
    {
      "commit": "2c6760a0eb1e05d3a89a6cca9d2746da3d547e9e",
      "tree": "f82d6e7594a8b688c3db6494822a907a1f1ef488",
      "parents": [
        "7fa1f92cbf98c40baa00c6fb9331ec7ac72abfa8",
        "1133db79350060158f99210c56f111c6dad43563"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 07 18:06:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 07 18:06:14 2016 +0000"
      },
      "message": "Merge \"Remove AnnotationAccess and its remaining uses.\""
    },
    {
      "commit": "6039e5662507e42896084e561fa546b432698ee6",
      "tree": "d8a4b6260cc134fcdf7f4a24d89d062dae7f7a61",
      "parents": [
        "dc148d24cc11845036063a2876c9bfef03d00ce5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 05 18:18:43 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 06 13:43:54 2016 -0700"
      },
      "message": "ART: Add getDeclaredConstructor cutout for unstarted runtime\n\nIn the vein of getDeclaredMethod and getDeclaredField. Refactor\ncode from java_lang_Class to share code.\n\nAllows to compile-time initialize:\n* sun.security.x509.AVAKeyword\n* sun.security.x509.X500Name\n\nBug: 27265238\n\n(cherry picked from commit f72f19fac0016499d33fd75b0463d0128a58a9f4)\n\nChange-Id: I075c1b11f3408f5b31e4f84140a24fd8d3eaa17e\n"
    },
    {
      "commit": "1133db79350060158f99210c56f111c6dad43563",
      "tree": "c84b4ae2df13a32539645c0904f08c874c20ae31",
      "parents": [
        "a07be75830af60ce50aba357e8de066e849aa21c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 04 19:50:14 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 04 19:50:14 2016 -0700"
      },
      "message": "Remove AnnotationAccess and its remaining uses.\n\nArt side of this change. Adds a test to ensure annotations not marked\nfor runtime retention can\u0027t be seen at runtime.\n\nBug: 27912552\nChange-Id: I078069b7b3cb72bfe7d0b9ea61e527fee04d56a3\n"
    },
    {
      "commit": "85a098af5fc8d2dd0e39d61c9f93fc6257d631c5",
      "tree": "20e81103cbc6043aa99b876fc358b7bab95ce4dc",
      "parents": [
        "19a4784ce1b9c6a0b3d3cdb91a182baa7adbb946"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 31 13:30:53 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 01 09:37:05 2016 -0700"
      },
      "message": "ART: Better support for arraycopy in unstarted runtime\n\nExtend the System.arraycopy() cutout in the unstarted runtime\nto support arrays with differing component types.\n\nAdd tests.\n\nBug: 27805718\nChange-Id: Iaacd95a372e9bfa26e9055a06b0d8f0335b8d6d1\n"
    },
    {
      "commit": "86a785d23ba3956b78c33aa3b623df4b6ec8b901",
      "tree": "cf683359bd105366a4f05bb0761396ffea0ad5b2",
      "parents": [
        "87ad82eb1e085ccc6ed3ec54945937582334dbbc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 30 17:19:48 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 31 11:24:34 2016 -0700"
      },
      "message": "ART: Add support for DexFile compiler filter function\n\nAdd support for getting a non-profile-guided version of a given\ncompiler filter.\n\nBug: 27921071\n\n(cherry picked from commit fd97429f258acde6ee24a6f74c9050b2343e40cd)\n\nChange-Id: I54735b61732e6a5c9dc62425d04bc740dd365083\n"
    },
    {
      "commit": "c38be810ce939267c004f72b3cf0b9339414f0f9",
      "tree": "7aef65e547be4dad5e8282d5fda2c36520ae8396",
      "parents": [
        "ef94b5484a75902404e975cba55a7e825941b2fa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 23 15:03:46 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 29 11:04:51 2016 -0700"
      },
      "message": "ART: Update DexFile for compiler-filter pass-down\n\nUpdate getDexOptNeeded. Add implementations for isValidCompilerFilter\nand isProfileGuidedCompilerFilter.\n\nBug: 27689078\n\n(cherry picked from commit 1d23d43e29e41adb3d504332c8833acaacb49e50)\n\nChange-Id: I06b9d75f58c59cb07ef5170f784ea6745168efaa\n"
    },
    {
      "commit": "29d38e77c553c6cf71fc4dafe2d22b4e3f814872",
      "tree": "92f34f589af205af56189d221ded293234935c26",
      "parents": [
        "2e89e901b9f303549f3ba64e45d87292e9c986c8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 23 15:31:51 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 23 11:30:29 2016 -0700"
      },
      "message": "Revert \"Revert \"Use compiler filter to determine oat file status.\"\"\n\nThis reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d.\n\nAdd an option to change what OatFileManager considers up-to-date.\nIn our tests we\u0027re allowed to write to the dalvik-cache, so it\ncannot be kSpeed.\n\nBug: 27689078\nChange-Id: I0c578705a9921114ed1fb00d360cc7448addc93a\n"
    },
    {
      "commit": "845e5064580bd37ad5014f7aa0d078be7265464d",
      "tree": "1e621756ba6a1fd345f2fb468eed88cdc81886e7",
      "parents": [
        "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "message": "Revert \"Use compiler filter to determine oat file status.\"\n\nBots are red. Tentative reverting as this is likely the offender.\n\nBug: 27689078\n\nThis reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931.\n\nChange-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a\n"
    },
    {
      "commit": "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931",
      "tree": "d8624bb85016a3301b473b6503324db4d4cf24a3",
      "parents": [
        "48e722432bb6e19df7bba02427e4a707e671af06"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Mar 18 15:05:30 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 22 15:38:36 2016 -0700"
      },
      "message": "Use compiler filter to determine oat file status.\n\nRecord the compiler filter in the oat header. Use that to determine\nwhen the oat file is up-to-date with respect to a target compiler\nfilter level.\n\nNew xxx-profile filter levels are added to specify if a profile should\nbe used instead of testing for the presence of a profile file.\n\nThis change should allow for different compiler-filters to be set for\ndifferent package manager use cases.\n\nBug: 27689078\nChange-Id: Id6706d0ed91b45f307142692ea4316aa9713b023\n"
    },
    {
      "commit": "f8cb1781a4e4be5df1f845206f7b37ed89092b64",
      "tree": "ce2c717d6a99a18f66deace5575357c746f4e2ea",
      "parents": [
        "162629ee8ac0fee2df0c0cdec27dff34bc6f0062"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 18 18:45:41 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 21 11:41:33 2016 -0700"
      },
      "message": "Move process state into runtime\n\nClean up.\n\nBug: 27420435\n\n(cherry picked from commit f8484c8b55f4b423048f94dfabbe44110a039a9b)\n\nChange-Id: Ia20781ee36e6a31c88ca41d3866b26813cff434d\n"
    },
    {
      "commit": "e9e98f12eb5dbe81db90d56c65c8872cabaa855d",
      "tree": "ac547775549ac52c77739b6c6d7f496bf3fa288d",
      "parents": [
        "7f3397bec51bdeb7dfe76a17ea9d3279ddf79345",
        "f448016e70fa91269d3750384aab1ac98d7896fd"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 17 20:24:29 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 17 20:24:30 2016 +0000"
      },
      "message": "Merge \"Do not JIT boot image during native-debugging (keep AOT code instead).\""
    },
    {
      "commit": "f448016e70fa91269d3750384aab1ac98d7896fd",
      "tree": "9bb4414c763d13c2e178472d3bf1ee73bce97392",
      "parents": [
        "8e57978b5f330a322f05644c2db7fa8ce89b1b46"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 16 00:06:24 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 17 11:54:49 2016 +0000"
      },
      "message": "Do not JIT boot image during native-debugging (keep AOT code instead).\n\nThe performance impact is currently significant and being able\nto debug framework is not our primary goal for native debugging.\n\nChange-Id: I3366c2a6317004f9dd16700b271a6c9b974f1c6e\n"
    },
    {
      "commit": "db1f7dac02f6dcecac3e032f10abbcdbf3cf4331",
      "tree": "ce075b131513e65de9354001a37ba90f3a2b6787",
      "parents": [
        "e848c29bb35d91f23bb6f52712aa7f2dff342ea0",
        "a1425a1c9c98ae3fc772834933a5d55566fb5699"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 17 01:03:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 17 01:03:54 2016 +0000"
      },
      "message": "Merge \"ART: Remember whether the cache was pruned\""
    },
    {
      "commit": "8e57978b5f330a322f05644c2db7fa8ce89b1b46",
      "tree": "0e61b8eda07900e22f4fa1e19795485460677b2f",
      "parents": [
        "03fdc90721a1874a4aef9adfd8fc1b9b4b4bc249",
        "346dc993615487e9c645a515dfcbf9a6488f36fe"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 16 17:54:52 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 16 17:54:52 2016 +0000"
      },
      "message": "Merge \"Remove --native-debuggable compiler option.\""
    },
    {
      "commit": "346dc993615487e9c645a515dfcbf9a6488f36fe",
      "tree": "adf8006d2786c31cae282161491ab7c8f2cc3b2b",
      "parents": [
        "fbc61e19578d281d05728bcd120e1ace57c2fbd8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Mar 13 22:00:07 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 16 17:24:17 2016 +0000"
      },
      "message": "Remove --native-debuggable compiler option.\n\nCheck if both --debuggable and --generate-debug-info are set instead.\n\nHistory: I have recently added the --native-debuggable flag to control\nwhether extra stack maps are generated in order to produce accurate\nnative line number mapping of all generated code. I didn\u0027t want to\ninclude it into --debuggable since we compile boot.oat as debuggable\nand so it would be affected.\n\nOn second thought, it would have been reasonable to generate the extra\nstackmaps only if both --debuggable and --generate-debug-info are set,\ninstead of introducing another compiler flag. This means we do not\naffect boot.oat but we still get the extra stack maps if DWARF debug\ninformation is explicitly requested.\n\nChange-Id: I7e5e557e4850a88b3b6f86178d2cb645fb1e1110\n"
    },
    {
      "commit": "0cb11c3dc6c3e7c3521b49ab0be9138c60037eba",
      "tree": "faae3886e98a34af6a323a9572ad6def1961fa50",
      "parents": [
        "914d71ead70bb6f2084b2ed39a9fd58fd014f67d"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Mar 16 15:11:15 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Mar 16 15:12:38 2016 +0000"
      },
      "message": "runtime: delete native/java_lang_Runtime.h.\n\nNow unused, except for an unnecessary include.\n\nbug: 27387202\nChange-Id: Ie77dc0da156a64e8ea03af1878b44d20c16c5ae5\n"
    },
    {
      "commit": "5f97157263d1b52bf4aea523b28294b21d694da1",
      "tree": "46a2a5102b97f4bb0711c721e3580606f3bde093",
      "parents": [
        "5681b6638b0001c62d02795b0853e2e82787edf1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 15 14:47:29 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 15 15:20:00 2016 +0000"
      },
      "message": "runtime: delete native/java_lang_Runtime.cc\n\nWe\u0027re now using Runtime.c from ojluni, which does the same set\nof things via the JVM interface. This removes unnecessary duplication\nof code between Runtime.cc and OpenJdkJvm.cc.\n\nAlso includes a few changes to JVM_NativeLoad to bring it in sync\nwith the version in Runtime.cc.\n\nbug: 27387202\nChange-Id: I92aac81d131661aca588e352aee7a167593e17d4\n"
    },
    {
      "commit": "a1425a1c9c98ae3fc772834933a5d55566fb5699",
      "tree": "46afe5a4d47aa2979b2eca89f834f6c90c94c61b",
      "parents": [
        "5681b6638b0001c62d02795b0853e2e82787edf1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 11 17:44:04 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 15 07:58:07 2016 -0700"
      },
      "message": "ART: Remember whether the cache was pruned\n\nRemember (and expose) whether the cache was pruned when initializing\nthe runtime.\n\nBug: 27618311\n\n(cherry picked from commit 7ef1b4b20bd7cf485f5e443927c1e6fa797a0439)\n\nChange-Id: I178d18d731a9dce5cb11ed0874c9c9c9d36d7d8e\n"
    },
    {
      "commit": "c421907d0df229e96390932503fda4bfbaf3e4d4",
      "tree": "fe8fb6f16eb0c53af51c670dfded97dd7ca8d316",
      "parents": [
        "87aa99c261a7921e28fbe6136197bb640ddef4a4",
        "b077e15d2d11b7c81aacbcd4a46c2b1e9c9ba20d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 09 11:57:36 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 09 11:57:36 2016 +0000"
      },
      "message": "Merge \"Update GetDexOptNeeded to handle different levels of compilation\""
    },
    {
      "commit": "87aa99c261a7921e28fbe6136197bb640ddef4a4",
      "tree": "4ce329a356f3289cdcee9b64a1b911d7b25a2590",
      "parents": [
        "a9778b24bfb8007f20caff7a082e8b4531a14dae",
        "c90bc92bc577020ff4d3caced4cee1cdf41fa5de"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 09 11:57:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 09 11:57:24 2016 +0000"
      },
      "message": "Merge \"Record foreign dex files loaded by the app in the profile\""
    },
    {
      "commit": "b077e15d2d11b7c81aacbcd4a46c2b1e9c9ba20d",
      "tree": "148a47a1aace48313cdfdeede48902563d89c7ee",
      "parents": [
        "c90bc92bc577020ff4d3caced4cee1cdf41fa5de"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 18 18:47:37 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 08 15:53:30 2016 +0000"
      },
      "message": "Update GetDexOptNeeded to handle different levels of compilation\n\nextract-only or profile-guide oat files are considered up to date from\nruntime perspective as they don\u0027t necessary need (re)compilation or\nrelocation. However, it is useful to return a more refined code to the\ncaller so that they can decide whether or not that\u0027s good enough.\n\nFor example, the package manager might decide to still compile a\nprevious extract-only and during profile guide compilation we should\nalways recompile even if we have an oat file.\n\nNote that dex files compiled via ClassLoaders will still be fully\ncompiled.\n\nThis change introduces:\n- a new key in the oat header kCompilationType to capture what type of\ncompilation has been made. Note tha the key might be missing. The\ndistinction is needed in order to avoid recompilation of a previous\nfully compiled file during profile guide compilation analysis.\n- a new argument to GetDexOptNeeded which tells the runtime to cast its\nopinion whether or not the oat file is up to date relative to the\ndesired target type of compilation.\n\nBug: 27189430\n\n(cherry picked from commit d91b8a2464b99625efe03caf7d30c8372bc378ed)\n\nChange-Id: I6ce450350f388451f7bab7d285c1846d539a4b13\n"
    },
    {
      "commit": "629afaba488c5cfdd3ee9ba5b2df24af9de6f2a7",
      "tree": "e662cc005b69023ce4233ad4a5e11e3560438fce",
      "parents": [
        "810ef3768021b5fc7b47e663e037e49c46f8c916"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 19 14:56:43 2016 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 07 11:45:18 2016 -0800"
      },
      "message": "runtime: Add CAS and fences to sun.misc.Unsafe\n\nBug: 26264765\nChange-Id: I68b482e5f9a0a26419af5e58a8d67c8c8a8e01a9\n"
    },
    {
      "commit": "9bab082adb251327b806d537d6710c16b9897de9",
      "tree": "bb7deb63cfea2672cbdea4a882a001d91982dcd9",
      "parents": [
        "19a133b2e26770b900119aaac25e3e73bd287e3f",
        "942dc298d7af3e60fe40c69b4b416ef144e5c723"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 03 17:05:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 03 17:05:16 2016 +0000"
      },
      "message": "Merge \"Simplify LoadNativeLibrary()\""
    },
    {
      "commit": "c90bc92bc577020ff4d3caced4cee1cdf41fa5de",
      "tree": "1a10edfaecfe09cb07b61857a4e22a50cda04047",
      "parents": [
        "f9f3c5b0ebacbfed59af9c5c81fe9752e6b1258c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 24 10:13:09 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 02 13:04:21 2016 +0000"
      },
      "message": "Record foreign dex files loaded by the app in the profile\n\nA foreign dex file is a file which is not owned by the app\n(it\u0027s not part of its code paths or its private data directory).\n\nWhen such a dex file is loaded by the app, the runtime will record\na marker in a dedicated profile folder (foreing_dex_profile_path).\nThe marker is just a file named after the canonical location of the\ndex file where \u0027/\u0027 is replaced by \u0027@\u0027.\n\nThe markers will be used by the system server system server to\ndecide if the apk should be fully or profile guide compiled.\n\nBug: 27334750\nBug: 26080105\n\n(cherry picked from commit 86a9ebe4197e963249ffbbaa1830da97ed642fa5)\n\nChange-Id: I8be1fd4d854fa1e23c3c1054c9c083ad7b27317b\n"
    },
    {
      "commit": "cc3839c15555a2751e13980638fc40e4d3da633e",
      "tree": "4068f602067f7a7f2a3ef5d0655c2aa4ee81e1a4",
      "parents": [
        "c3bcf40e905c53ec857ec40a9ae45f4c86738929"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 29 16:23:48 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 29 16:46:12 2016 +0000"
      },
      "message": "Improve documentation about StringFactory.newStringFromChars.\n\nMake it clear that the native method requires its third\nargument to be non-null, and therefore that the intrinsics\ndo not need a null check for it.\n\nBug: 27378573\nChange-Id: Id2f78ceb0f7674f1066bc3f216b738358ca25542\n"
    },
    {
      "commit": "bc4d218ce2ceef0c4f308d4ff42f7ec1ec43c40e",
      "tree": "a583db9be377183508653607a724dcb8742f4ca2",
      "parents": [
        "01c30e8dbc45bdc5d922cef6e5a404be7bed0e8c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 22 10:03:12 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 26 15:43:14 2016 -0800"
      },
      "message": "ART: Add unstarted-runtime functions\n\nAdd more functions to allow compile-time initialization of\ncode.\n\nBug: 27248115\n\n(cherry picked from commit 0866f4ed6338faa4a193b7e819fc7cd72bd7b0ae)\n\nChange-Id: Iaf8d92deb73547ccd31c0d6dde68da3bc14c3985\n"
    },
    {
      "commit": "942dc298d7af3e60fe40c69b4b416ef144e5c723",
      "tree": "3bfac9efaea9dcf73fbd2aed93f72db7bf7fa1b3",
      "parents": [
        "48a13431f09ff9bbdcd1ee991da6a04e694c5134"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 24 13:33:33 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 26 11:41:11 2016 -0800"
      },
      "message": "Simplify LoadNativeLibrary()\n\nWith ApplicationLoaders.getClassLoader() ensuring\nlinker-namespace initialization there is no longer\nneed for LoadNativeLibrary() and callers to pass\nalong namespace-specific information to art.\n\nThis change removes unnecessary parameters of such\ncalls.\n\nBug: http://b/27189432\nBug: http://b/22548808\nChange-Id: I341d35a2d5195e634678b352f4361f8712984b69\n(cherry picked from commit c286a7fcd8a446c086127bf03fd07f904e017336)\n"
    },
    {
      "commit": "dd5e5e975e1965c3e4568143e8e1c7b65b319f58",
      "tree": "92f56fa2f743d50fc7078117cf28cbdacf2937d8",
      "parents": [
        "88f4bc504c1be353e95e9d215d68c7d58eb0717f"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Feb 12 16:29:00 2016 +0000"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 15 18:32:27 2016 +0000"
      },
      "message": "Revert \"Revert \"Make it possible to enable native debugging through debug flags\"\"\n\nThis reverts commit 3a98aae1b9b20bc78dc5e05d2e60cb1d0072db02.\n\n* Add support for a new debug flag disabling the optimizations in\n  the compiler and enable the generation of some additional debug\n  info (--native-debuggable).\n* Ignore the content of the oat files if force JIT is enabled so\n  the runtime ignores the AOT-ed code what doesn\u0027t contain any\n  debug info.\n\nTime measurements on a Nexus 5 with running:\nam start -n com.facebook.katana/com.facebook.katana.LoginActivity -W\n\nBefore change:             | AVG | DEV\n--------------------------------------\nThisTime:  549 492 512 511 | 516 | 24\nTotalTime: 549 492 512 511 | 516 | 24\nWaitTime:  662 511 528 526 | 557 | 71\n\nAfter change:              | AVG | DEV\n--------------------------------------\nThisTime:  530 467 503 544 | 511 | 34\nTotalTime: 530 467 503 544 | 511 | 34\nWaitTime:  551 497 536 583 | 541 | 36\n\nBased on the numbers the speed impact of the change is less then the\naccuracy of the measurement and it is also negligible.\n\nThe minor speed improvement displayed in the measurements are just\nthe cause of the variance of the measurement and not caused by this\nchange.\n\nChange-Id: Ibf7294bfd14f8632a0fdeb27a5b90bfe5037d085\n"
    },
    {
      "commit": "e4ddacdb1f0798e084b9ce2de7acac797f2c0a75",
      "tree": "338a1fdf31f24f43f3c5c83ad5a22e789f7ead9f",
      "parents": [
        "9fab717bb67e6d141ca7a6d6c33adbf5b9d3dba7",
        "64fdc804f6b4d8a6f7d86bd9672e3bb1cde7056f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 08 21:54:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 08 21:54:56 2016 +0000"
      },
      "message": "Merge \"Default methods should not be found by getDeclaredMethod\""
    },
    {
      "commit": "3a98aae1b9b20bc78dc5e05d2e60cb1d0072db02",
      "tree": "541d9f2eeeeb4d1b7f3e56846542d826d0f6be59",
      "parents": [
        "c94a61f06ffc13288c67891048128c987b29bf33"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 08 20:21:54 2016 +0000"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 08 20:21:54 2016 +0000"
      },
      "message": "Revert \"Make it possible to enable native debugging through debug flags\"\n\nThe change causes issues in test-art-target-gtest-jni_internal_test32\n\nThis reverts commit c94a61f06ffc13288c67891048128c987b29bf33.\n\nChange-Id: Iecfe3c6874d7b0dd59f10156fe2eb743ab7221dc\n"
    },
    {
      "commit": "64fdc804f6b4d8a6f7d86bd9672e3bb1cde7056f",
      "tree": "4cb67ba411e3845054347745657bdc06ca8472ab",
      "parents": [
        "27ec302da670ffddaf1278b5b7155b7742aa37fd"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 08 10:30:04 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 08 10:34:36 2016 -0800"
      },
      "message": "Default methods should not be found by getDeclaredMethod\n\nWe were incorrectly returning default methods from getDeclaredMethod\ncalls on an implementing class that uses the default implementation.\n\nBug: 27060609\n\nChange-Id: I2e07023a11585e5f7cd92c4c0e1263f54aea1f5f\n"
    },
    {
      "commit": "c94a61f06ffc13288c67891048128c987b29bf33",
      "tree": "83ed6106d14b211281c9ba2a677aed97ebc7657b",
      "parents": [
        "ac6a195ec8e1b5a7a6bd3d0c53d8997ff7a5e2cc"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Feb 05 18:09:08 2016 +0000"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 08 10:53:01 2016 +0000"
      },
      "message": "Make it possible to enable native debugging through debug flags\n\n* Add support for a new debug flag disabling the optimizations in\n  the compiler and enable the generation of some additional debug\n  info (--native-debuggable).\n* Ignore the content of the oat files if force JIT is enabled so\n  the runtime ignores the AOT-ed code what doesn\u0027t contain any\n  debug info.\n\nTime measurements on a Nexus 5 with running:\nam start -n com.facebook.katana/com.facebook.katana.LoginActivity -W\n\nBefore change:             | AVG | DEV\n--------------------------------------\nThisTime:  549 492 512 511 | 516 | 24\nTotalTime: 549 492 512 511 | 516 | 24\nWaitTime:  662 511 528 526 | 557 | 71\n\nAfter change:              | AVG | DEV\n--------------------------------------\nThisTime:  530 467 503 544 | 511 | 34\nTotalTime: 530 467 503 544 | 511 | 34\nWaitTime:  551 497 536 583 | 541 | 36\n\nBased on the numbers the speed impact of the change is less then the\naccuracy of the measurement and it is also negligible.\n\nThe minor speed improvement displayed in the measurements are just\nthe cause of the variance of the measurement and not caused by this\nchange.\n\nChange-Id: Ia9022cbc1bbfcc072314b6c95f63a4bf8060c36c\n"
    },
    {
      "commit": "df187e4cc8b1b2dc6cb0043eb91d1dfd72cb490b",
      "tree": "a2fbb7ec726c57311238eae04a395936b8709cbd",
      "parents": [
        "9f95ba750583735cff1f2921b8014099dd801734"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Feb 01 11:43:26 2016 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 02 10:56:01 2016 -0800"
      },
      "message": "Revert \"Revert \"reflection: Add new 1.8 AnnotatedElement methods and tests\"\"\n\nThis reverts commit 28a2a186537db9fc5a8492e36d9603b48854c04f.\n\nRuntest failure has been fixed in I28c3707e38c1f69ea9d3660f68136f688122ac4e\n\nChange-Id: I1749dc89b790d44b5e40bc8b20aa62885bda792b\n"
    },
    {
      "commit": "0dd8c399e6a3b4f46ce1ba1388507bf0ef93d5ff",
      "tree": "ef750f3956a930c2d2505fffb947b426ef0b4470",
      "parents": [
        "6f2c459c97fad172991d05f96cb6036050c2db97"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 01 13:22:18 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 01 13:47:07 2016 +0000"
      },
      "message": "Track libcore change aa517a356a38b8cd6764667e1edd735aaf5978e9.\n\nChange-Id: I32a995eb62e3268c20fa5c2ac8dc2bf190c6fb7a\n"
    },
    {
      "commit": "28a2a186537db9fc5a8492e36d9603b48854c04f",
      "tree": "31fc65e44fac0d24b53c61df322624fe381a75d8",
      "parents": [
        "c167ee9b65f05f7c6f007d587fd1655388edaee9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 10:25:01 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 10:25:01 2016 +0000"
      },
      "message": "Revert \"reflection: Add new 1.8 AnnotatedElement methods and tests\"\n\nBreaks interpreter access checks:\n\n+Exception in thread \"main\" java.lang.InternalError: java.lang.IllegalAccessError: Method \u0027void java.lang.reflect.Proxy.doNewInstanceCheck()\u0027 is inaccessible to class \u0027$Proxy0\u0027 (declaration of \u0027$Proxy0\u0027 appears in generated class)\n\n\nThis reverts commit c167ee9b65f05f7c6f007d587fd1655388edaee9.\n\nChange-Id: I6c9429cb6f298e89a2da22f7ded0728251321446\n"
    },
    {
      "commit": "c167ee9b65f05f7c6f007d587fd1655388edaee9",
      "tree": "57e846f6aaad969020972f55a082e3e22884592e",
      "parents": [
        "2aaf58e90c9229610b2a16644e9866b6741ce9ca"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jan 14 16:05:47 2016 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Jan 27 13:14:10 2016 -0800"
      },
      "message": "reflection: Add new 1.8 AnnotatedElement methods and tests\n\nAlso:\n* Bump the size of the Class vtable size since 3 new virtuals were\nadded to java.lang.Class\n* Refactor Method#isDefault test into a separate file within 048 test.\n\nChange-Id: I8420a4d208bb60874a9cf996766313c7d5058c45\n"
    },
    {
      "commit": "05d241565f36df825cf56a4f1b61bfb7e4dcb056",
      "tree": "4b74483b1c26640c6ca150fbf4d070c7a3a518f0",
      "parents": [
        "f032f3afe513093c508434b17ff1921a114c4424"
      ],
      "author": {
        "name": "Siva Chandra",
        "email": "sivachandra@google.com",
        "time": "Tue Jan 05 17:43:17 2016 -0800"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Wed Jan 27 15:09:41 2016 +0000"
      },
      "message": "Add option to never interpret.\n\nChange-Id: Ib6d6170fa60c77c2e6a8844964f14fa0de4c9e7b\n"
    },
    {
      "commit": "a9d82fe8bc6960b565245b920e99107a824ca515",
      "tree": "a6ced4b8bca71232d20d91ff344c7531948b7be3",
      "parents": [
        "1af0204dddc1d99dc17a13eca135c1b57023c1c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 25 20:06:11 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 26 12:24:02 2016 -0800"
      },
      "message": "Use mutator lock to guard adding and removing heap spaces\n\nToo hard to add a new lock since dlmalloc ArtMoreCore requires\nlooping through the spaces while holding the allocator lock.\n\nBug: 22858531\nChange-Id: Ieac2136da02c766b6795cd604a58798bee37ef2a\n"
    },
    {
      "commit": "fbc31087932a65e036a153afab3049dc5298656a",
      "tree": "c728b9039a71db3be9cae888ad5e1afc31f34a13",
      "parents": [
        "c7f4e3a5aeaa23342b4e03b0d751f60ac5c5815c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 24 11:59:56 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 25 14:22:15 2016 -0800"
      },
      "message": "Revert \"Revert \"Load app images\"\"\n\nThis reverts commit 1bc977cf2f8199311a97f2ba9431a184540e3e9c.\n\nBug: 22858531\n\nChange-Id: Ide00bf3a73a02cba3bb364177204ad1b13f70295\n"
    },
    {
      "commit": "1bc977cf2f8199311a97f2ba9431a184540e3e9c",
      "tree": "580a02752d8e447f6dce7cce01386c7e2a9a87f4",
      "parents": [
        "f7fd970244f143b1abb956e29794c446e4d57f46"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "message": "Revert \"Load app images\"\n\nFails when a method is duplicated (see test 097-duplicate-method)\n\nBug: 22858531\n\nThis reverts commit f7fd970244f143b1abb956e29794c446e4d57f46.\n\nChange-Id: Ib30ae5be00cc568e799290be6b3c8f29cbbe4c20\n"
    },
    {
      "commit": "f7fd970244f143b1abb956e29794c446e4d57f46",
      "tree": "aac1f57ac70747957f609bb46305dfeca87645a1",
      "parents": [
        "95005291d8ebdd1d2ac58ffc5181fef4fbbf2383"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 09 11:16:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 22 15:01:55 2016 -0800"
      },
      "message": "Load app images\n\nSupport in-place patching of the app image based on boot image\nlocation and app oat location. Only loads for art run test so far\nsince we do not automatically generate app images for app installs.\n\nN5 maps launch time (~200 runs):\nBefore: 930ms\nAfter: 878.18ms\nAfter + image class table: 864.57ms\n\nTODO:\nOatdump support.\nStore class loaders as class roots in image.\n\nBug: 22858531\n\nChange-Id: I9cbc645645e62ea2ed1ad8e139e91af7d88514c1\n"
    },
    {
      "commit": "0e7fa6b06e37e7c95509cd234571f469bf5821c2",
      "tree": "887228f1be1a8837d059af5fc83c27a75b281dd9",
      "parents": [
        "d6ff932575b99d51e3c37e77d696160acbf53e21"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 15:28:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 15:42:35 2016 +0000"
      },
      "message": "Also print to error stream.\n\nSo we can test between all kinds of configuration (for example\nhost no-dex2oat removes all error logs).\n\nChange-Id: I5936fdd963e3805c49258ee6ed50d8def23d1aca\n"
    },
    {
      "commit": "ae6f23c83e1c8dcfbc4f74186ea1a37f1044414b",
      "tree": "efefa95c7279dbe605fbe32202a373f3db6d96cb",
      "parents": [
        "16f66da0fe69530668de5fb12423f237603d7a14",
        "7ea4c09989b37351e6c17a10d35934812053a746"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 11 12:01:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 11 12:01:16 2016 +0000"
      },
      "message": "Merge \"Emit an error message when looking for String#offset.\""
    },
    {
      "commit": "7ea4c09989b37351e6c17a10d35934812053a746",
      "tree": "2ccc1f223830e30e4c2ca27310764957125476f2",
      "parents": [
        "a90d8bc3a3772877f4490d0509d53053069e5b55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 10:55:14 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 12:08:22 2016 +0000"
      },
      "message": "Emit an error message when looking for String#offset.\n\nDebugging two different apps relying on it and swallowing\nthe getDeclaredField exception took too much of my lifetime.\nAdding a LOG(ERROR) can help diagnose quicker.\n\nAlso remove unused method getDeclaredFieldInternal.\n\nChange-Id: I0923556a4fdbad2b06c1811ed741d23dbd4aa0a0\n"
    },
    {
      "commit": "7ede3dd40e2f7da3e3073cc355312021c31820b3",
      "tree": "8ecf4374076c710a128bd47d3fa48e60a1a253e8",
      "parents": [
        "a90d8bc3a3772877f4490d0509d53053069e5b55",
        "5e2b971e468ca73a8e10a120730b3b6f17fad408"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jan 07 11:45:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 07 11:45:11 2016 +0000"
      },
      "message": "Merge \"Assume the profile file was created before saving.\""
    },
    {
      "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": "ac9e66e4a8ed9c5fa8864f4556322c5040be2ed6",
      "tree": "abbefb73307d3c87893a32176474439de244a460",
      "parents": [
        "4bb356123b13ec5f41ea80158766df676ae08679"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 17 11:18:27 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 31 14:15:18 2015 -0800"
      },
      "message": "Revert \"Temporary disable linker-namespaces\"\n\nThis reverts commit 9aefb12cc91eb459d87392700f1199ee07580cd6.\n\nChange-Id: Iac567c03699d65f97c380c2f32ef5a2a56d44721\n"
    },
    {
      "commit": "7f65b4669c52976cd5713dae47b901707ed77110",
      "tree": "b1c6399751c98babd3839bd4d5ff4a1f6a5c274c",
      "parents": [
        "b7f644b3ef0b23350d83f10612b80e27112f2478",
        "da6e49016dc37704f45b13217a8c6f8e726ab8e1"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 24 02:43:58 2015 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 24 02:43:58 2015 -0800"
      },
      "message": "Merge \"Save profile information in a separate thread.\" am: 58b2329de7\nam: da6e49016d\n\n* commit \u0027da6e49016dc37704f45b13217a8c6f8e726ab8e1\u0027:\n  Save profile information in a separate thread.\n"
    },
    {
      "commit": "58b2329de74a73d2f0a7ed001e50cc39df33d9da",
      "tree": "7c8b322acd0a0c0b0d7fd6467df8ff68cf7844fa",
      "parents": [
        "875773770ae34c623153aac3941828a9e3831f14",
        "4d77b6a511659f26fdc711e23825ffa6e7feed7a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 24 10:38:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 24 10:38:45 2015 +0000"
      },
      "message": "Merge \"Save profile information in a separate thread.\""
    },
    {
      "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": "18d209582e0bb1caed97102a86b416173f5aad42",
      "tree": "5c79afefe9f895a6b752d98d92127a6c0884f846",
      "parents": [
        "424446ba807186a374e1789296d651ddfe6f214c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Dec 22 14:56:59 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Dec 22 19:17:45 2015 +0000"
      },
      "message": "Override notice file for OpenJdk based modules.\n\nChange-Id: Iff63708c83c2a18b82f0de6aa884e1388ed8b32b\n"
    },
    {
      "commit": "d5a3e2c99f784c6ebe8d99032a0988edf6afa586",
      "tree": "722dd4f7777de3d9f2ec5cf854d37dda1b115997",
      "parents": [
        "5ae964f43ccee7b770d34f95b22b3421cbeb0e29",
        "ae66db49535fcddc2b1d24fe7c8324317071dfe9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 21 23:35:01 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 21 23:35:01 2015 +0000"
      },
      "message": "Merge \"Treat thread state kWaitingWeakGcRootRead as kJavaRunnable.\" am: 1201804d18\nam: ae66db4953\n\n* commit \u0027ae66db49535fcddc2b1d24fe7c8324317071dfe9\u0027:\n  Treat thread state kWaitingWeakGcRootRead as kJavaRunnable.\n"
    },
    {
      "commit": "1201804d1813d7db0accead9721d67c40b3de564",
      "tree": "38e9cb34b3090278c9e7c3803d97299f3f24a659",
      "parents": [
        "10e2607281ae3d6c5fa814b9986bac5f8b47d325",
        "2ddc6bf88a1c49ebc78bf35b46d486078fe9051a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 21 23:25:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 21 23:25:23 2015 +0000"
      },
      "message": "Merge \"Treat thread state kWaitingWeakGcRootRead as kJavaRunnable.\""
    },
    {
      "commit": "aa944b9d4d447d2746f13327084a19daebf83ee4",
      "tree": "086244a8f5758a736e21d59ac41eea931eb94119",
      "parents": [
        "d255fe5c11ff0fa13a2ca9f73c7c43a290dc370e",
        "d5bbadf44032510b1ce12d9e5f2adad9234cf6b9"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 21 23:10:49 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 21 23:10:49 2015 +0000"
      },
      "message": "Merge \"Use shared namespaces for bundled apps\""
    },
    {
      "commit": "2ddc6bf88a1c49ebc78bf35b46d486078fe9051a",
      "tree": "68254097a6ef2094fdd424ababad2a4241e86c05",
      "parents": [
        "045d37ae20ae9481f6c967ab5db4240991ff151f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 21 14:06:23 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 21 14:06:23 2015 -0800"
      },
      "message": "Treat thread state kWaitingWeakGcRootRead as kJavaRunnable.\n\nLike kSuspended, kWaitingWeakGcRootRead means temporarily waiting for\nGC\u0027s purpose rather than the thread is waiting on a monitor.\n\nThis may fix some jsr166 test failures.\n\nBug: 25883050\nBug: 12687968\n\nChange-Id: Ib53e18c0fb2ff95aa0491b1531201e583288684e\n"
    },
    {
      "commit": "6b1a50b561d3f1a282871f30e85e74433e2984af",
      "tree": "e592e69ddea871126d566fcaf5b3309a5c2e8643",
      "parents": [
        "28ee8dbece62bf1ed9a7dfd3c581fd5860ed8867",
        "8a5e8d0118de17210316100e740d0417239256e9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 12:15:39 2015 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 21 12:15:39 2015 -0800"
      },
      "message": "Merge \"Rename NullHandle to ScopedNullHandle\" am: 76b90e37df\nam: 8a5e8d0118\n\n* commit \u00278a5e8d0118de17210316100e740d0417239256e9\u0027:\n  Rename NullHandle to ScopedNullHandle\n"
    },
    {
      "commit": "9865bde5d822f56c4732214c2005dfcaa41f94cf",
      "tree": "cd2eae058f4f4f13b5a82ff557b7eaaf13a1ecfb",
      "parents": [
        "115a02b737dd5f4d485b2f6c359e02988df66b83"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "message": "Rename NullHandle to ScopedNullHandle\n\nThis makes it clearer that is invalid to do things like:\nHandle\u003cT\u003e h \u003d ScopedNullHandle\u003cT\u003e();\n\nBug: 26233305\nChange-Id: I6d8f54eae01ec2e901cb7043afa853ea77db79fe\n"
    },
    {
      "commit": "28ee8dbece62bf1ed9a7dfd3c581fd5860ed8867",
      "tree": "1cfd6b4c67eb6c276d5aa22abda9306ee2d4f985",
      "parents": [
        "d5aeb13585f682f9090b76eb9d5878bec801f9af"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Sun Dec 20 20:32:01 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Dec 21 16:58:01 2015 +0000"
      },
      "message": "Update header for OpenjdkJvm.cc.\n\nChange-Id: I19d25531fe71d0511ee3887a2ffd5697a8a00249\n"
    },
    {
      "commit": "d5aeb13585f682f9090b76eb9d5878bec801f9af",
      "tree": "ae17e7b970d6b6a87db8b0e3bc57ea56e88898da",
      "parents": [
        "aa0fab302b762c776ecda4a5dd80625ccd64bde3",
        "d264bab81efdc40500b41620d65a8b3930854719"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 21 09:50:04 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 21 09:50:04 2015 +0000"
      },
      "message": "Merge \"Pass down to the runtime the application code paths.\" am: 115a02b737\nam: d264bab81e\n\n* commit \u0027d264bab81efdc40500b41620d65a8b3930854719\u0027:\n  Pass down to the runtime the application code paths.\n"
    },
    {
      "commit": "115a02b737dd5f4d485b2f6c359e02988df66b83",
      "tree": "92326bbe40b2541aac8096312d25791a329f7c28",
      "parents": [
        "2f125e3c7ab02cbbbcede533dc53a454a439be13",
        "66f55237679db90cb0a0a265043a787932b466f8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 21 09:43:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 21 09:43:09 2015 +0000"
      },
      "message": "Merge \"Pass down to the runtime the application code paths.\""
    },
    {
      "commit": "d5bbadf44032510b1ce12d9e5f2adad9234cf6b9",
      "tree": "d47fc3cbe11567db0e539eaa818b07e569eeed0a",
      "parents": [
        "2f125e3c7ab02cbbbcede533dc53a454a439be13"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 15 14:08:18 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Dec 19 23:38:06 2015 -0800"
      },
      "message": "Use shared namespaces for bundled apps\n\nShared namespaces clone the list of loaded native\nlibraries from the caller namespace. This allows\nclassloaders for bundled apps to share already loaded\nlibraries with default namespace.\n\nBug: http://b/26165097\nBug: http://b/22548808\nChange-Id: Ia90b603a0ca97194618b82fb191d6790a4b1f281\n(cherry picked from commit 986f650d8b552e8b7dbebef1f50f015e7850edfc)\n"
    },
    {
      "commit": "df0de0459ccd661c1c79aec3035dc64d4997ad3d",
      "tree": "49d42ae2892f44b9b8cac6f163fbbaf042874b05",
      "parents": [
        "ae1dec9318a4b2a873954a26ac8bf9d210d3a577",
        "986f650d8b552e8b7dbebef1f50f015e7850edfc"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Dec 19 00:49:07 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 19 00:49:07 2015 +0000"
      },
      "message": "Merge \"Use shared namespaces for bundled apps\""
    },
    {
      "commit": "9c5572957bf357897f0969d002132fc647bfa649",
      "tree": "84e853d076d2a7449e0eba1710b2a4b3d0872fda",
      "parents": [
        "90f5250d4ba7bcf6066edb022f8325df66d686f3",
        "9f784b26a13101222c5e5927cafd7f500d3cff67"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 15:48:01 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 15:48:01 2015 -0800"
      },
      "message": "resolve merge conflicts of 9f784b26a1 to master.\n\nChange-Id: I9ebcb6e3d51be922e08e5f867fb8dcaf5cb9788d\n"
    },
    {
      "commit": "db92e153c2c29b7f0b59e5f6cc9d0abbdcdce635",
      "tree": "97f354242e9e9c233a0ce7382c85f5811ff39112",
      "parents": [
        "3f185f84f4fe3f00e045c45c19811b4621458a6c",
        "e667c7622e20b9644c4b2e46e35ba147428ed62c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Dec 17 23:38:23 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 17 23:38:23 2015 +0000"
      },
      "message": "Merge \"Fix (non-intrinsic) UnsafeCASObject for the read barrier config.\" am: fb9f4ad455\nam: e667c7622e\n\n* commit \u0027e667c7622e20b9644c4b2e46e35ba147428ed62c\u0027:\n  Fix (non-intrinsic) UnsafeCASObject for the read barrier config.\n"
    },
    {
      "commit": "986f650d8b552e8b7dbebef1f50f015e7850edfc",
      "tree": "0862ac202e46c1fa434d025f344d7fc0b749bd35",
      "parents": [
        "6280ef88a9231d2a14f2b0bbe6d39770c994787d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 15 14:08:18 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 17 11:33:06 2015 -0800"
      },
      "message": "Use shared namespaces for bundled apps\n\nShared namespaces clone the list of loaded native\nlibraries from the caller namespace. This allows\nclassloaders for bundled apps to share already loaded\nlibraries with default namespace.\n\nBug: http://b/26165097\nBug: http://b/22548808\nChange-Id: Ia90b603a0ca97194618b82fb191d6790a4b1f281\n"
    },
    {
      "commit": "ec178ee58447ba23e5954eb824265e9b30f95009",
      "tree": "a53ddba8fcc76291687b4ef26bf8892427c4b729",
      "parents": [
        "14c4e90f67e71430dade7d4f20920e6352be386e",
        "e64300b8488716056775ecbfa2915dd1b4ce7e08"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 18:33:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 17 18:33:57 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Combine direct_methods_ and virtual_methods_ fields of mirror::Class\"\"\""
    }
  ],
  "next": "6280ef88a9231d2a14f2b0bbe6d39770c994787d"
}
