)]}'
{
  "log": [
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "2ae4bc9f5b620bc768e4ae2ecab641a06a488a70",
      "tree": "071b002a76308f0a2830aa73c251970735ecb513",
      "parents": [
        "8bf4fece8a4cecc869f8684d52e91ade630f84df",
        "e4e812a917345a3cb9ac955c8a84f64dfc26b5d9"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Jul 24 19:11:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 19:11:28 2017 +0000"
      },
      "message": "Merge \"Allow DexFile#getDexOptNeeded to check case when downgrading is required\""
    },
    {
      "commit": "753d613704b86d37e9e2286dde22ab3452908f66",
      "tree": "1de1336786add03acb4be78462bf5806395a7fb9",
      "parents": [
        "c73753f70ab4fc9a166637bee514b292f0fa0109"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 12:43:24 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 14:32:05 2017 +0100"
      },
      "message": "Update VMRuntime.preloadDexCaches() for hash-based arrays.\n\nDo not try to fill entries that already contain some\nresolved item to avoid unnecessary work. We do not know\nwhich of the conflicting items may be needed later.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boot.\nBug: 30627598\nBug: 63892794\nChange-Id: Ie52f4455da544c1a3d2a61660c14c13c488c3fd7\n"
    },
    {
      "commit": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "e8f48da635c4d07bbe431e5819da8e1fad91a8ef",
      "tree": "144e5b35cfc54ec7b745ef71439ba505b13789f3",
      "parents": [
        "187ff4576847ab54db7e2eea6e6a55ccf7d1c40a",
        "a308a327884920cbb1e3e62964c4b5a01c29af8c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 19 21:12:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 21:12:18 2017 +0000"
      },
      "message": "Merge \"Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\""
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "e4e812a917345a3cb9ac955c8a84f64dfc26b5d9",
      "tree": "bf830d83f8d7ade1d875903ed5d8529d706d3b11",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu May 25 20:09:58 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Jul 19 00:15:56 2017 +0000"
      },
      "message": "Allow DexFile#getDexOptNeeded to check case when downgrading is required\n\nThe change in the API will allow comparison of compiler filter in case when\ndowngrade is required. Previously, it used to only consider cases of compiler\nfilter upgrades.\n\nTest: make \u0026 boot\nBug: 36598475\n(cherry-picked from commit cf3d122a9234414b7cd2aab340d1450f3e9da213)\n\nChange-Id: Ice292ef4f16c373297821c40e39987f3de914c67\n"
    },
    {
      "commit": "a308a327884920cbb1e3e62964c4b5a01c29af8c",
      "tree": "4bd09065c52f18685dc9e10d9eabdcdb29a51539",
      "parents": [
        "bacafb19fa654fb6c7ad610305bed45c2e4682e8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 16:51:51 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:02:27 2017 -0700"
      },
      "message": "Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\n\nThe \u0027:\u0027 separator is commonly used to separate class path elements. That\nmeans that we cannot easily encode multidex location in a classpath\nwithout complicating the parsing logic unnecessarily (e.g. when encoding\nclasspaths in the oat file).\n\nFor easy parsing and understanding kMultiDexSeparator and\nkClassPathSeparator should have different values. \u0027:\u0027 is a wide spread\nclasspath separator so this CL changes the value of kMultiDexSeparator to\n\u0027!\u0027 which is also commonly used to denote an object inside a given\ncontainer.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I30995c553d9131478c6c071b27327df6d2de06a7\n"
    },
    {
      "commit": "88fd720b6799184c8ad61e766a6d37af33ed30ef",
      "tree": "80e49456eafd44b0ad8790be456ae06949fcc506",
      "parents": [
        "1cba8d219331e4d6994359e8f9104e5db2c8f8a9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 08:31:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 13 09:11:03 2017 -0700"
      },
      "message": "Add Jvmti Suspend/ResumeThread functions\n\nEnable the can_suspend jvmti capability and implement all required\nfunctionality associated with it.\n\nTest: ./test.py --host -j40\nBug: 34415266\nBug: 62821960\nBug: 63579748\n\nChange-Id: I83b92de7f81622e1658114b034918e8295805b6e\n"
    },
    {
      "commit": "46f9340f2a055a8fdfebbfbb739c697c20d83e7c",
      "tree": "acb172f74723e4ea9ac7ded73b94c661217ec90d",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 11:59:50 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 14:24:56 2017 +0000"
      },
      "message": "Add SuspendReason enum and change Suspension functions.\n\nMore self-documenting and more type safe.\n\nBug: 62821960\nTest: ./test.py\nChange-Id: Ic7a1ae6a25e687d65f5aa10c1aad54a7b80dd086\n"
    },
    {
      "commit": "0a6d275eed2c36e42f835ee78f06f441cc85630e",
      "tree": "1e41285e9cc8e6e5637d2181fb8cb0ee22d2e4de",
      "parents": [
        "999dacfeac69c2bd8c936e9c285fe0c777f183b6",
        "87583b3de6e811e141f8c97c1f796eb516e8a751"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 02 21:29:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 21:29:53 2017 +0000"
      },
      "message": "Merge \"ART: Move RegisterNatives helper\""
    },
    {
      "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": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "87583b3de6e811e141f8c97c1f796eb516e8a751",
      "tree": "5b4688f306a2fda2f29bf319a8e1ff21309f93a3",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 25 11:22:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 08:24:12 2017 -0700"
      },
      "message": "ART: Move RegisterNatives helper\n\nMove the helper closer to the users.\n\nTest: m test-art-host\nChange-Id: Id05ce5f60af54d0c5aef0c7d8932706c4602fc94\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": "a14100ccf51cc63a5c472188d1e2d337627e49eb",
      "tree": "d659a038e35fdd790b642f51e3eddbc9b51d003a",
      "parents": [
        "1171deea4cb2f2db67a310ea8797d06206b2bdea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 15:09:56 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 16:10:27 2017 -0700"
      },
      "message": "ART: More header cleanup - jni_internal.h\n\nMove jni_macros.h to the clients (users of RegisterNativeMethods).\n\nTest: mmma art\nChange-Id: I052ac9f703ec69f0a2df1efcaf9f4a450eb7be1c\n"
    },
    {
      "commit": "4b3d690c37dbea09906acd4a05f59c7674f9a2d0",
      "tree": "c8f844f2dcc440c1a44a4ac51c4a0a3b3b42d872",
      "parents": [
        "cce39b5b4fc00ab9e6b4aaed1e7fa6928f0ec594"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 30 15:23:54 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 30 16:42:22 2017 +0100"
      },
      "message": "Fix OOME handling in VMClassLoader.getBootClassPathEntries().\n\nPropagate the OOME out of the native method.\n\nTest: m test-art-host\nTest: testrunner.py --host\nBug: 62185851\nChange-Id: Ia0bc2ecd8fe1be6ad6febee373a1531de38f85cf\n"
    },
    {
      "commit": "367b9d8694b28896f681f00195cf4980536fe3f3",
      "tree": "fd9bc8499b8a86660da2cd00a8a09a0d9118e97b",
      "parents": [
        "0af0ec2b59e624861dc3461ba9ce192fd350fd12"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 15 18:18:39 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 17 22:00:18 2017 +0000"
      },
      "message": "Also return vdex file from DexFile.getDexFileOutputPath\n\nTest: m test-art-host\n      device boots\nBug: 33168521\n\nChange-Id: I812d5ba2d8fdab484ea40964da1e642e0bc21da4\n"
    },
    {
      "commit": "741d426f2eda2ea1f1a8d7dfce1cd741a6737cc6",
      "tree": "015f47ef7e78939ee6c0b8fcd9f10732de82efd9",
      "parents": [
        "15cb9753075bcaa5b91a6497a2d35e8bd98af1f0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 03 13:08:36 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 04 10:52:55 2017 +0100"
      },
      "message": "Handle safe mode in PackageManager.\n\nART side of the change.\n\nbug:37929796\nTest: manual OTA with a safemode app.\nChange-Id: I28f11e852be4c9c9009f5335eb8dbdf0f26f89b4\n"
    },
    {
      "commit": "4dc06e2ef900132d8395539842c35533da8b912a",
      "tree": "2114165e7cb3fe775537d2ebc728bbd5ed696479",
      "parents": [
        "8e2252df6fbd1313ca17724be36199d32e8e44cc",
        "49cda06d5bf003f588ba7839bbf89d606237dfa7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 27 11:40:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 27 11:40:07 2017 +0000"
      },
      "message": "Merge \"Rename and obsolete compiler filter names.\""
    },
    {
      "commit": "c15a2f4f45661a7f5f542e406282c146ea1a968d",
      "tree": "50ad6104b0b8739f272782c35a7022cca64d2601",
      "parents": [
        "9ae527f615f61aec4aaca310c52f373e8c3d8d58"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 12:09:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 16:48:00 2017 -0700"
      },
      "message": "ART: Add object-readbarrier-inl.h\n\nMove some read-barrier code into a new header. This prunes the\ninclude tree for the concurrent-copying collector. Clean up other\nrelated includes.\n\nTest: mmma art\nChange-Id: I40ce4e74f2e5d4c692529ffb4df933230b6fd73e\n"
    },
    {
      "commit": "6b8b07521125e7744327d00e64f897b4dd5d1db9",
      "tree": "1a8d6cd6c50fdcb5edc388588e36eb41c78e1324",
      "parents": [
        "e0ffd22714fd4bc4edf81000966b98eae59788dd",
        "a1d2f957a21319d1110bebb9a52f46fd1c67ffaf"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 21 18:57:25 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 21 18:57:27 2017 +0000"
      },
      "message": "Merge changes I6ff2d6f8,I8f60f116\n\n* changes:\n  ART: Clean up art_field.h\n  ART: Clean up art_method.h\n"
    },
    {
      "commit": "a1d2f957a21319d1110bebb9a52f46fd1c67ffaf",
      "tree": "db9b6eda7cd4764e13c07256df14a7c14888ee75",
      "parents": [
        "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 20 22:53:58 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:41:28 2017 -0700"
      },
      "message": "ART: Clean up art_field.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.\n\nTest: m\nChange-Id: I6ff2d6f89b741d8188e19426eccf4743fec688fc\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": "49cda06d5bf003f588ba7839bbf89d606237dfa7",
      "tree": "bc97607c6ae33a69ebdea2346c781f7ac238c9e3",
      "parents": [
        "aa03f6fa38da0166790f2b22b679e6568ad56f7d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 13:08:25 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 13:25:15 2017 +0100"
      },
      "message": "Rename and obsolete compiler filter names.\n\nART side of the change.\n\nbug:34715556\ntest: test-art-host, jdwp, libcore\nChange-Id: I3a73ae4af2d602431150c8ecfceaddb9ba519cee\n"
    },
    {
      "commit": "1f7079b72965cba0b1a40f53be97a4944ecb4a51",
      "tree": "bfa230da1e0ccea2f5cb343a40fb0cf6eb691ff0",
      "parents": [
        "77ced6adfd4de14a868364c4f03986be79d3a081"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 18 21:25:37 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 18 21:35:27 2017 -0700"
      },
      "message": "Ignore the optimized location passed to DexFile.loadDex()\n\nThis ensures that apps don\u0027t trigger dex2oat to locations\nthat are not recognized (anymore) by the runtime.\n\nThe background compilation job will takes care of optimizing\nthe dex files loaded via DexClassLoader.\n\nTest: m test-art-host\nBug: 36824842\nChange-Id: I6883740407203b4aa9511e7d15a8201db3df1168\n"
    },
    {
      "commit": "35b59a262f660adaf30db11bc0c3d14bb56ebf79",
      "tree": "d022eb3b0d944daa054e124165c8b8e988c9c9d8",
      "parents": [
        "36831abc29f76baee9a7673a2c18465f33df3f05"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 17 15:24:43 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 18 17:29:02 2017 +0000"
      },
      "message": "Differentiate between native alloc and normal background GC\n\nAdded a new GC cause kGcCauseForNativeAllocBackground.\n\nBug: 35872915\n\nTest: test-art-host\n\nChange-Id: I94e17f8bd53af29f2862b9910bd8abd2df97e229\n"
    },
    {
      "commit": "d66def32a2d7ee5e7c5225dce52b980b63bce91c",
      "tree": "e1f6db3a25115e85537fb35882179f3e6f7d6d62",
      "parents": [
        "8682fce2634c392510b98ab0b08544a7336143b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 04 10:09:05 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 04 10:09:05 2017 -0700"
      },
      "message": "ART: Fix preloaded dex cache expectations\n\nIn fallback mode, there may not be dex caches for all boot classpath\ndex files - there is no guarantee that a class from every dex file\nhas been loaded.\n\nBug: 36033084\nTest: m\nTest: m test-art-host\nTest: manual - fill the /data partition, reboot\nChange-Id: I3752b48d9d61947959e8056bd01db0e323724d37\n"
    },
    {
      "commit": "d7f0339f45537c55812dc458340eb6415406c100",
      "tree": "445143f4bf747f672a29f65b7f32fc376c10bb00",
      "parents": [
        "c700f00067aa9ed6d250478e530d653f22125814"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 29 14:47:49 2017 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 30 13:48:18 2017 -0700"
      },
      "message": "Lower daemons priority to 124 (art).\n\nTo avoid jank.\n\n(chery picked from commit 38a57ef702964b82836f89a1f996aff4d1453d94)\n\nBug: 36631902\nTest: boot marlin oc-dev and check priorities.\nTest: test-art-host\nChange-Id: I8f809fbf5ac9605f656884fcf68643c87f22d154\n"
    },
    {
      "commit": "8f2b925473cfdc7650cef407102957befe0c6bb5",
      "tree": "4af3395adaf03cb4a60cd40e7b3ee4196645eb9e",
      "parents": [
        "de9b8d63ef548d56de9c9d4657a7b916050d81ad",
        "6b2dc3156a2140a5bfd9cbbf5d7dad332ab5f5bd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 17 09:05:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 17 09:05:56 2017 +0000"
      },
      "message": "Merge \"ART: Get rid of most of java.lang.DexCache.\""
    },
    {
      "commit": "6b2dc3156a2140a5bfd9cbbf5d7dad332ab5f5bd",
      "tree": "a335cae93c0eabae63e39b8bc13ef3e15f4f7e50",
      "parents": [
        "f83f3f6ecb1153d96cc8007e8a0d1e35af4d3f38"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 14 13:26:12 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Mar 16 17:56:04 2017 +0000"
      },
      "message": "ART: Get rid of most of java.lang.DexCache.\n\nAll remaining functionality is moved over to native. The DexCache\nobject itself is allocated in the Java heap, even though there\u0027s no\nlonger much of a reason to do so. It can be changed in a future change\nif needed.\n\nThis also renames mirror::Class:GetInterfaces to GetProxyInterfaces\nsince it\u0027s supposed to be called only for proxies.\n\nTest: test-art-host, cts -m CtsLibcoreTestCases\n\nChange-Id: Ie261f22a9f80c929f01d2b456f170c7a464ba21c\n"
    },
    {
      "commit": "e9cd81c14609fa9dae2125e96ec4d86ca959117f",
      "tree": "e261a0445fc6a8bbd1c21cda9c012b3392e606fe",
      "parents": [
        "a70b683cd796f7e5bb50d8d282f72c50c89af250",
        "9e57abacecc683f50dd6c9870a32ee075eaf86a8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 16 13:30:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 16 13:30:24 2017 +0000"
      },
      "message": "Merge \"Fix String::DoReplace() using obsolete `this`.\""
    },
    {
      "commit": "9e57abacecc683f50dd6c9870a32ee075eaf86a8",
      "tree": "27ef93c87f3ce9f09414620f77b35f6d0949fb22",
      "parents": [
        "26ec3cad4968ae32ce9d04c3046f766df46d9bd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:45:40 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:55:24 2017 +0000"
      },
      "message": "Fix String::DoReplace() using obsolete `this`.\n\nChange it to a static function taking a Handle\u003c\u003e.\n\nTest: testrunner.py --host --interp-ac --gcstress -t 021-string2\nBug: 36335996\nChange-Id: I5ab3e7adc59d6a9095290e57d5ce5d46b79f089b\n"
    },
    {
      "commit": "f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b",
      "tree": "324b41485ce6c414c1a006c72cbcc5ed9f466138",
      "parents": [
        "8d6768d47b66a688d35399d524ad5a5450e9d9d4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 14:18:46 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 19:03:20 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based DexCache field array.\"\n\nTest: testrunner.py --host --interpreter\nBug: 30627598\n\nThis reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f.\n\nChange-Id: I275508e288a85d3aa08f7405a1a4f362af43b775\n"
    },
    {
      "commit": "8d6768d47b66a688d35399d524ad5a5450e9d9d4",
      "tree": "0b8733baef378d9e060c8e74319a3846489590b2",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 10:13:21 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 13:55:13 2017 +0000"
      },
      "message": "Revert^6 \"Hash-based dex cache type array.\"\n\nFixed ImageWriter to write class table also if it contains\nonly boot class loader classes. Added a regression test and\nadded extra checks for debug-build to verify that dex cache\ntypes from app image are also in the class table. Removed\nsome unnecessary debug output.\n\nTest: 158-app-image-class-table\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f.\n\nChange-Id: I6a747904940c6ebc297f4946feef99dc0adf930c\n"
    },
    {
      "commit": "0b66d6174bf1f6023f9d36dda8538490b79c2e9f",
      "tree": "1cc4d2ae868745a65fd0489a6fb2f5f2fc9e880f",
      "parents": [
        "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:50:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 16:08:01 2017 +0000"
      },
      "message": "Revert^5 \"Hash-based dex cache type array.\"\n\nFor app images, ImageWriter does not add boot image\nclasses to the app image class table even though it\nkeeps them in the dex caches. The reason for that is\nunknown, the code looks OK.\n\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nAlso reverts \"Improve debugging output for a crash.\"\n\nThis reverts commits\n    bfb80d25eaeb7a604d5dd25a370e3869e96a33ab,\n    8dd56fcb3196f466ecaffd445397cb11ef85f89f.\n\nTest: testrunner.py --host\nChange-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84\n"
    },
    {
      "commit": "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f",
      "tree": "0aacaaf1f193e96b55e0b203b678ae724c0fb6f5",
      "parents": [
        "8f323e09e692ff4f95f40300391fe41fb96a6c49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:51:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:52:17 2017 +0000"
      },
      "message": "Revert \"Hash-based DexCache field array.\"\n\nReverting to allow rebasing the revert\n    https://android-review.googlesource.com/351689\nwithout too many conflicts.\n\nBug: 30627598\n\nThis reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64.\n\nChange-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53\n"
    },
    {
      "commit": "1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64",
      "tree": "94cbab7c3097ce7d3a1feb1a69f28406644af085",
      "parents": [
        "d1d4530ffa97729aa8944932a7ac2009ae51c7e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 11:39:42 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 10 12:59:37 2017 +0000"
      },
      "message": "Hash-based DexCache field array.\n\nTest: m test-art-host, both AOT and interpreter\nTest: m test-art-target, both AOT and interpreter\nTest: m valgrind-test-art-host\nBug: 30627598\nChange-Id: If992f091aadd862d17b09928d21659573dd285a0\n"
    },
    {
      "commit": "77651c4bbd56d502bcf05347e641061bbebca099",
      "tree": "7965e6e8cf29f1c78fc15e3eb3d645bb681a3f7d",
      "parents": [
        "f9d80d72a686048200bcf6a7f37192f9eb75d5bd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 18:04:02 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 07 11:38:22 2017 -0800"
      },
      "message": "ART: Clean up code related to foreign dex use\n\nWe simplified the way we track whether or not a dex file is used by\nother apps. DexManager in the framework keeps track of the data and we\nno longer need file markers on disk.\n\nTest: device boots, foreign dex markers are not created anymore\n\nBug: 32871170\n\n(cherry picked from commit 868515e2606820ea96f8b9022b442f5bcc770867)\n\nChange-Id: If51b3301c845a8c3bbaf87d0e35a12c700e1d0aa\nMerged-In: I5a04d3bba29581dedf05e21b8b20d79afa9b405a\n"
    },
    {
      "commit": "84740267390c28f7f88cdb66f8429badfa15456e",
      "tree": "9347bdc4cea0f1b7d0ec986a8b97441f00b6c321",
      "parents": [
        "861af894a5d2d4a77eb66041bddfbaf54d8c8ee8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 01 09:00:28 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 03 08:55:05 2017 -0800"
      },
      "message": "Clean up ZygoteHooks stack walking slightly.\n\nTest: Build and run marlin with libartd.so\nChange-Id: I4a67935c5c7270636085c3ee12db0ebc1798a89e\n"
    },
    {
      "commit": "861af894a5d2d4a77eb66041bddfbaf54d8c8ee8",
      "tree": "757339c632345f2e5f5005ba084d2020e7f91548",
      "parents": [
        "edb792d53fd8b9f94244396a698fb1dc68cb6905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 28 12:45:36 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 28 14:35:47 2017 -0800"
      },
      "message": "Fix mutex issue\n\nWe were having some issues with mutex locking order related to\nupgrading local to global references when recording non-debuggable\nclasses. We refactored this code so there is no longer this issue.\n\nBug: 35838746\nTest: Build and boot a marlin with libartd.so\n\nChange-Id: I093b433d921478307130c49a07d0c7ec34dd070d\n"
    },
    {
      "commit": "c0ca5fd8f54f5b8361548174cadb236d01789d6d",
      "tree": "7a4710d29947921c6e63fed8a1bf9ee27aa04818",
      "parents": [
        "e44d32542794bbc32e0aa7e3b37fc5b914e1de0a",
        "e00e5590a9cfb72c89294dd7a5480e5fa69a90b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 28 14:15:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 28 14:15:21 2017 +0000"
      },
      "message": "Merge \"Fix java.lang.Void.TYPE (void.class) initialization.\""
    },
    {
      "commit": "e00e5590a9cfb72c89294dd7a5480e5fa69a90b9",
      "tree": "7eb9254bd6cfe10b2c4005e9cdec3a7cfbb2f442",
      "parents": [
        "06f658ab309a5f1930b8a6bc306ef79d0ef0616e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 24 14:58:29 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 27 16:31:42 2017 +0000"
      },
      "message": "Fix java.lang.Void.TYPE (void.class) initialization.\n\nDo not rely on the DexCache resolved types now that entries\ncan be evicted.\n\nTest: 157-void-class\nTest: testrunner.py --host\nBug: 35652776\nBug: 30627598\nChange-Id: Ic384174ae1849072568dd6d2ff9cc60d7f7f1880\n"
    },
    {
      "commit": "6e311acac755e0446660fdda955e9352895f2b01",
      "tree": "19d654b562d328c338f95c05687d3170d207ab7e",
      "parents": [
        "69c4c27cc965620511e876248f679bbcf4fde646"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 27 11:46:03 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 27 12:48:57 2017 +0000"
      },
      "message": "Re-arrange System.identityHashCode for better performance.\n\nBrings in ~8% improvement to Ritz::EvaluateComplexFormulas.\n\nTest: run-libcore-tests test-art-host\nbug: 30933338\nChange-Id: I9966da4143d013caf2e610eb176c0a8fffabca45\n"
    },
    {
      "commit": "2baf0756b1fe0bda98b7fcceeaf0bde1346031d9",
      "tree": "914d88033e34c6b2281a8cca43dda5764111213f",
      "parents": [
        "1883c6df11e93139f1b2923091c5771f5656d894",
        "e77b48b7d0df3cd7aa650ded8373f86974556373"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 23 23:24:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 23 23:24:23 2017 +0000"
      },
      "message": "Merge \"Check stacks for unmodifiable frames\""
    },
    {
      "commit": "e77b48b7d0df3cd7aa650ded8373f86974556373",
      "tree": "397def95ccf39a0d2c777e4a656cf4f2a0fdf69c",
      "parents": [
        "88837a783d8c700f597da55b8e0e091b4d44f87c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 22 11:08:06 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 23 13:11:51 2017 -0800"
      },
      "message": "Check stacks for unmodifiable frames\n\nWe keep a generate a list of classes that have unmodifiable frames\nduring the zygote fork and check for them in IsModifiableClass.\n\nTest: Start apps on aosp_marlin-userdebug phone with libartd.so\n\nChange-Id: I6bbaa20d307c3803a5808fb4108638365895e802\n"
    },
    {
      "commit": "3b6f440dbd066f03a737da6d292074f47b3fbc29",
      "tree": "af0da4bdea7ff689929c8e23e1eaf6361dfc3ee8",
      "parents": [
        "5c19b373ae45ec6d67b41917af63cac8c3ebbe89"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 16 16:13:17 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 21 11:40:51 2017 -0800"
      },
      "message": "jni: Switch to @FastNative for all JNI functions. Deprecate !bang JNI.\n\nSwitches all (248) methods that previously used !bang JNI in art/libcore\nto all use @FastNative.\n\nAlso deprecate !bang JNI since nothing in Android seems to (or should\nbe) using it anymore.\n\nThis measures to be a 3% startup time improvement in system_server.\n\nTest: make test-art-host\nBug: 34955272\nChange-Id: I0881f401c7660c79f275235362777bfa58241deb\n"
    },
    {
      "commit": "92907f3f7af106a9eeb341caba17f3770203f7fb",
      "tree": "c44f6b487c9ad078c044f19a4a6d72eaf4979d11",
      "parents": [
        "1b7ba9e15d9525eec7ea68e9ecf95e5777a46069"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:08:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 21 12:31:52 2017 +0000"
      },
      "message": "Remove String.setCharAt().\n\nThe internal API String.setCharAt() breaks the assumption\nthat strings are really immutable. That in turn breaks\nstring compression invariants - compressible strings must\nbe compressed. This CL removes the String.setCharAt() API.\n\nThe method was used only in String.replace(char, char)\nwhen we found a match, copying the string on first match.\nInstead, introduce a new native method that does the whole\nreplacement with a single call when we find the first match.\n\nStringReplaceBenchmark results on Nexus 6P, lower is better:\n  timeReplaceCharNonExistent/EMPTY   41.93 -\u003e   38.25 (-9%)\n  timeReplaceCharNonExistent/L_16   114.90 -\u003e   95.09 (-17%)\n  timeReplaceCharNonExistent/L_64   419.97 -\u003e  320.65 (-24%)\n  timeReplaceCharNonExistent/L_256 1667.01 -\u003e 1091.25 (-35%)\n  timeReplaceCharNonExistent/L_512 3253.50 -\u003e 2075.62 (-36%)\n  timeReplaceCharRepeated/EMPTY      41.93 -\u003e   39.58 (-6%)\n  timeReplaceCharRepeated/L_16      114.87 -\u003e   95.40 (-17%)\n  timeReplaceCharRepeated/L_64     1267.29 -\u003e  704.32 (-44%)\n  timeReplaceCharRepeated/L_256    5139.14 -\u003e 1361.80 (-74%)\n  timeReplaceCharRepeated/L_512   10787.81 -\u003e 2338.41 (-78%)\n  timeReplaceSingleChar/EMPTY        41.78 -\u003e   37.16 (-11%)\n  timeReplaceSingleChar/L_16        449.54 -\u003e  497.51 (+11%)\n  timeReplaceSingleChar/L_64        942.08 -\u003e  891.35 (-5%)\n  timeReplaceSingleChar/L_256      2756.18 -\u003e 2174.64 (-21%)\n  timeReplaceSingleChar/L_512      5489.91 -\u003e 3983.32 (-27%)\n\nTest: testrunner.py --host\nTest: run-libcore-tests.sh --mode\u003dhost\nTest: testrunner.py --host with string compression enabled.\nTest: run-libcore-tests.sh --mode\u003dhost with string compression enabled.\nBug: 31040547\nChange-Id: I9cf0d5457182f0a33ca8251c29931d3eb624ae07\n"
    },
    {
      "commit": "bfb80d25eaeb7a604d5dd25a370e3869e96a33ab",
      "tree": "96068dd9b9b3bc2e1bcc25d38bbd2420d5b0f1bb",
      "parents": [
        "7a49d93ee265b978ab29cae659e46d41da78459a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 14 14:08:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:13:14 2017 +0000"
      },
      "message": "Revert^4 \"Hash-based dex cache type array.\"\n\nAdded extra output to the abort message to collect more data\nwhen we hit the crash. Added extra check when loading an app\nimage to verify that the class table isn\u0027t already broken.\n\nTest: testrunner.py --host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5.\n\nChange-Id: I9bb442a184c236dcb75b3e42a095f39cd6bee59d\n"
    },
    {
      "commit": "ea9465eaaa55646b0de242d2a21f9c1f0f0aa01f",
      "tree": "12590422d05d459a63a56937e77520e84cf4c288",
      "parents": [
        "4c9c57054578022d9ab8442264fbc661769f97f5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 16 15:38:35 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 17 08:33:06 2017 -0800"
      },
      "message": "Move InMemoryDexClassLoader to be a subtype of BaseDexClassLoader\n\nAlso write a test that class transformation works with this type of\nclass loader.\n\nTest: mma -j40 test-art-host\n\nChange-Id: Ibc2214191e04876ff7bbea010be6ec03b6f41904\n"
    },
    {
      "commit": "8dc12b1546c7409be19a7b5dc48932011db13067",
      "tree": "a157d2fb7bee08f7c0290e8a41f0c7c9c883794d",
      "parents": [
        "e92ba687f9ab2a3cd9724f494b6899e8e6e472ec",
        "ffc8cad04135192a8d10e7f38bd97c48101294a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 09:39:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 09:39:06 2017 +0000"
      },
      "message": "Merge \"Add a DCHECK in thread::GetPeer.\""
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "ffc8cad04135192a8d10e7f38bd97c48101294a8",
      "tree": "fb90432ea5e6d218891c0b3fcccc0fa77d202f7d",
      "parents": [
        "4e4b62e21672dbacf5d5abb688a126aabad29269"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 10 10:59:22 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 14 15:42:29 2017 +0000"
      },
      "message": "Add a DCHECK in thread::GetPeer.\n\nMotivated  by https://android-review.googlesource.com/#/c/333205/.\n\nTest: test-art-host run-jdwp-test.sh\nChange-Id: I173c060324aa0dc39144db55e3a97e672c012ba8\n"
    },
    {
      "commit": "5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5",
      "tree": "be0e9fdeb90bcbad76b17b3aae4e746d977d80ee",
      "parents": [
        "518f373324f355f8e58440dfbc3f5a1f2244bde7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 18:32:04 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 19:34:54 2017 -0800"
      },
      "message": "Revert^3 \"Hash-based dex cache type array.\"\n\nAssert failing for \"earchbox:search\":\nF zygote64: class_linker.cc:4612] Check failed: handle_scope_iface.Get() !\u003d nullptr\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 85c0f2ac03417f5125bc2ff1dab8109859c67d5c.\n\nChange-Id: I39846c20295af5875b0f945be7035c73ded23135\n"
    },
    {
      "commit": "85c0f2ac03417f5125bc2ff1dab8109859c67d5c",
      "tree": "844952d237e35faa5c5a2357ab037366c8397115",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 02 16:42:38 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 10 11:23:11 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based dex cache type array.\"\n\nThe reason for the revert was fixed by\n    https://android-review.googlesource.com/332666 .\nWe now enable clearing dex cache types in test 155 from that\nCL. Also avoid an unnecessary store in LookupResolvedTypes()\nand prevent verifier from messing up the dex cache types.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit d16363a93053de0f32252c7897d839a46aff14ae.\n\nChange-Id: Ie8603cfa772e78e648d005b0b6eae59062ae729d\n"
    },
    {
      "commit": "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf",
      "tree": "a16a1efaaadcb51001554a1ab829fbc456b104ae",
      "parents": [
        "e6dddf0f4f31db42c67661adc3845165c64d4c3d",
        "cd556b003adbb53739d4b3f43135e6a0ae69509a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 09 12:30:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 09 12:30:42 2017 +0000"
      },
      "message": "Merge \"Fix dex cache resolved types and class table mismatch.\""
    },
    {
      "commit": "cd556b003adbb53739d4b3f43135e6a0ae69509a",
      "tree": "a30c9f03071d87e1f75a0d0b8c2961d113ea767d",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 03 11:47:34 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 09 10:10:29 2017 +0000"
      },
      "message": "Fix dex cache resolved types and class table mismatch.\n\nRecord class table in ClassLinker::DexCacheData and use\nit in DexCache.setResolvedType() to store the type also\nin the initiating loader\u0027s class table if the dex file\nhas been registered.\n\nAlso throw InternalError when trying to register the\nsame DexFile with multiple class loaders. (Different\nDexFile instances referencing the same file are OK.)\n\nTest: 155-java-set-resolved-type\nTest: m test-art-host\nBug: 30627598\nBug: 34193123\nBug: 34839984\nChange-Id: Ia48acb300337c45880ea1459d2d32789546d67f4\n"
    },
    {
      "commit": "90b936ddda63139ff46a6755c3b83ad6e4ab4ac5",
      "tree": "c7ce2c3004eecc16ab41ed7cde105c3019638d4b",
      "parents": [
        "b78a8af993e877d74c5938f65f95feaf2fa01321"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 31 08:58:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 03 10:03:52 2017 -0800"
      },
      "message": "ART: Refactor verify_object.h\n\nMove the actual VerifyObject check into a new cc file, as we\ncommonly don\u0027t enable the check at all. This allows to cut the\n-inl include from almost all current users.\n\nThis also exposes missing -inl includes. Also fix up some of our old\nmess where .h defined functions require -inl.h defined functions.\n\nTest: m\n\nChange-Id: I3dd821bbe2015564a29bf1ed9be00f7a7276ad61\n"
    },
    {
      "commit": "d16363a93053de0f32252c7897d839a46aff14ae",
      "tree": "8823c6dd4641eae333aa7001203460757a515010",
      "parents": [
        "ac240396125911b52437a460a400c8b38be43a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 14:09:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 15:27:37 2017 +0000"
      },
      "message": "Revert \"Hash-based dex cache type array.\"\n\nReverting to work around some programs crashing with\n    Check failed: handle_scope_iface.Get() !\u003d nullptr.\nthough the reason for the failure not yet understood.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\nBug: 30419309\n\nThis reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8.\n\nChange-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82\n"
    },
    {
      "commit": "500d4918e5fb6eafb76b36c4ec736f974835b94c",
      "tree": "5c6be88b473e60296ae9df22bfc55cfca85a3d28",
      "parents": [
        "fdd869faca8dff54a456ccb5f1a68ecb44143721",
        "433b79a9130df5f2375b9d3d7518c1f3fb84a467"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:56:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 20:56:11 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\""
    },
    {
      "commit": "433b79a9130df5f2375b9d3d7518c1f3fb84a467",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "message": "Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\n\nFixed by https://android-review.googlesource.com/#/c/330165/\n\nThis reverts commit 81356645157af44152c7b7db383596b5cf3479b5.\n\nChange-Id: Ifb74e1cc90ab6dea621f7f54a00b540d6ccd0cf6\n"
    },
    {
      "commit": "d7c4ad030c2c316f5e1b2049ff8fa925b56bee2b",
      "tree": "fee68e3431cd62d6f5d6da89c1e105993bfb5528",
      "parents": [
        "f22bf9f809def57c96a19d932467a175bbd9c08c",
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:20:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 20:20:20 2017 +0000"
      },
      "message": "Merge \"Revert \"Make --debuggable rely on JIT code.\"\""
    },
    {
      "commit": "81356645157af44152c7b7db383596b5cf3479b5",
      "tree": "59aca3792abfa47c7424e4dac13248651e4662b2",
      "parents": [
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:18:02 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:19:28 2017 +0000"
      },
      "message": "Revert \"Make --debuggable rely on JIT code.\"\n\nBreaks 137-cfi with ART_TEST_RUN_TEST_DEBUGGABLE\u003dtrue\n\nThis reverts commit a0619e25aacf8b8074132f4951f75fdbcfd42925.\n\nbug: 28769520\nChange-Id: Ifd7b8fc7c9b72c0a523fd57c4b1b80edd3547caa\n"
    },
    {
      "commit": "8f28bd479af445293474867191a0bf1cf0f08a4f",
      "tree": "2bf92d368a6ad5b766bef70a3ee9c35d7af6db71",
      "parents": [
        "ab5afeedfcb496026d8fe0774de99ee895888119",
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 15:09:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 15:09:45 2017 +0000"
      },
      "message": "Merge \"Make --debuggable rely on JIT code.\""
    },
    {
      "commit": "a0619e25aacf8b8074132f4951f75fdbcfd42925",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 20 13:57:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 12:41:52 2017 +0000"
      },
      "message": "Make --debuggable rely on JIT code.\n\nRemoves -Xfully-deoptable in the process, which was added as a\ntemporary workaround until this CL.\nPartial revert of https://android-review.googlesource.com/#/c/302232/\n\nMakes things consistent with existing infrastructure:\n\n- Parse the --debuggable from the compiler options, just like\n  --compiler-filter.\n\n- Add DEBUG_JAVA_DEBUGGABLE, passed by the zygote, for debuggable apps.\n\n- Java debuggable now solely relies on JIT for simplicity.\n\n- Debugging under userdebug for non-java-debuggable apps is still\n  best effort.\n\nTest: test-art-host, jdwp\n\nbug: 28769520\nChange-Id: Id0593aacd85b9780da97f20914a50943957c858f\n"
    },
    {
      "commit": "ec7862283dd49f5a58d0ac45960ce27c2f7671b8",
      "tree": "26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6",
      "parents": [
        "c01d49091f4588777db5bf45345f388058caa99f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 20 16:24:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 10:21:16 2017 +0000"
      },
      "message": "Hash-based dex cache type array.\n\nTest: m test-art-host (Interpreter, Optimizing, JIT)\nTest: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT)\nTest: Nexus 6P boots\nTest: m valgrind-test-art-host\nBug: 30627598\nBug: 34659969\nBug: 30419309\nChange-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1\n"
    },
    {
      "commit": "bd2fed5a813b68fa42fe941b07325ba4ff3190b0",
      "tree": "2e8ce7221f842133a1b7b8e6fc4793acbf4ed8f6",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jan 25 10:46:54 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jan 27 13:47:50 2017 +0000"
      },
      "message": "MethodHandles: Support and tests for revealDirect / reflectAs.\n\nWe need runtime support to materialize a Constructor, Field or\nMethod object from a MethodHandle and its associated ArtField\nor ArtMethod pointer.\n\nAn alternate approach might be to have all handles hold a reference\nto their associated Field or Method object (in addition to the\nraw ArtField or ArtMethod) but that seems unnecessary given that\nthese APIs are not expected to be called often.\n\nTest: test-art-host\n\nChange-Id: I9450706b9c30359edebf2e8a7afbc8d89bd68b26\n"
    },
    {
      "commit": "92e393a5ef08b63ae68621c51764d69abce2c9a2",
      "tree": "ad3128469639995f98ba8d2c7c01e2aaa9cb8270",
      "parents": [
        "727e9110243392bd8599ae8ae73b1a169668ded7",
        "ca6e14ebd19ab972e4962f18d99a882969d7bee1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 25 22:35:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 25 22:35:50 2017 +0000"
      },
      "message": "Merge \"[ART] Prepare profile streaming for framework to use.\""
    },
    {
      "commit": "ca6e14ebd19ab972e4962f18d99a882969d7bee1",
      "tree": "9bd4bc18fcc56294e01db0ad4e551b13ae533fea",
      "parents": [
        "67edcfdb2151af66cdacf61e44c618c41601d0c8"
      ],
      "author": {
        "name": "Shukang Zhou",
        "email": "shukang@google.com",
        "time": "Wed Jan 25 00:35:21 2017 -0800"
      },
      "committer": {
        "name": "Shukang Zhou",
        "email": "shukang@google.com",
        "time": "Wed Jan 25 10:40:46 2017 -0800"
      },
      "message": "[ART] Prepare profile streaming for framework to use.\n\nMake it possible for framework\u0027s Java code to optionally\nenable streaming output of profile.\n\nTest: m -j48 ART_TEST_TRACE\u003dtrue ART_TEST_TRACE_STREAM\u003dtrue test-art-host\nChange-Id: I70f6cf3b72c6cec2ac1f1f1e9c2b2c4727d72e8a\n"
    },
    {
      "commit": "72ab684871f870aead76b23cb67deb046107b380",
      "tree": "d4bb40cab65df449246b35ae582234238676b7bb",
      "parents": [
        "e36c51aee58e61e9fc89851b767379c587f050e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 20 19:32:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 24 12:05:02 2017 +0000"
      },
      "message": "Add class status for resolved erroneous classes.\n\nSplit the old ambiguous status mirror::Class::kStatusError\ninto kStatusErrorUnresolved and kStatusErrorResolved. Once\na class has been resolved, IsResolved() shall return true\neven if the class later becomes erroneous. Allow returning\nerroneous class from ClassLinker::EnsureResolved() if it has\nbeen previously resolved. This allows consistent behavior\nfor retrieving classes, immune to multi-threaded races and\nmulti-dex weirdness. It also allows JVMTI to properly report\n\"prepared\" (i.e. resolved) classes that are also erroneous.\n\nThe new behavior is consistent with the RI.\n\nAdd regression tests to 008-exceptions for inconsistent\nbehavior for multi-dex retrieval of erroneous resolved class\n(wrapping or not wrapping the old exception based on which\ndex file is used for lookup) and for a CHECK(IsResolved())\ncrash in ClassLinker::LoadSuperAndInterfaces() (without any\ntests for similar checks that could have previously failed\nonly due to extremely unlikely race conditions; these should\nnow also be fixed).\n\nInconsistency still remains for class verification as shown\nby the new exceptionsForSuperClassInitFailure() test in\n008-exceptions, where interpreter and Optimizing still\ncause different exceptions to be thrown.\n\nNote: This is partially changing behavior implemented for\nbug 28787733. Since we allow the class loader to retrieve an\nerroneous resolved class, the ExceptionInInitializerError is\nnot thrown at all from VMClassLoader_findLoadedClass(), so\nthere is nothing to wrap in ClassNotFoundException.\n\nTest: m test-art-host\nBug: 30627598\nBug: 28787733\nChange-Id: I86cdca00f35a0d6221d2559e3026ac0428a3613c\n"
    },
    {
      "commit": "a35510de5aa1ec5d39c6870da556e2d60666cdc3",
      "tree": "65e2c9f63cbe409b2fe7a48194a69ac4ecca6dde",
      "parents": [
        "0d478f289f0e33f19693d135f1d562b57427ed32"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 22:42:09 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 23:03:24 2017 +0000"
      },
      "message": "Fix missing OOME check in reflection.\n\nTest: 080-oom-throw\nChange-Id: I5f18ea756e815978bf8682555470505959a8fad5\n"
    },
    {
      "commit": "4201cf014cfe00c145edc0b32bf30b1ceaf1495f",
      "tree": "086c5df83832b6d80864a294503b6dc6025f270c",
      "parents": [
        "9e68f5043323eaf4543ebf3b6f496145d8ae77a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 12 14:51:44 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 12 15:15:51 2017 -0800"
      },
      "message": "Avoid suspending heap task thread for getting stack traces\n\nInstead of suspending the heap task thread, GetThreadStack (called by\nVMStack_fillStackTraceElements and VMStack_getThreadStackTrace) will\nreturn an empty thread stack. This fixes possible deadlocks caused by\nsuspending the GC thread and doing allocations for the stack trace.\n\nBug: 28261069\n\nTest: test-art-host\n\nChange-Id: I45a0b8ac94a99d6bbcfcdc2b41afadf941ec0138\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": "6f43e3a8fd839a97073516be0607656dd771362d",
      "tree": "9b7aac9a4077fd6bece019179c6cac0448f7c0a8",
      "parents": [
        "7a8e16c827efc866d01b5cbca835b18fe29a83ab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 14 14:12:17 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 14 14:41:27 2016 -0800"
      },
      "message": "Rename Reference.clear to Reference.clearReferent\n\nRenamed on java side.\n\nTest: test-art-host ART_TEST_INTERPRETER\u003dtrue ART_TEST_READ_BARRIER\u003dtrue\n\nChange-Id: I57fc1f46c8c3c2b6d35741ab8549020894de7026\n"
    },
    {
      "commit": "c9a7028430d95090ad3d7690203fd887d1e201a4",
      "tree": "83e690d43ce87913c274b788c61d3425e6570e51",
      "parents": [
        "36994ba006c18c1933815cc0c4c036df086e6814"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 13 14:44:33 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 13 16:40:14 2016 -0800"
      },
      "message": "Add exclusion for Reference.clear and reference processing\n\nPrevents race conditions like unclearing cleared references or\ncalling IsMarkedHeapReference on null references.\n\nBug: 33389022\n\nTest: test-art-host\n\nChange-Id: Iee83b76d84453e929172f1a83f284aa4910e126c\n"
    },
    {
      "commit": "19a4d374738da4dc668a078f92dbe887ff9f00d9",
      "tree": "a210638e93d80cf0a297de07f4c9cdc60784ce50",
      "parents": [
        "aea9ffece7eb32f3884a4ad0553e1df4d90fd9e4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 14:41:46 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 09 13:30:00 2016 +0000"
      },
      "message": "Clean up Class::GetDirectInterface().\n\nOnce the `klass` has been resolved, this function should not\nneed to resolve interface types anymore. Drop the type\nresolution from this function and pass the Class as ObjPtr\u003c\u003e\ninstead of Handle\u003c\u003e. Make callers that expect non-null\nresult DCHECK() that assumption. For the callers that may\nactually need to resolve these interface classes, introduce\na new function ResolveDirectInterface().\n\nAlso improve ObjPtr\u003c\u003e constructors and assignment operator\nto improve overload resolution. For example, if we have\nfoo(ObjPtr\u003cT1\u003e) and foo(ObjPtr\u003cT2\u003e), calling foo(.) with\na T1* would have previously been ambiguous even if T1 is\nnot a base of T2.\n\nTest: m test-art-host\nChange-Id: Iff44a7285f68f0af4507fc9ba37343865422fe84\n"
    },
    {
      "commit": "d12f04cb563432c1c072c7446255c57ec2f8db53",
      "tree": "020f1dae51c3427d40e18f940353cc21e44f4546",
      "parents": [
        "72ef70de77fb77afcc34ee4f523a1f7522daf8a8",
        "a8888c1b6513a6f5335e72073efc301c86467e92"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Dec 06 20:04:53 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 06 20:04:54 2016 +0000"
      },
      "message": "Merge \"Use getReferent() in enqueueSentinelReference to avoid race with GC.\""
    },
    {
      "commit": "a8888c1b6513a6f5335e72073efc301c86467e92",
      "tree": "3228f8c9146b30cecf1cf902bfef44d4ac5f0e89",
      "parents": [
        "5d0c3009fc56afdb4aeae5ee6dd98c3d1d2e7711"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Dec 02 13:58:58 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Dec 02 14:32:40 2016 -0800"
      },
      "message": "Use getReferent() in enqueueSentinelReference to avoid race with GC.\n\nThis is the art part.\n\nFix a check failure due to the direct referent access that races with\nthe GC reference processing for CC.\n\nBug: 33207594\nBug: 12687968\nTest: test-art-host with and without CC.\nChange-Id: I3c98066d09dd98d8fddc59b6784c75843b45338b\n"
    },
    {
      "commit": "cc1b5357f83f0b787d51fbfde3fe870c8a2fa050",
      "tree": "253d23dba63e1003dc8e953002b994d01c97f181",
      "parents": [
        "5d0c3009fc56afdb4aeae5ee6dd98c3d1d2e7711"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 01 16:58:38 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 02 14:00:22 2016 -0800"
      },
      "message": "ART: Clean up ClassLinker\n\nTry to clean up and simplify ClassLinker.\n\nMove dex_lock to Locks. Remove dead code. Move single-use\ncode to user. Hide implementation details from header.\n\nTest: m test-art-host\nChange-Id: I58150fa9c2a9524f8304370270c2197d655cb3a8\n"
    },
    {
      "commit": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "46cc64f11b1b1f0ac5e4aebd665b325a68d4d42f",
      "tree": "182f28f92fb576b2ad586a368ac2d0761896e832",
      "parents": [
        "3e580bc9b248586fa5d87db2098fa5c5abb7afc1"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Nov 14 14:53:55 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Nov 24 07:54:03 2016 +0000"
      },
      "message": "Move dumping of oat file status inside of the OatFileAssistant.\n\nRather than exposing what could otherwise be internal to the\nOatFileAssistant, move the logic for dumping a human readable\nrepresentation of the status of the oat files inside the\nOatFileAssistant.\n\nBug: 30937355\nTest: oat_file_assistant_test\n\nChange-Id: I79c6cc1286a822f1dbe0035be934a2be4792563c\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "3773f2106864cf71fa17be33058717ecc402a5ad",
      "tree": "1bf43b280f3a8f484758d308383c67af328e1a9f",
      "parents": [
        "8acdebc1a1b5821d3bb8e9461f7877fc234a37ff",
        "ca620d7bc03b23a0bcf0ef58df58603ee000dca0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 09 01:48:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 01:48:19 2016 +0000"
      },
      "message": "Merge \"ART: Fix tidy warnings\""
    },
    {
      "commit": "ca620d7bc03b23a0bcf0ef58df58603ee000dca0",
      "tree": "07cb026075b70a958d14ae84b4e213178a6ba0b4",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 08:09:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 15:04:48 2016 -0800"
      },
      "message": "ART: Fix tidy warnings\n\nSwitch to char versions of find variants.\n\nAdd \"explicit\" constructor variants or refactor and\nremove defaults.\n\nUse const references.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I970cc2f47d6cf8f0c74104b994b075b2fafb3d45\n"
    },
    {
      "commit": "13b27842e88ccf1a42807c92daeb108e867dc4cd",
      "tree": "d95968f678070058ec084376d561c7ed4f1bcff3",
      "parents": [
        "689a331aded82340d2ab144d0adb9bbbbd4b53ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 16:48:23 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 19:45:48 2016 -0800"
      },
      "message": "ART: Refactor jmethodID handling\n\nArtMethod objects have been native since Marshmallow.\nRemove the dependency on being runnable. Refactor the\ncode into the jni_internal header.\n\nTest: m test-art-host\nChange-Id: I1385fcd4c08981491701da55a87036b447aa2fc2\n"
    },
    {
      "commit": "7d8d8ff0727a7aa9d11c738f13a7e06d3c4c3d68",
      "tree": "0f3f131d2d3438d06ecdfc05137ebfcc1ff6f1f3",
      "parents": [
        "af3572bc21cf66f970090c852b976095bb028083"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 02 12:38:05 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 02 12:38:05 2016 +0000"
      },
      "message": "Revert \"Revert \"ART: Generalize FindClassInPathClassLoader\"\"\n\nBug: 32510706\n\nChange is not responsible for the flakiness after all.\n\nThis reverts commit af3572bc21cf66f970090c852b976095bb028083.\n\nChange-Id: I399049c217deeac6a5c3f9d678a46bdb84386e3f\n"
    },
    {
      "commit": "af3572bc21cf66f970090c852b976095bb028083",
      "tree": "597b436db28186864524d5208628082e52a5ff52",
      "parents": [
        "fd1ae75a03b0b17fdbbb0097e856f494edf12312"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 02 09:49:25 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 02 09:49:25 2016 +0000"
      },
      "message": "Revert \"ART: Generalize FindClassInPathClassLoader\"\n\nBug: 32510706\n\nThis reverts commit fd1ae75a03b0b17fdbbb0097e856f494edf12312.\n\nChange-Id: Ie247477eea44a6a241d90864bf5dca29897ff4b8\n"
    },
    {
      "commit": "fd1ae75a03b0b17fdbbb0097e856f494edf12312",
      "tree": "0f3f131d2d3438d06ecdfc05137ebfcc1ff6f1f3",
      "parents": [
        "46aba36a1c982567d7e80a62b0cff9c0935e7455"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 28 15:34:26 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 01 08:23:27 2016 -0700"
      },
      "message": "ART: Generalize FindClassInPathClassLoader\n\nAlso accept DexClassLoader. Do a fast check for subclasses of\nBaseDexClassLoader that are in the boot classpath.\n\nBug: 32510706\nTest: m test-art-host\nChange-Id: I7d79aa90e0241e7717c5d146d1123f41746e4ffa\n"
    },
    {
      "commit": "3d617ac3d87f7fa98793406818e54b057bd701a1",
      "tree": "5230ceedfaf2928da0404fd71b64fa7f08439f21",
      "parents": [
        "b5cc1d1321e36d38cd48ae079438a8758b82edc1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 19 14:00:46 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 31 09:16:19 2016 +0000"
      },
      "message": "Getter/Setter support for invoke-polymorphic of invokeExact().\n\nTest: make test-art-host\nBug: 30550796\n\nChange-Id: I427a6e0afba88b223655ad1ba30843aaf255182b\n"
    },
    {
      "commit": "c369f6b0cd132ab5bba3f127b162f128dd7d2599",
      "tree": "691b4ae4ca4da162d403d047095a82c18b5607bd",
      "parents": [
        "d6435da102851e155acd12adc420e7df3db47903",
        "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 28 10:09:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 28 10:09:34 2016 +0000"
      },
      "message": "Merge \"Add support for Baker read barriers in UnsafeCASObject intrinsics.\""
    },
    {
      "commit": "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc",
      "tree": "efe3dd581dbe9fb33e615d1608f0571ec3984208",
      "parents": [
        "188edb3a3ec36ad5fc42373b1e1bed3a85b4f112"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "message": "Add support for Baker read barriers in UnsafeCASObject intrinsics.\n\nPrior to doing the compare-and-swap operation, ensure the\nexpected reference stored in the holding object\u0027s field is\nin the to-space by loading it, emitting a read barrier and\nupdating that field with a strong compare-and-set operation\nwith relaxed memory synchronization ordering (if needed).\n\nTest: ART host and target tests and Nexus 5X boot test with Baker read barriers.\nBug: 29516905\nBug: 12687968\nChange-Id: I480f6a9b59547f11d0a04777406b9bfeb905bfd2\n"
    },
    {
      "commit": "75dccb7238714358fca9e5e993e4daabe24af085",
      "tree": "f46591a920fcd8fda21ab93eb5f25e6dbae1fa2b",
      "parents": [
        "c33daa3739bbb7288f231a034f3ff80c5df2dd5a",
        "34ee6842a283afe107f0c1df941393f955323b52"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 26 00:21:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 26 00:21:35 2016 +0000"
      },
      "message": "Merge \"ART: Refactor class-linker methods\""
    },
    {
      "commit": "eb84221ffc00357be6d69e2e461c7a45ee96334a",
      "tree": "00e6a0884a62dfb448e4d617699fe511307db74f",
      "parents": [
        "19c5e5f3e92db92e4a51b354743cbb0edd8e0f48"
      ],
      "author": {
        "name": "Leonard Mosescu",
        "email": "mosescu@google.com",
        "time": "Thu Oct 06 17:26:36 2016 -0700"
      },
      "committer": {
        "name": "Leonard Mosescu",
        "email": "mosescu@google.com",
        "time": "Tue Oct 25 19:46:58 2016 +0000"
      },
      "message": "Enable agent attaching during live phase\n\nThis is the ART part, the plumbing from VMDebug_attachAgent() to\nactually loading the agent into the runtime.\n\nTest: m test-art-host\n\nBug: 31682382\n\nChange-Id: I3ccc67aa050c1f78278882128983686ed44ddec2\n"
    },
    {
      "commit": "34ee6842a283afe107f0c1df941393f955323b52",
      "tree": "63614db22d589a42f843f1b96e2332e8c89d4860",
      "parents": [
        "5b6fbd02f03fd41829c7dd4bfce97a62346be854"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 02 15:43:52 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 25 11:18:05 2016 -0700"
      },
      "message": "ART: Refactor class-linker methods\n\nHide the LookupClass with hash version. Clients should not have to\nknow about that performance detail.\n\nHide FindClassInPathClassLoader. This is an implementation detail.\n\nTest: m test-art-host\nChange-Id: I2378c6fed8d7d1fb1ead8e042b4cf07228adf25c\n"
    },
    {
      "commit": "28357fab628bd9b91749988b554977398caf9963",
      "tree": "957fac3c1003713c349e0e216762836138c596a7",
      "parents": [
        "c89f9776a107ca20d0146c16fa881db91c4f8266"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 18 16:27:40 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 19 10:04:37 2016 -0700"
      },
      "message": "Move most of class linker to ObjPtr\n\nReturn values are still mirror pointer. Fix some failing asserts in\ncompiler driver and tests.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4450bf9dfb2541749496b8388616e8aae8488919\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": "bc5a795c0d486c84913d987cad5846ded840cea6",
      "tree": "90db29a97a21fa15f4cbc5ffbc1f6dd191add49c",
      "parents": [
        "38a4223fcc0493553d9ad324a1dc145869eb663a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 15:46:31 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 16:16:50 2016 -0700"
      },
      "message": "Move art/native to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I67eb89cf042c762c6dcd5eb8b008b9a28e9b3319\n"
    },
    {
      "commit": "5d3f73aef1b778d81ba101ece41935adee259cf2",
      "tree": "fec0c2fdbb88df0a366e29b6470d1274aa6e2ec1",
      "parents": [
        "cfdff144f154df876987fefb340058a975c43381"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:28:47 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:38:43 2016 -0700"
      },
      "message": "Move reference processor and mirror::Reference to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I2c7c3dfd88ebf12a0de271436f8a7781f997e061\n"
    },
    {
      "commit": "1a5337fff2cc6cb9d563c8b32aca75f485d23373",
      "tree": "03616e90a91c5c4c1bd7ff03c3d193c3b24bf0db",
      "parents": [
        "c8b722b3cebff245d614e95d1849de45ef7bdf06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 13:48:23 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 17:37:56 2016 -0700"
      },
      "message": "Move mirror::ObjectArray to ObjPtr\n\nAlso reduce calls to ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host -j32\n\nChange-Id: I73e1b356972bb079b66332f00f7f07451601044e\n"
    }
  ],
  "next": "6b3d12b3d233734bb6669faccddcba7abeb5ea99"
}
