)]}'
{
  "log": [
    {
      "commit": "57cf00bde719ddc84a6015b107b90a20169e3099",
      "tree": "1522952470490e6b107d07649f511ef09f9abd32",
      "parents": [
        "40c6710dfa0d10d34dcca8ed92c214faba36c833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:15:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 18:29:04 2017 -0700"
      },
      "message": "ART: Remove old object_callbacks.h includes\n\nRemove unused includes.\n\nTest: m\nChange-Id: I70c227d32c6900904e186b975d1f2131b718d93d\n"
    },
    {
      "commit": "46e75d00ecc2d4e40c2fa0cb904f1332e0956149",
      "tree": "a5d535865767f2aee191fe15129e272b11148040",
      "parents": [
        "7bd73adeebf2b0952b275cde3cbb3acca68d47db"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 02 16:03:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 02 17:49:15 2017 -0700"
      },
      "message": "Avoid holding mutator lock while calling dlsym\n\nParanoid that dlsym might not always terminate quickly. The fix is to\ngo to suspended before calling FindNativeMethodInternal.\n\nBug: 62235781\nTest: test-art-host\n\nChange-Id: I4323b580ffb582521ce94d8c90476e6db12bfe4a\n"
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "d49012909625c3bf87bf51138fe79315ce1b1bdc",
      "tree": "349ef2cdcb7255d042244046601bd0fd5eb3a092",
      "parents": [
        "726e1793d3f54470705e5b84e7860074e029b0ed"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 18:41:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 20:44:33 2017 -0700"
      },
      "message": "ART: Clean up heap headers\n\nUse more forward declarations for accounting structures and spaces.\nFactor out structs to reduce header surface. Remove heap include where\nunnecessary. Fix up transitive users. Move some debug-only code out\nof line.\n\nTest: m test-art-host\nChange-Id: I16db4aaa803f39e155ce6e1b0778b7e393dcbb17\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\n"
    },
    {
      "commit": "65af20b1aaa2b23abaae3e4a21d7b6cdcb156889",
      "tree": "8bf0c219ec23392afe2f04972b6abc2665c9ab80",
      "parents": [
        "aa03f6fa38da0166790f2b22b679e6568ad56f7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 20 09:15:08 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 20 22:47:01 2017 +0000"
      },
      "message": "Agent libraries need to be searched for JNI functions\n\nThis makes agent libraries the option of last resort for native\nmethod implementations. This will allow one to not need to manually\nlink all native methods in an agent library.\n\nBug: 37522517\nBug: 37432636\nTest: ./test.py --host -j40\nChange-Id: I5ad78a15e7e2799d2a877c5d603342899e2a1bd1\n"
    },
    {
      "commit": "41d14c55abfee49f8d913c3a37ebb8c18da68797",
      "tree": "91132bef624b83b3d887f893c3b9d337625cf045",
      "parents": [
        "d111f90a386f7bad1474189390fce7a8d1ff1ab5"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Apr 10 20:34:29 2017 +0000"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Apr 10 20:34:29 2017 +0000"
      },
      "message": "Revert \"Avoid JNI usage error when JNI_OnLoad throws\"\n\nThis reverts commit d111f90a386f7bad1474189390fce7a8d1ff1ab5.\n\nChange-Id: Ia8461946088644e41e0f2e14d7e806a70dec41ab\n"
    },
    {
      "commit": "d111f90a386f7bad1474189390fce7a8d1ff1ab5",
      "tree": "4f0c7e197f37f5a76d40cf18dc8a52c1baa8822c",
      "parents": [
        "c48266eb44296fa086868b82d8a3c2b57ce186ae"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Thu Feb 23 20:30:00 2017 -0800"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Fri Apr 07 16:51:34 2017 -0700"
      },
      "message": "Avoid JNI usage error when JNI_OnLoad throws\n\nTest: included\nChange-Id: I534de714fad2cfb9b53d66da11ade0e5142cb819\n"
    },
    {
      "commit": "85a78cff8cbd6477c19ab4c9a21698dddcf0a9f9",
      "tree": "cee518d7bed60fcc3c4c08603f27500a8d2e6eea",
      "parents": [
        "6efac9929f8952e4871e8c423c923989fc6f2ad2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 20 16:26:42 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 23 16:16:53 2017 -0700"
      },
      "message": "Revert^2: \"Make sigchain actually own the signal chain.\"\"\n\nThis reverts commit 33dca562d5ed9f52f63ced2334c066333ca073e9.\n\nBug: http://b/36205469\nBug: http://b/36262089\nOriginal-Change-Id: I416b13de800d3e23424cf20688ccfd7e4e48a111\nChange-Id: I1267be72c32ed73d1079a572d0b8907556526dde\n"
    },
    {
      "commit": "33dca562d5ed9f52f63ced2334c066333ca073e9",
      "tree": "b13ca4ec329595953d3aa3b04b0323f2dee173ca",
      "parents": [
        "7600fa9234e02cf5108a3a82babf3d3ab82fcddd"
      ],
      "author": {
        "name": "Jin Qian",
        "email": "jinqian@google.com",
        "time": "Sat Mar 18 02:51:37 2017 +0000"
      },
      "committer": {
        "name": "Jin Qian",
        "email": "jinqian@google.com",
        "time": "Sat Mar 18 02:51:37 2017 +0000"
      },
      "message": "Revert \"Make sigchain actually own the signal chain.\"\n\nThis reverts commit 7600fa9234e02cf5108a3a82babf3d3ab82fcddd.\n\nChange-Id: Ia46db2a7df0c0ac07107a8db06f42ff1afd4a97e\n"
    },
    {
      "commit": "7600fa9234e02cf5108a3a82babf3d3ab82fcddd",
      "tree": "7fc841d365122ae618b657c7bd3fa28e8151e870",
      "parents": [
        "ed883a11b8cd7f3712bd30fca1e2b0fb641bff63"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 15 17:40:42 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Mar 17 17:04:31 2017 -0700"
      },
      "message": "Make sigchain actually own the signal chain.\n\nsigchain exists to make sure that art\u0027s signal handler is at the front,\nbut it currently does this by putting the fault manager in the actual\nsignal handler slot and having that handler call into sigchain when it\ndoesn\u0027t want to handle a signal. sigchain also has a \"special signal\nhandler\" (used for native bridge) that runs before user handlers, but\nafter ART\u0027s.\n\nMove maintenance of the signal chain into sigchain itself, and use the\nsame mechanism to handle the ART handler and the native bridge handler.\n\nAlso, clean up some bugs:\n  - InvokeUserSignalHandler was using the wrapper sigprocmask instead\n    of the actual one.\n  - Use SIG_SETMASK instead of SIG_BLOCK between calling handlers, in\n    case one of the handlers changes the signal mask.\n  - Correctly handle sigaction without SA_SIGINFO.\n\nBug: http://b/36205469\nBug: http://b/36262089\nTest: NPE with dalvikvm with/without TEST_NESTED_SIGNAL defined (arm/aarch64)\nChange-Id: I416b13de800d3e23424cf20688ccfd7e4e48a111\n"
    },
    {
      "commit": "a222404a5832ab16786931576d52825d08eed3ca",
      "tree": "7350e5efbb6ef72c33e82753d79f7f4bed92d9d4",
      "parents": [
        "1561de49b382627ddd277b8ad7e5e8f4cec32f0b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 08 16:35:45 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 10 16:15:01 2017 -0800"
      },
      "message": "Fix the empty checkpoint timeout.\n\nThe problem happens when a thread is indirectly blocked on a mutex\nthat another thread holds and is blocked on a weak ref access.\n\nAdd a way to do a dummy wakeup on a thread that\u0027s blocked on a mutex\nso that the thread will respond to the empty checkpoint request. Do\nthis for the mutexes that are expected to be held when a weak ref is\naccessed. Add a check that detects an unexpected case.\n\nBug: 33006388\nBug: 12687968\nTest: test-art-host.\nChange-Id: Iefec69b9a21aa25a928cb31fcf4fb872f867a8c2\n"
    },
    {
      "commit": "f1c6f8742e2ac980c7259f4dc70b4326ecc245e1",
      "tree": "27bdef2da9d0c37003c0859cc3e5a58ff26092e2",
      "parents": [
        "48ff5b9aecd9c9d3eb00242aee52a0a8193421df"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 06 12:23:47 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 06 12:48:15 2017 -0800"
      },
      "message": "Don\u0027t need to block in AddWeakGlobalRef and MonitorList::Add under CC.\n\nCMS needs this to block because an object allocated during the GC\nwon\u0027t be marked and concurrent reference processing would incorrectly\nclear the JNI weak ref or the monitor list weak.\n\nBut CC doesn\u0027t because of the to-space invariant, that is, when a\nmutator tries to create a JNI weak ref or a monitor for an object, it\nmust be already marked and the concurrent reference processing\nwouldn\u0027t incorrectly clear it.\n\nBug: 34128900\nBug: 12687968\nTest: test-art-host with CC.\nChange-Id: Ia87bf8ed9e604900df5ecb450c89b0ac222bef32\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": "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a",
      "tree": "19e2d9d5e8476bf526dd5924ef05b1d727b75f8b",
      "parents": [
        "e7b46e22c7f4f6f503501b3b2ad99113289d142b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 03 13:06:52 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 09 18:14:08 2016 -0800"
      },
      "message": "Make empty checkpoint work while weak ref access is disabled.\n\nFix a potential race on PushOntoMarkStack for CC by running an empty\ncheckpoint (while weak ref access is disabled).\n\nBug: 32508093\nBug: 12687968\nTest: test-art-host with CC/CMS, libartd boot with N9, Ritz EAAC.\nChange-Id: I3749bb525e7734804307ee16262355f3fc730312\n"
    },
    {
      "commit": "a307a76312e8f6a9fd72657285c7878f04518c8d",
      "tree": "9ba0fc0f0dfbb3f3d772ecaa9048068654f68071",
      "parents": [
        "874462f08107c42a873b4ff0e8ee6b3309072569",
        "8447e6d4b7c5cc05883a95489b57026d42e8cdcc"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 26 18:27:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 26 18:27:38 2016 +0000"
      },
      "message": "Merge \"Always call into native loader when loading a native library\""
    },
    {
      "commit": "9d7ef62b854289632791a83223c1a5a5b3c8fc64",
      "tree": "10739d99e2b868c11da9b255dde64de7e002250d",
      "parents": [
        "e03662b71bbb4d262af0840bf90ce4fc84750b43"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 24 19:35:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 24 19:35:19 2016 -0700"
      },
      "message": "ART: Make IndirectReferenceTable resizable\n\nAllow backing table to be resized. This can be used for the local\nreference table, where synchronization is not an issue.\n\nBug: 32125344\nTest: m test-art-host\nChange-Id: Iae3a933e330026231b17fdde44bcdd99c235dff1\n"
    },
    {
      "commit": "e03662b71bbb4d262af0840bf90ce4fc84750b43",
      "tree": "0d89f7d90a46a7a2f8d120e3b0aabf3e1d277004",
      "parents": [
        "dc061d038e4e48fe2a967fd4a9c200d112df5698"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 13 17:12:56 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 24 19:16:54 2016 -0700"
      },
      "message": "ART: Change IndirectReferenceTable\n\nChange cookie structure to allow for more entries. Use a local\nhole-count caching scheme. The design is driven by two\nconsiderations. For one, the change is small and mostly local.\nThe other point is to still allow inlining of functions involved\nwith JNI transitions.\n\nThis change is in preparation for a resizable backing table for\n\"unlimite\" local references.\n\nmicro_native tests show changes are in the noise.\n\nBug: 32125344\nTest: m test-art-host\nChange-Id: I08ff5d6eaed75d13ec88f469fb0d18328a0eeb70\n"
    },
    {
      "commit": "dc061d038e4e48fe2a967fd4a9c200d112df5698",
      "tree": "505ca5b32b2492ed5e5c1fc0b345952d2ef844a6",
      "parents": [
        "3667e26de4856cccf24bcbab54ad3349a05267c0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 24 13:19:37 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 24 17:47:12 2016 -0700"
      },
      "message": "ART: Clean up IndirectReferenceTable\n\nIntroduce constants and move some functions into the\nIndirectReferenceTable class.\n\nSlightly change IndirectRef encoding to be more obvious (and slighly\nmore optimized when decoding).\n\nBug: 32125344\nTest: m test-art-host\nChange-Id: I05819eccb733b611de582fb8d7151f1a110c305a\n"
    },
    {
      "commit": "8447e6d4b7c5cc05883a95489b57026d42e8cdcc",
      "tree": "a74d3f6ddbe4fbb46f9e94ae77fd0f1eba1742bc",
      "parents": [
        "3667e26de4856cccf24bcbab54ad3349a05267c0"
      ],
      "author": {
        "name": "Zhenhua WANG",
        "email": "zhenhua.wang@intel.com",
        "time": "Mon May 30 11:10:29 2016 +0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 24 06:40:52 2016 -0700"
      },
      "message": "Always call into native loader when loading a native library\n\nNamespace semantic has been enabled at native bridge side. And,\nnative loader wraps both dynamic linker and native bridge. ART\non longer calls native bridge directly when it loads a native\nlibrary, but still remembers whether native bridge is needed\nfor each library.\n\nBug: http://b/28242460\nTest: make -j4 test-art-target \u0026\u0026 make -j32 test-art-host\nChange-Id: I5eae4b7d492d9a476343301506d7028ed2a18e90\nSigned-off-by: Zhenhua WANG \u003czhenhua.wang@intel.com\u003e\n"
    },
    {
      "commit": "3bbfcb794f5f81f4aa76ac0fb4c811d260e69d3b",
      "tree": "79be0f3361730ea7796f370a38b2c039108322eb",
      "parents": [
        "d985a5a81a45595f5cb4d12da81eec760801c92c",
        "da0a69edb24122d3d35ce1483c5ab94de919d714"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 20 11:45:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 20 11:45:06 2016 +0000"
      },
      "message": "Merge \"Return error message if IndirectReferenceTable construction fails.\""
    },
    {
      "commit": "c89f9776a107ca20d0146c16fa881db91c4f8266",
      "tree": "f77bd4525e69c4874c52183878ae642fd5a2201c",
      "parents": [
        "58b99c78d0bba093fddebab0dcad45bbcf5c55d9",
        "709b070044354d9f47641f273edacaeeb0240ab7"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 19 16:18:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 19 16:18:51 2016 +0000"
      },
      "message": "Merge \"Remove mirror:: and ArtMethod deps in utils.{h,cc}\""
    },
    {
      "commit": "da0a69edb24122d3d35ce1483c5ab94de919d714",
      "tree": "7216e6a19b1a9f3ca9da28d61c717ad9086d994e",
      "parents": [
        "278ec18934045477f0340b4aa6564f003a1e190d"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Oct 11 15:06:38 2016 +0100"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Oct 19 16:37:47 2016 +0100"
      },
      "message": "Return error message if IndirectReferenceTable construction fails.\n\nPreviously if there was an error when constructing the\nIndirectReferenceTable, the error message was lost. Now expose and\ninclude the error message when throwing an exception related to\nfailures to construct the IndirectReferenceTable.\n\nThe error message is propagated through JVMEnvExt, JavaVMExt, and\nRuntime::Init as well.\n\nBug: 32013594\nTest: Added new 151-OpenFileLimit runtest.\nTest: m test-art-host, m test-art-target\n\nChange-Id: I3692f6928c9570358571bce634569d6f14cdeb05\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": "a8e3b8622565089ff7eb86363a18214b9b2b7da8",
      "tree": "aa640ae2d155e28ba7a3acbbb9a4ab25d7e50450",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 17 20:12:52 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 17 20:16:42 2016 -0700"
      },
      "message": "ART: Remove IRT cruft\n\nRemove dead code for initial vs maximum table size.\n\nBug: 32125344\nTest: m test-art-host\nChange-Id: Ie5806da7f5f3238483da918deca5982f01764466\n"
    },
    {
      "commit": "05a364c8d8271ceeca307d04736f53e92d03de9d",
      "tree": "70e166900c99564c0ab3596ef3c8d5d85f14e767",
      "parents": [
        "4aed412037e6e7bad2cf589645449df960b88200"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 14 13:27:12 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 14 14:48:26 2016 -0700"
      },
      "message": "ART: Make JNI global and weak global locks global\n\nAdd them to Locks. Give the JNI global table lock\na lock level, close to the weak global JNI references.\n\nBug: 31684578\nTest: m test-art-host\nChange-Id: I3857a3b0be69b16811d9999096b2c42e7a25d227\n"
    },
    {
      "commit": "c4f3925490a73da8dc74884a1deb965d4ecaf14e",
      "tree": "7fe566827f8ab903af1acb5697c86a6efe3187b3",
      "parents": [
        "18f7de841fee3ca6f0c04e7caa57c3ce76b36231"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 18:32:08 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 06 13:55:58 2016 -0700"
      },
      "message": "Move remaining jobject related functions to use ObjPtr\n\nAlso added ObjPtr::DownCast.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I59c253211dc435579ffdfd49f856861ab13d262c\n"
    },
    {
      "commit": "f8ac97f94aad9ce2d324c2c7c21dde3abf13315b",
      "tree": "9359680f07a65531898113dd335020db33b9b6e6",
      "parents": [
        "299958fc681f591fee7ff9ae0d81bd3adfebdd2b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 15:56:52 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 15:59:57 2016 -0700"
      },
      "message": "ObjPtr misc cleanup\n\nCheck for subtypes in constructor.\n\nRemove various calls to MakeObjPtr and ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I8d680d514ea52cd64fc4f7c2e988926bc726174e\n"
    },
    {
      "commit": "8778c521de4f686118549ef7b20ae497e53b9e93",
      "tree": "18e82a5860cf7c7d388f314615ba66e9a3ac4521",
      "parents": [
        "2f61867045ffbd0c38a4ecec5f59632004f7efff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 19:06:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 13:02:53 2016 -0700"
      },
      "message": "Change indirect reference table to use ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I340fdf430897ebd790ea4e35f94bcee776e98445\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\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": "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": "185d134a3b43ab7529053e965917e0fa74bceba4",
      "tree": "5d3d0cee3aa4c64fc5f36fd5f648e53f6df984ae",
      "parents": [
        "7233c7e752c0d26387d143ee74420e9cd1f09390"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 11 10:48:03 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 11 13:55:03 2016 -0700"
      },
      "message": "Add basic runtime-plugins support.\n\nThis allows one to pass shared-libraries on the command line that the\nruntime will load as plugins. They have access to runtime code and can\ninstall hooks to add functionality. Currently the only hook they can\ntouch is JavaVMExt::AddEnvironmentHook to register a callback for\nGetEnv(). More hooks might be added in the future.\n\nTest: ./test/run-test 900\nChange-Id: I852b4daf5a3fa71e9888722bc07794632c0e5010\n"
    },
    {
      "commit": "2d48e53b3893b608969d597cd35436be770588fc",
      "tree": "60cf5b104ecefe552dee9010868e11d3621e0ed5",
      "parents": [
        "34cfc661a5f291b1af710a90c65d846b6b43d30e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 17 12:46:14 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 20 14:35:18 2016 -0700"
      },
      "message": "ART: Use null for the BootClassLoader in LoadLibrary\n\nWe must translate the fake BootClassLoader object to the internally\nused null when loading libraries.\n\nBug: 29449194\nTest: test-art-host\n\n(cherry picked from commit f7e0db0ce1170b88043f7eb6afcc93c861c4611d)\n\nChange-Id: I823d34e209149b5b96529a423c60a1d77bf8e9d1\n"
    },
    {
      "commit": "bc5669ee83f45d74e46a6377ad9b2b57f64c2bec",
      "tree": "340664c098b4894ad58dc8aa5399fd007ebb8549",
      "parents": [
        "7dbf20abe99eb6c1d9c137e592c2025af725fa06"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 13 17:22:13 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 13 17:22:13 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Revert \"Revert some flaky unloading\"\"\"\"\"\n\nWith go/aog/238641 this should pass on the buildbots again.\n\nBug: 28406866\n\nThis reverts commit 7dbf20abe99eb6c1d9c137e592c2025af725fa06.\n\nChange-Id: I1038fe454491488fd561f5fce2e51a27487dce20\n"
    },
    {
      "commit": "7dbf20abe99eb6c1d9c137e592c2025af725fa06",
      "tree": "84d7b664e0a01948227ec9697510e3f9339f7a65",
      "parents": [
        "340f486aa0126facb67494449b5c2ee46a1a75e6"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 08 23:12:45 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 08 23:12:45 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Revert some flaky unloading\"\"\"\"\n\nFugu is still unhappy\n\nBug: 28406866\n\nThis reverts commit 340f486aa0126facb67494449b5c2ee46a1a75e6.\n\nChange-Id: I45fc77f924d991669d27b99c1458b2def8692664\n"
    },
    {
      "commit": "340f486aa0126facb67494449b5c2ee46a1a75e6",
      "tree": "340664c098b4894ad58dc8aa5399fd007ebb8549",
      "parents": [
        "83968f1a0949972e728d2302a26f9ae98dff34b2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 07 10:34:46 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 08 11:00:22 2016 -0700"
      },
      "message": "Revert \"Revert \"Revert \"Revert some flaky unloading\"\"\"\n\nEnsure that all threads are in the JNI code before destroying the\nruntime.\n\nBug: 28406866\n\nThis reverts commit b2716bbf321293ddbd0b96f0ea999794b0e9b09b.\n\nChange-Id: I7f6189a9d0d8a1bf7af5535026804bc2183466c9\n"
    },
    {
      "commit": "b2716bbf321293ddbd0b96f0ea999794b0e9b09b",
      "tree": "61d43314c583985c119c87e69ee8dd59076854f2",
      "parents": [
        "9e726e874580f1e8b2e0bfa63d2e9a3ac911cd1c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 07 07:26:55 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 07 07:26:55 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert some flaky unloading\"\"\n\nStill some issues with 136-daemon-jni-shutdown\n\nbug:28406866\n\nThis reverts commit 9e726e874580f1e8b2e0bfa63d2e9a3ac911cd1c.\n\nChange-Id: I76e7ba47e30cf97ecd074d5c2aff41cda8edac59\n"
    },
    {
      "commit": "9e726e874580f1e8b2e0bfa63d2e9a3ac911cd1c",
      "tree": "96a8bfe6aaafb8af2c63c1741ec2c541d518558d",
      "parents": [
        "681c58c6eab2bc8dab561cb6ac5bcabe89676730"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 06 10:45:28 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 06 10:48:05 2016 -0700"
      },
      "message": "Revert \"Revert some flaky unloading\"\n\nThis reverts commit 73ad16e0193866d36dbd4088ac77fa5d4ceec334.\n\nWith this code it is possible that during testing we will race the\nfinal shutdown of some threads (i.e. returning to thread_start after\nsignaling thread has been finished) with the unloading of libart.so by\nlibnativehelper. This could cause crashes. By ensuring that libart.so\ncode is not unloaded in libnativehelper we fix the issue with this\npatch.\n\nBug: 28406866\n\nChange-Id: Ic67118c2a4e743941402b17b6bbfe4cce441f68f\n"
    },
    {
      "commit": "73ad16e0193866d36dbd4088ac77fa5d4ceec334",
      "tree": "f8562c875e02a0fc97828e2ab426adf6f40bd67e",
      "parents": [
        "b88a2caa9af584ed6bd49e75f79527480393a5d1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 10 17:31:48 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 10 17:36:33 2016 -0700"
      },
      "message": "Revert some flaky unloading\n\nRevert \"Revert \"Revert \"Remove double unloading hack\"\"\"\n\nThis reverts commit c0f2e678e45ff191f90651117f4e238caa521b80.\n\nRevert \"Revert \"Revert \"Revert \"Revert \"(dl)Close native libraries on unload\"\"\"\"\"\n\nThis reverts commit 33bae7d52debe898879fc034a5524b1b165dbd88.\n\nStill flaky.\n\nBug: 28406866\n\nChange-Id: I31a9ace17c676ac615ed04a9f4ac51582fca55d9\n"
    },
    {
      "commit": "33bae7d52debe898879fc034a5524b1b165dbd88",
      "tree": "7cdd291b8633b2793f83dc116e3711614536306f",
      "parents": [
        "c0f2e678e45ff191f90651117f4e238caa521b80"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 10 10:12:00 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 10 10:12:00 2016 -0700"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"(dl)Close native libraries on unload\"\"\"\"\n\nThis reverts commit 624b68ecbe67dd91cb50f588fbfa2243def47f1e.\n"
    },
    {
      "commit": "c544f34bfed4273b38e5c3769c627e0c3e9c5d73",
      "tree": "2b4c8c7c7787290f8680674ffd9b34bf15c21dc1",
      "parents": [
        "266f2d4d51a18a703b2d4fbfedc63eb1baaf3ffb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 16:26:13 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 16:26:13 2016 -0700"
      },
      "message": "Initialize native loader before starting runtime\n\nLoading public libraries before everything else\nto prevent situation when libssl.so gets into\nlibopenjdk.so load group which then prevented\nfrom unloading by a global library referencing\nthe very same libssl.so\n\nBug: http://b/28449304\nChange-Id: I3bbff3cc6926c2377ae5cb5b7b5b5d6e26ea4470\n"
    },
    {
      "commit": "624b68ecbe67dd91cb50f588fbfa2243def47f1e",
      "tree": "ea9484dc8b8142b70eec7b0612148e648582ee2c",
      "parents": [
        "727d6dff8fce26f7f3a252177cc730fbfcbc52ee"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 09 08:33:13 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 09 08:33:13 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"(dl)Close native libraries on unload\"\"\"\n\nStill flakes on our tests.\n\nThis reverts commit 727d6dff8fce26f7f3a252177cc730fbfcbc52ee.\n\nChange-Id: If14076ba9fe91934294c24a23f53d55d88d76fb7\n"
    },
    {
      "commit": "727d6dff8fce26f7f3a252177cc730fbfcbc52ee",
      "tree": "20fef92e978908d09a072a6d5cf28f1b7b72a535",
      "parents": [
        "b652da7aae5515c58c776a6975305d895f81ac19"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 05 11:09:37 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 05 11:09:37 2016 -0700"
      },
      "message": "Revert \"Revert \"(dl)Close native libraries on unload\"\"\n\nThis reverts commit 0cf0dbd5f8ae5a1ccd51b45c4d692eedb3ff8a2b.\n"
    },
    {
      "commit": "a69ae8ab13d07fb3b03596a9b9049b3292dd0b20",
      "tree": "9b07a9a999c0fff883163b06e4eb0a92ede376fd",
      "parents": [
        "bdcd89e436a999f1da375f324eb69dfa0c9fe8ef",
        "0cf0dbd5f8ae5a1ccd51b45c4d692eedb3ff8a2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 05 08:02:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 05 08:02:38 2016 +0000"
      },
      "message": "Merge \"Revert \"(dl)Close native libraries on unload\"\""
    },
    {
      "commit": "0cf0dbd5f8ae5a1ccd51b45c4d692eedb3ff8a2b",
      "tree": "58b1b9651f595efe772db7b61351bfd971699306",
      "parents": [
        "2eb3ba9fcc120b74bdf9f61342347379223973f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 05 08:02:17 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 05 08:02:17 2016 +0000"
      },
      "message": "Revert \"(dl)Close native libraries on unload\"\n\nFailures on test 136.\n\nBug: http://b/28406866\n\nThis reverts commit 2eb3ba9fcc120b74bdf9f61342347379223973f3.\n\nChange-Id: Ic70aceb0831256b1e12730e5508e86e6fed8cb42\n"
    },
    {
      "commit": "bdcd89e436a999f1da375f324eb69dfa0c9fe8ef",
      "tree": "f961057d2aec1b4dd9a0fa4986f6edaf4f597034",
      "parents": [
        "861c135cec1cb4943e075d49719c86a36c03de1b",
        "2eb3ba9fcc120b74bdf9f61342347379223973f3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 04 23:38:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 04 23:38:55 2016 +0000"
      },
      "message": "Merge \"(dl)Close native libraries on unload\""
    },
    {
      "commit": "2eb3ba9fcc120b74bdf9f61342347379223973f3",
      "tree": "29ff9ed54bea36a22b19e7e5c7abd19c9f4c2ff3",
      "parents": [
        "2f8d3a6d08436be37b8087d7c7bb34b2b8e10e0e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 03 15:05:41 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 04 15:25:43 2016 -0700"
      },
      "message": "(dl)Close native libraries on unload\n\nDlclose native libraries when VM unloads a classloader. This\nchange is made to avoid leakage of adress space and RSS for\nmapped but unreachable native libraries.\n\nBug: http://b/28406866\nChange-Id: Iccaa87210908872c2013506d8a310955c1e3d888\n(cherry picked from commit 35f01195c4cf6e3c6fbb8b51f5a41b26132b4bdd)\n"
    },
    {
      "commit": "39d68ef756ef82afbc78baedd0cad8789c732958",
      "tree": "53caed613d52e49d312c7949663fc6bd4a9e5f0a",
      "parents": [
        "2f8d3a6d08436be37b8087d7c7bb34b2b8e10e0e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 29 16:02:38 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 02 13:42:40 2016 -0700"
      },
      "message": "Reset NativeLoader on DestroyJavaVM\n\nNative loader keeps vector of weak references\nto classloader. ResetNativeLoader instructs\nit to clear this vector once JavaVM is\ndestroyed.\n\nBug: http://b/28453840\nChange-Id: I45e38c45268a741d86ec686266b13fde7d5fb9a2\n(cherry picked from commit 9e83422b27faa3f249ec32ad2cbaa34530bd3df1)\n"
    },
    {
      "commit": "041169f7ca703d560a819e7a568170731d4ecdd6",
      "tree": "9184a7a5f74779787c897093428a58e4f1d19239",
      "parents": [
        "2712a078c74050f787900765830f7f33d8bd75e6"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 21 16:01:24 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 25 11:01:49 2016 -0700"
      },
      "message": "Initialize native loader on JNI_CreateJavaVM\n\nWe need to initialize native loader in order to\nbe able to use JNI from any VM, be it dalvikvm\nor VM started by zygote.\n\nBug: http://b/28082914\nBug: http://b/28320913\nChange-Id: Ice9a33a736d7c6ec3af9a5a0fb25a378ad9d2c59\n"
    },
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\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": "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": "f5a3099c509cf9b8a4ce9c3073a4db47e14a23bc",
      "tree": "5f07f3ea531240643f4f637c9d3abbad6feafa52",
      "parents": [
        "748047de833061466e230baf374480a147568f73"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 11 14:18:55 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 10 17:25:14 2015 -0800"
      },
      "message": "Use isolated namespaces for app native libs\n\nLinker namespaces provide necessary level\nof isolation for application native libraries.\n\nThe native libraries will no longer be able to\nmistakenly depend on platform private libraries\nlike /system/lib/libssl.so\n\nThis change creates one namespace for each instance\nof class-loader and uses it when loading native libraries.\n\nFor backwards compatibility with older apps we keep\nusing default namespace and LD_LIBRARY_PATH if target\nsdk version is \u003c\u003d 23. (currently set to 0 for testing)\n\nBug: http://b/22548808\nChange-Id: I64e97af7450fbf7e3740ccddda96bb2f7c52e03b\n"
    },
    {
      "commit": "1ed1a1320c89a143a8139d331a05d47ed3db64f7",
      "tree": "d0e99aafbf6f4b50d0255ad52278b50d825cebc7",
      "parents": [
        "2d902b99bba7ae1ad77ebeb038a4ef63c3ed6399"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 01 01:20:00 2015 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 01 01:20:00 2015 +0000"
      },
      "message": "Revert \"Change LoadNativeLibrary to use GetOrCreateAllocator\"\n\nThis reverts commit 2d902b99bba7ae1ad77ebeb038a4ef63c3ed6399.\n\nChange-Id: I4a674844f2f6d76d1c33741b46f12417ec7eab35\n"
    },
    {
      "commit": "2d902b99bba7ae1ad77ebeb038a4ef63c3ed6399",
      "tree": "4f3393583e8c7da6b370aa3ba61d1d7714349e0b",
      "parents": [
        "1850cb43dbddbc655a6f990a7d475587fa9d6659"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 24 16:22:54 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 30 14:31:17 2015 -0800"
      },
      "message": "Change LoadNativeLibrary to use GetOrCreateAllocator\n\nPreviously we used GetAllocatorForClassLoader. This did not\nhandle the case where someone called LoadLibrary without having\nalready loaded a class.\n\nAdded regression test.\n\nBug: 25866849\n\nChange-Id: Id720505eaded3b0f9c2eab59a40611b328837c4a\n"
    },
    {
      "commit": "04302dbb106d590ff72c0dfecda23d85b6565059",
      "tree": "2fe66e258de36bcebc913d48e04468b7c639578f",
      "parents": [
        "0e06a0989f4fc53e0d281a5a2cb5b5a17feaea0c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 11 23:45:34 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 13 15:21:29 2015 -0800"
      },
      "message": "Fix class unloading with the CC collector.\n\nAvoid unnecessarily decoding dex cache and class loader weak roots,\nwhich would trigger read barriers.\n\nRe-enable 141-class-unload with the CC collector.\n\nBug: 12687968\nBug: 24468364\nChange-Id: Ib4c19f25000873cab0e06047040442d135285745\n"
    },
    {
      "commit": "cffb747d6b292f07230c3a5fd06527e52dee5383",
      "tree": "3ed969fbf2187cfd14474dceaf7a2b20baecf42c",
      "parents": [
        "85e5207ef094f99081539333bd868ce721c6fd73"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 28 10:33:00 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 28 10:46:24 2015 -0700"
      },
      "message": "Don\u0027t unload shared libraries for null class loader.\n\nIf we load a shared library in the boot class loader (null),\nthen we create the SharedLibrary with a null class loader. We\nshouldn\u0027t unload this shared library if the class loader decodes to\nnull since it may still be in use.\n\nFixes some hangs in gcstress tests.\n\nBug: 22720414\nChange-Id: I52eca4cdba2c5ddd8e3dc7d133d253e5626c5b44\n"
    },
    {
      "commit": "598302ac91fd3e990f50e1aa530c3ad61d6d946e",
      "tree": "e348ed768ad36e70c920114d1b7fe7b5b4d24a57",
      "parents": [
        "a00bd9395be31bd69a0558b78a48e4279a6ce693"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 23 14:52:39 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 25 11:05:00 2015 -0700"
      },
      "message": "Call JNI_OnUnload when class loaders get collected\n\nAdded test case to 141-class-unload.\n\nBug: 22720414\nChange-Id: I0575fae72521520a17587e8b0088bf8112705ad8\n"
    },
    {
      "commit": "498b160f0cb61ea4756d8ce859ae73c522366458",
      "tree": "f582bfd38bc7e6fbbfd8fffc4a7f5449a962e7d5",
      "parents": [
        "fe9a1b05ea5a21b6d9a2e9e5081f5e80ff8a1ba2"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 16 21:11:44 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 17 11:34:14 2015 -0700"
      },
      "message": "Allow null self only in DecodeWeakGlobalDuringShutdown().\n\nTo follow up CL 169855, allow a null current thread only in\nDecodeWeakGlobalDuringShutdown() as a special case rather than\nDecodeWeakGlobal(). This is to prevent a bug where null is accidentally\npassed to DecodeWeakGlobal().\n\nBug: 23897251\n\nChange-Id: I5e7bb78ec739b8bfcf77284ed321d507737ee33e\n"
    },
    {
      "commit": "acd20ca4edcae752e3e555517fa6f8378177262c",
      "tree": "3f4ff9ad32076624abaf50bde1769ef56ef28e4d",
      "parents": [
        "e6576390f957c82c2aede438834d028066757368"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 08 17:50:48 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 08 17:57:01 2015 -0700"
      },
      "message": "Allow null current thread in jni weak ref decode during shutdown.\n\nFix a crash during a runtime shutdown for the read barrier config.\n\nBug: 23897251\nBug: 12687968\nChange-Id: Iea0888cb6d052d4becddba289dc0ed121461e97d\n"
    },
    {
      "commit": "9b1c71ec77d92d63f1c2183b0cd3588727b2c265",
      "tree": "1f8cfa8487497a24cd8fdb0269242ea9e6873544",
      "parents": [
        "5fbb15fe05fb8814907e00fdc0ca34d9b6113c9f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 02 18:51:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 04 15:44:45 2015 -0700"
      },
      "message": "Make class loaders weak roots\n\nMaking the class loaders weak roots in the class linker prevents them\nfrom keeping the classes as live. However we currently do mark them\nas strong roots to make sure no accidental class unloading occurs\nuntil the logic to free from linear alloc is complete.\n\nBug: 22720414\n\nChange-Id: I57466236d9ce6fd064dda9a30ce8ab68094fb8b0\n"
    },
    {
      "commit": "de286fdcb4d203438b4b49c22c8a4a24d08ad14d",
      "tree": "7a07331657f142455732d0161518a02e48d87326",
      "parents": [
        "8c679146d7a5c0c193ffab65d786fd5d84b3f4fd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 18:10:29 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 18:23:09 2015 -0700"
      },
      "message": "Address some leftover comments\n\nChange-Id: Ia8d01c8b1c10d23efdd94aa76289a1ed3373957c\n"
    },
    {
      "commit": "f1d666e1b48f8070ef1177fce156c08827f08eb8",
      "tree": "772cbbe6652b32ea2be31532156295db27579390",
      "parents": [
        "897ce64153e4758663e464fb5fb339f9a7b496c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 16:13:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 17:33:19 2015 -0700"
      },
      "message": "Add ScopedThreadSuspension\n\nFixes the TransitionFromRunnableToSuspended and\nTransitionFromSuspendedToRunnable pattern that was prone to errors.\n\nChange-Id: Ie6ae9c0357c83b4fc4899d05dfa0975553170267\n"
    },
    {
      "commit": "fdbd13c7af91a042eda753e436eeebf0e1937250",
      "tree": "c1fb370c9a4a30b9e589802c9c75dcc4919fc6e9",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 02 16:16:58 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 03 10:45:21 2015 -0700"
      },
      "message": "Some fixes for the CC collector.\n\n- Remove a DCHECK in DisableMarkingCheckpoint, which caused\n  occasional (false) failures.\n- Check the thread-local GetWeakRefAccessEnabled in boxed lambdas weak\n  access.\n- Add missing BroadcastForNewAllocationRecords and\n  BroadcastForNewWeakBoxedLambdas. The lack of the former caused\n  occasional deadlocks in the ddmc test.\n- Remove the \u0027ensure system weaks disallowed\u0027 calls, which weren\u0027t\n  useful and dead.\n\nBug: 12687968\nChange-Id: I33850c8d12e6e1a3aed1c2bb18eba263cbab76e8\n"
    },
    {
      "commit": "30b5e27083913bb711fca0ca89a941797fcf3d5d",
      "tree": "c0b5229955f580d8ef928433c5e7bc372c70c3aa",
      "parents": [
        "b52cfcb3868d08102b4c971974a7b1443861a90c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 01 11:14:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 01 19:46:40 2015 -0700"
      },
      "message": "Enable lockless decoding of weak globals\n\nWill help speed up decoding weak DexCache roots.\n\nChange-Id: I9a68beb4106cbd383111a30e249c9b0149064e78\n"
    },
    {
      "commit": "673ed3d8aedc5462a47ded827c99f35d46525457",
      "tree": "83de4690228c9f7772c48c770c5e2e5ba2dac6fe",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 14:56:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 10:58:31 2015 -0700"
      },
      "message": "Revert \"Revert \"Change dex caches to be weak roots\"\"\n\nThis reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b.\n\nBoot.oat creation time goes from 4.7s to 4.9s on host due to extra\nlocking. Will try to improve this in another CL.\n\nBug: 23602225\nBug: 22720414\n\nChange-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021\n"
    },
    {
      "commit": "81a9087f0df0518c39405b7d18ba5858a6d8b77b",
      "tree": "f4936654805b4d84540bd909095e8bbf69795bfd",
      "parents": [
        "f86a0859684c0f8964da4cbe75d49df8f832e85b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "message": "Revert \"Change dex caches to be weak roots\"\n\nThis reverts commit 3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4.\n"
    },
    {
      "commit": "3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4",
      "tree": "9ae990956db3d2d5970fb15bf264aeeb73e2bfe0",
      "parents": [
        "dcff51a0079c5e3abaf0335f7cb9a3dd44044456"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 14 14:03:10 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 25 18:00:47 2015 -0700"
      },
      "message": "Change dex caches to be weak roots\n\nChanged dex caches to be weak roots. This is necessary for class\nunloading since the resolved types arrays would keep classes live\nwhen they should be unloaded. Currently the dex caches still don\u0027t\nget freed due to the class loader roots.\n\nAlso deleted some unused functionality in image writer.\n\nBug: 22720414\nChange-Id: If22cb3cad7e3baabc8158a77d7f20799faf4c341\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "97509954404d031594b2ecbda607314d169d512e",
      "tree": "bb5371ba90d52e2f561b1dc6959584857cb84683",
      "parents": [
        "c6f3439b67962584cfb764133e192c3317f0e1fc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 13 14:35:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 14 16:45:27 2015 -0700"
      },
      "message": "Clean up GC callbacks to be virtual methods\n\nChange-Id: Ia08034a4e5931c4fcb329c3bd3c4b1f301135735\n"
    },
    {
      "commit": "0b71357fb52be9bb06d35396a3042b4381b01041",
      "tree": "44b8d6b0ca4a71f33cda55068fa9e14864c55625",
      "parents": [
        "0e87d1809443d41b431ce3a686b4e074df2d7b8b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jun 16 18:29:23 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jul 13 15:50:20 2015 -0700"
      },
      "message": "Thread-local mark stacks for the CC collector.\n\nThread-local mark stacks are assigned to mutators where they push\nreferences in read barriers to reduce the (CAS) synchronization cost\nin a global mark stack/queue.\n\nWe step through three mark stack modes (thread-local, shared,\nGC-exclusive) and use per-thread flags to disable/enable system weak\naccesses (only for the CC collector) instead of the existing global\none to safely perform the marking phase. The reasons are 1)\nthread-local mark stacks for mutators need to be revoked using a\ncheckpoint to avoid races (incorrectly leaving a reference on mark\nstacks) when terminating marking, and 2) we can’t use a checkpoint\nwhile system weak accesses are disabled (or a deadlock would\nhappen). More details are described in the code comments.\n\nPerformance improvements in Ritzperf EAAC: a ~2.8% improvement\n(13290-\u003e12918) in run time and a ~23% improvement (51.6s-\u003e39.8s) in\nthe total GC time on N5.\n\nBug: 12687968\nChange-Id: I5d234d7e48bf115cd773d38bdb62ad24ce9116c7\n"
    },
    {
      "commit": "8fec90b421732b3eb278555f57aaf48fda4fa4ba",
      "tree": "a4cde4508f636af01b7b5aa092a25de32cf2cad4",
      "parents": [
        "d3af34808d938bf4fb3ec95bfe0d4fa440ccdb95"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 30 11:23:44 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 30 11:25:14 2015 -0700"
      },
      "message": "ART: Remove bad FindSymbol call\n\nThe removed call is superfluous under normal operation and harmful\nwhen running a native-bridged library.\n\nBug: 22194296\nBug: https://code.google.com/p/android-developer-preview/issues/detail?id\u003d2367\nChange-Id: I3eb8f435a6a974a3e87a370b254ba8752f2a59b3\n"
    },
    {
      "commit": "054a078ecebfb84b5003f2d0239c472de53267e2",
      "tree": "bb1fe30d8e74e8204e93ad9db0a1c775f5be42fe",
      "parents": [
        "da2fd5aa2cbdab371f9a1c29ff4e4dfd09305fdc"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Apr 07 10:56:50 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 04 16:17:21 2015 -0700"
      },
      "message": "Add atrace calls to runtime start and heap create\n\n(cherry picked from commit 7fabaa6ba1927d21a317c03499b705cbde4f6a47)\n\nBug: 20727525\n\nChange-Id: I91a74b793fb9eda8ed580244a6a5fd313ef2eb27\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": "83c81955bfbfe8fbe6daf215ca73e436747e3e60",
      "tree": "c4edffdab08d61120c7d6590fa46f9f054a50365",
      "parents": [
        "b71c5878e6607fdc6a6f8624f4e9507d25116a53"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 27 19:29:29 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 27 19:46:50 2015 -0700"
      },
      "message": "Fix updating of JNI references for String.\u003cinit\u003e.\n\nWas missing updates to globals and weak globals.\n\nBug: 21288130\nBug: 21440428\n\n(cherry picked from commit 1a302fb4f84525289c1cf7a437f5be1999a75251)\n\nChange-Id: I41b64e8aae906f5986de483db096d8191e45f260\n"
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\n"
    },
    {
      "commit": "53056722fbbba44bb30e125b4a0be37e6bb878e7",
      "tree": "6439e1079e13fff84e98e8ef0a7feaf05ad9546a",
      "parents": [
        "526e2ab195672ce68de8351e04807063054ef3da"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 23 13:38:20 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 23 13:38:20 2015 -0700"
      },
      "message": "RTLD_LAZY is not supported, use RTLD_NOW instead.\n\nChange-Id: I5f4da01778a0df90bf104d868a00f86445d93a2d\n"
    },
    {
      "commit": "785049f8083e56e88dfeab5ff74fb3817f9854e3",
      "tree": "ab06a7fb4acb2ed73eed4b58327ba485f61560c4",
      "parents": [
        "f5988cf0c47ff935bb19c89ed0398be5fbe44bb6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jul 18 10:08:57 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 23 11:38:54 2015 -0700"
      },
      "message": "Add paths to apk!lib/\u003cabi\u003e to LD_LIBRARY_PATH\n\n  Add paths to .apk to LD_LIBRARY_PATH to enable\n  bionic linker\u0027s \"open from zip-file\" feature.\n\nBug: 8076853\nChange-Id: I1aa2c039bb2a590ae72f256acc9ba5401c2c59b1\n"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\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": "aaebaa0121be3b9d9f13630585304482cbcaeb4b",
      "tree": "0f47257e497fdf920c8d703d2d00adab53934a76",
      "parents": [
        "babecc483276b46d84cb83d4f01e577228827305"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jan 26 10:55:53 2015 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 04 13:29:19 2015 -0800"
      },
      "message": "art: Refactor RuntimeOptions/ParsedOptions\n\nRefactor the RuntimeOptions to be a\ntype-safe map (VariantMap, see runtime_options.h) and the ParsedOptions\nto delegate the parsing to CmdlineParser (see cmdline/cmdline_parser.h).\n\nThis is the start of a command line parsing refactor, and may include\nmore in the future (dex2oat, patchoat, etc).\n\nFor more details of the command line parsing generator usage see cmdline/README.md\n\nChange-Id: Ic67c6bca5e1f33bf2ec60e2e3ff8c366bab91563\n"
    },
    {
      "commit": "2cd334ae2d4287216523882f0d298cf3901b7ab1",
      "tree": "b72d3d07e5a04151caca96cae345075b6e4452b0",
      "parents": [
        "604e2828896fbb8663897d1e75112da7305ead4c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 14:03:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 23 14:07:32 2015 -0800"
      },
      "message": "More of the concurrent copying collector.\n\nBug: 12687968\nChange-Id: I62f70274d47df6d6cab714df95c518b750ce3105\n"
    },
    {
      "commit": "e34fa1df67fbe0173b4ea9abddcc3ae3d0537037",
      "tree": "a5148f079b5671a95f60910c41981ebf91db3a02",
      "parents": [
        "9f06b1946ae3ef1d2fd75bbf7f0a288bc611fe58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 14 14:55:47 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 15 12:23:28 2015 -0800"
      },
      "message": "Print more info in MarkSweep::VerifyRoot\n\nRefactored old root callback to use a new class called RootInfo.\nRootInfo contains all the relevant info related to the root\nassociated with the callback. The MarkSweep::VerifyRoot function\nnow uses this info to print the StackVisitor\u0027s described location\nif the GC root is of the type kRootJavaFrame.\n\nSome other cleanup.\n\nExample output:\nE/art     (12167): Tried to mark 0x123 not contained by any spaces\nE/art     (12167): Attempting see if it\u0027s a bad root\nE/art     (12167): Found invalid root: 0x123 with type RootJavaFrame\nE/art     (12167): Location\u003dVisiting method\n\u0027void java.lang.Runtime.gc()\u0027 at dex PC 0xffffffff (native PC 0x0)\nvreg\u003d0\n\n(cherry picked from commit 12f7423a2bb4bfab76700d84eb6d4338d211983a)\n\nBug: 18588862\nChange-Id: Ic5a2781f704e931265ffb3621c2eab4b2e25f60f\n"
    },
    {
      "commit": "956af0f0cb05422e38c1d22cbef309d16b8a1a12",
      "tree": "b558c804d206dad8da648b815750f1b3c97610ae",
      "parents": [
        "407d77f344cfbdbbfb50531c5f0766bc0892e2fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 11 14:34:28 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 12 09:33:34 2014 -0800"
      },
      "message": "Remove portable.\n\nChange-Id: I3bf3250fa866fd2265f1b115d52fa5dedc48a7fc\n"
    },
    {
      "commit": "0a7993ee8796e75ea7f251b7cb9e32f2f4335333",
      "tree": "452019b4d87d9a27b10709240ec46f3ef12a5d81",
      "parents": [
        "aad9c0767a8f8ae6250a7b4edee52cfb6d598687"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 05 11:16:26 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 05 11:16:26 2014 -0800"
      },
      "message": "ART: Fix typo\n\nChange-Id: Ie9a242240511adae9fcdbaae8d6b5be61fb5075b\n"
    },
    {
      "commit": "91c2f0cde2a009bd52aa1c3d1dee705cc02c932f",
      "tree": "55c02c51308df051c76d89a09627ad16d8f45f72",
      "parents": [
        "bd6bb37c377e78aeafb4faf9acd70efbcbc62d30"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 26 11:21:15 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 26 16:06:35 2014 -0800"
      },
      "message": "Trim reference tables when we trim the heap\n\nBefore:\nSystem server:\n virtual                     shared   shared  private  private\n  size      RSS      PSS    clean    dirty    clean    dirty    # object\n2200      300      229        0       80        0      220   77 /dev/ashmem/dalvik-indirect ref table (deleted)\nLocation:\n1896      128      102        0       28        0      100   39 /dev/ashmem/dalvik-indirect ref table (deleted)\n\nAfter:\n virtual                     shared   shared  private  private\n  size      RSS      PSS    clean    dirty    clean    dirty    # object\nSystem server:\n2216       64       64        0        0        0       64   79 /dev/ashmem/dalvik-indirect ref table (deleted)\nLocation:\n2120       48       48        0        0        0       48   67 /dev/ashmem/dalvik-indirect ref table (deleted)\n\nNo pause time regression measured in memalloc test.\n\n(cherry picked from commit 84dc99d2fa67e5dff018685661cb2bff62132989)\n\nChange-Id: I80d9bd3b98e888fa8f77d03df69f8479ed209986\n"
    },
    {
      "commit": "f4d4da18aa1914d10264082bd0433f59bff45453",
      "tree": "16edc1787c285135a0012cfc8737a8b89987f24b",
      "parents": [
        "4c9c251c2a32cd8d1be21bc47a9188358cb9f17f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:10:33 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:10:33 2014 -0800"
      },
      "message": "Allow JNI AttachCurrentThread to fail if not enough stack.\n\nAdd unit tests and move JavaVM JNI tests into there own set of gtests.\nBug: 18330119\n\nChange-Id: I0e93dff783b1f5d787b3084d24122883e14951a1\n"
    },
    {
      "commit": "c7dd295a4e0cc1d15c0c96088e55a85389bade74",
      "tree": "0c08a2236bc9ba5d9a4dc75d4dd0ed2d76f8f1c6",
      "parents": [
        "94e5af8602150efa95bde35cc9be9891ddf30135"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 21 23:31:19 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 12:06:23 2014 -0700"
      },
      "message": "Tidy up logging.\n\nMove gVerboseMethods to CompilerOptions. Now \"--verbose-methods\u003d\" option to\ndex2oat rather than runtime argument \"-verbose-methods:\".\nMove ToStr and Dumpable out of logging.h, move LogMessageData into logging.cc\nexcept for a forward declaration.\nRemove ConstDumpable as Dump methods are all const (and make this so if not\ncurrently true).\nMake LogSeverity an enum and improve compile time assertions and type checking.\nRemove log_severity.h that\u0027s only used in logging.h.\nWith system headers gone from logging.h, go add to .cc files missing system\nheader includes.\nAlso, make operator new in ValueObject private for compile time instantiation\nchecking.\n\nChange-Id: I3228f614500ccc9b14b49c72b9821c8b0db3d641\n"
    },
    {
      "commit": "d000480134b7b00895fbfd142f1d1e18d9cfa6e9",
      "tree": "a9fab808555310308aecda2a59a7c90727ede0ff",
      "parents": [
        "d866c7616cb3426c431b635ae69964ce69c2ecb5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 15 16:59:47 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 16 19:16:41 2014 -0700"
      },
      "message": "Add way to ensure we are at the front of the sigaction chain\n\nCalling this after jni_on_load fixes the unity apps. This is\nnot exactly correct since we may already have the following chain.\n\nStart up:\nUs -\u003e debuggerd\n\nAfter app goes in front:\nApp -\u003e us -\u003e debuggerd\n\nAfter we put ourself back at the front:\nUs -\u003e app -\u003e us -\u003e app -\u003e .... stack overflow.\n\nBug: 17620677\nChange-Id: I9183997e3d5ebd51c320b5d51425be5142e938f3\n\n(cherry picked from commit 1f24296c7c8a6501ee2388c0d20b48f471b48660)\n"
    },
    {
      "commit": "2e158932354e5950eb59c79498ab46b0586885fd",
      "tree": "6cccc50847537d9dd807b49347b7bec846e5ec6e",
      "parents": [
        "02308cf78484bcd125d92ebb27185d890889b92a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 13:14:31 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 16:55:49 2014 -0700"
      },
      "message": "Delete pin table\n\nThe pin table was brought over from dalvik but not really needed\nsince ART doesn\u0027t support pinning in movable spaces. The only\nthing it did was hold objects live for JNI functions.\nThis shouldn\u0027t be necessary since people keep jni references to\nthese objects or else they could never release the elements.\n\nBug: 17456946\n\n(cherry picked from commit a967c62e4e6675d3553445aa8e95a09e7a3381b0)\nChange-Id: Ibed0d029157ffb9e75ecd80d4d544d690986c090\n"
    },
    {
      "commit": "8a74117cac720239a69e60e734c7044b433fad47",
      "tree": "88663982b24ac419886c432b22aebb1387c0039a",
      "parents": [
        "9b2b927f573264c2f0d66b24ceeb361857a41ab3"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Sep 08 13:22:56 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 09 14:19:23 2014 -0700"
      },
      "message": "Address read barrier issue with cl/106467\n\nAnd tidy/add a check.\n\nBug: 12687968\nChange-Id: If63dc0d9d0a0ce5f2eeb81734ff8f4307865f67d\n"
    },
    {
      "commit": "c0542af3e2170143ba40d89136e284997e16bf64",
      "tree": "a61e3b9cd297a4c52a0c0488a502cb77c47f0690",
      "parents": [
        "d3c9358544bbab15093614c5c2b6a9de86e11f7b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 16:16:56 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 17:15:54 2014 -0700"
      },
      "message": "Remove abuse of mirror::Object* to reference special values.\n\nRemove kInvalidIndirectRefObject, kClearedJniWeakGlobal and\nObjectRegistry::kInvalidObject. Handle error conditions by passing in or\nreturning an error value.\nGetObjectRefType is simplified to be faster and not return invalid references\nthat are not expected according to the spec. Adjust check JNI and\njni_internal_test appropriately.\nFix cases in the debugger/JDWP of out arguments being passed by reference.\nBug: 17376993\n\nChange-Id: I3ce8a28c01827e163f4dc288449959464da788b1\n"
    },
    {
      "commit": "bad0267eaab9d6a522d05469ff90501deefdb88b",
      "tree": "1ce689b75184cb322b9edde34d7af938c658a6ae",
      "parents": [
        "0772a9d99c8774463c9076824340eaa4eb66f47f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 25 13:08:22 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 29 18:57:35 2014 -0700"
      },
      "message": "Add native memory accounting through custom allocator.\n\nAdded a custom allocator that lets you pass in a special tag which\nspecifices where the allocation came from. This is used when\ndumping. The performance overhead is low since each allocation only\ndoes a atomic add/sub for each allocation/free.\n\nThe measurements are dumped to traces.txt during SIGQUIT.\n\nExample output:\nI/art     (27274): AllocatorTagHeap active\u003d120 max\u003d120 total\u003d168\nI/art     (27274): AllocatorTagMonitorList active\u003d1572 max\u003d6240 total\u003d11724\nI/art     (27274): AllocatorTagClassTable active\u003d185208 max\u003d185208 total\u003d268608\nI/art     (27274): AllocatorTagInternTable active\u003d430368 max\u003d430368 total\u003d436080\nI/art     (27274): AllocatorTagMaps active\u003d5616 max\u003d6168 total\u003d34392\nI/art     (27274): AllocatorTagLOS active\u003d1024 max\u003d1536 total\u003d2044\nI/art     (27274): AllocatorTagSafeMap active\u003d0 max\u003d51936 total\u003d533688\nI/art     (27274): AllocatorTagLOSMaps active\u003d144 max\u003d1248 total\u003d5760\nI/art     (27274): AllocatorTagReferenceTable active\u003d10944 max\u003d11840 total\u003d19136\nI/art     (27274): AllocatorTagHeapBitmap active\u003d32 max\u003d40 total\u003d56\nI/art     (27274): AllocatorTagHeapBitmapLOS active\u003d8 max\u003d8 total\u003d8\nI/art     (27274): AllocatorTagVerifier active\u003d0 max\u003d18844 total\u003d1073156\nI/art     (27274): AllocatorTagModUnionCardSet active\u003d5300 max\u003d5920 total\u003d56020\nI/art     (27274): AllocatorTagModUnionReferenceArray active\u003d24864 max\u003d24864 total\u003d24864\nI/art     (27274): AllocatorTagJNILibrarires active\u003d320 max\u003d320 total\u003d320\nI/art     (27274): AllocatorTagOatFile active\u003d1400 max\u003d1400 total\u003d5852\n\nChange-Id: Ibb470ef2e9c9a24563bb46422d46a55799704d82\n\n(cherry picked from commit 5369c40f75fdcb1be7a7c06db212ce965c83a164)\n"
    },
    {
      "commit": "c8423521c1d1136c70b153479b7df3bf4fd7fc2a",
      "tree": "f7a0d12391f843d1b1eac1b0227c3237e7da3920",
      "parents": [
        "02a6317297b8745637b265ab75abbfa685879882"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 12 20:55:20 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Aug 15 10:10:09 2014 +0100"
      },
      "message": "[ART] Move to system/core native bridge library\n\nSome cleanups on the way:\n- move NativeBridgeRuntimeCallbacks from a global to a field\n- rename native_bridge_library_string to the more suggestive\nnavtive_bridge_library_path\n- clean up imports\n\nBug: 16884833\nChange-Id: I73aab8e212860ba5aee9444d801806d3da326a41\n"
    },
    {
      "commit": "68d8b42ddec39ec0174162d90d4abaa004d1983e",
      "tree": "0bb6ccf3b996bb8363c10d07aa39cde221980602",
      "parents": [
        "9c522c2cbbf50dc687728747b37ad59985750b65"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 08 08:29:53 2014 -0700"
      },
      "message": "Wire up check JNI force copy mode.\n\nIncrease check JNI checks.\nBreak apart jni_internal.h in to jni_env_ext.h and java_vm_ext.h.\nFix the abuse of ScopedObjectAccess/annotalysis by ScopedCheck in the case\nof VM routines.\nMake class loader override and shared library class loader JNI global\nreferences rather than mirror pointers.\nClean-ups to native bridge.\n\nChange-Id: If7c6110b5aade7a402bfb67534af86a7b2cdeb55\n"
    }
  ]
}
