)]}'
{
  "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": "cade5c3c75588da6d873df727acdaf3378a66efa",
      "tree": "126fc494a05e39d0b2566a608f15e140e5eb915f",
      "parents": [
        "16d1dd86dca33520b44d9802695e19d3b658af3e"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 17:56:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 22 16:33:20 2017 -0700"
      },
      "message": "Track class initializing in transaction\n\nAdd a field and a corresponding constructor to transaction which keeps\ntrack of the class that the transaction is initializing.\n\nTo implement constraints for \u003cclinit\u003e behaviors, the transaction needs\nto know which class it is initializing.\n\nTest: make test-art-host -j64\nChange-Id: I87b3fcb3ef15914c79c6687ec8a87058265eaead\n"
    },
    {
      "commit": "16d1dd86dca33520b44d9802695e19d3b658af3e",
      "tree": "c273a6256e2b8ea49e9e1935830fe9d1748ebcf4",
      "parents": [
        "3a3abd08ca92636a706c0efa777c0410258ebd5f"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 17:56:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 22 16:07:03 2017 -0700"
      },
      "message": "Move transaction creation to runtime\n\nMove the transaction creation to runtime instead of passing a pointer to\nruntime when EnterTransactionMode. Because later there will be more\nplaces to create transaction so this makes the code cleaner and more\ncompact.\n\nTest: make test-art-host -j64\nChange-Id: I971edf3110eb6634b6e0f7f56256be04517a5281\n"
    },
    {
      "commit": "c73753f70ab4fc9a166637bee514b292f0fa0109",
      "tree": "a464e300d44b5a3eca10cb00cc42be7c1ab9da96",
      "parents": [
        "530a6b6902b50db43659757a6270b7d111d93a2c",
        "07bfbace6f835e6c748fd68ec7624992478b16c1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "message": "Merge \"Hash-based DexCache methods array.\""
    },
    {
      "commit": "07bfbace6f835e6c748fd68ec7624992478b16c1",
      "tree": "5d094a00fbc90455bd9b53e042cf8b4fe8433462",
      "parents": [
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 14:55:02 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 16:33:00 2017 +0100"
      },
      "message": "Hash-based DexCache methods array.\n\nTotal boot*.art size for aosp_angler-userdebug:\n  - arm64:\n    - before: 11603968\n    - after: 10129408 (-1.4MiB, -12.7%)\n  - arm:\n    - before: 8626176\n    - after: 7888896 (-0.7MiB, -8.5%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nTest: Build aosp_mips64-eng\nBug: 30627598\nChange-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f\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": "1a088d440a3fac4e477a11af68adae9dcd3afd00",
      "tree": "fbec331c6c0274af132bb2df38b209477ee9224f",
      "parents": [
        "57fe2725629681c8a68f6ba5b58d87304ca3f0b1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 18 11:43:57 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 19 09:55:34 2017 -0700"
      },
      "message": "Use AtomicDexRefMap for compiled classes\n\nChanged compiled_classes_ to use an AtomicDexRefMap and deleted\nthe lock since it was no longer necessary.\n\nThis map is more compact than a SafeMap. RAM numbers for verify\nfilter on a large app (host arm compile):\n\nMaximum resident set size (kbytes): 250012-\u003e243472\nnative alloc: 19284128B-\u003e13951600B\n\nBug: 6346774\nTest: test-art-host\nChange-Id: Iace66945b49433f353603a713593c53be6893cc5\n"
    },
    {
      "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": "0d32f4eb356b7823ee39a09e62dfcb496a6cc049",
      "tree": "28f669c9e993ca22477690f415a9a553e27a68a2",
      "parents": [
        "1847704d0422dcc75ac30ae0d3caaf210c05a755",
        "93764b8ee58d54118904b8f4473628451e568893"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 03:23:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 03:23:31 2017 +0000"
      },
      "message": "Merge \"Generalize atomic_method_ref_map to support dex references\""
    },
    {
      "commit": "1847704d0422dcc75ac30ae0d3caaf210c05a755",
      "tree": "dda6e4020b74e36ca17fee01e89994dd7235fde1",
      "parents": [
        "269a39982997365ac4e8d2ee3d919e84f3e568d7",
        "0733dc87518d2c8fc1ba2196c9f5cc9729de7c20"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 01:38:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 01:38:12 2017 +0000"
      },
      "message": "Merge \"Avoid creating verification_results_ unnecessarily\""
    },
    {
      "commit": "93764b8ee58d54118904b8f4473628451e568893",
      "tree": "729758b4420920b7bb7070dbdac1ecd86810b2a8",
      "parents": [
        "d317295ed07384c69d5890d6b17b80d57139a082"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 14:51:53 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 18:01:17 2017 -0700"
      },
      "message": "Generalize atomic_method_ref_map to support dex references\n\nGeneralize atomic method ref map to support dex references instead\nof only method references.\n\nThe goal is to use this in a future CL to replace compiled_classes_.\n\nTest: test-art-host\n\nChange-Id: Ic6d1e619584f790eea68f5160fa0fcd664524cd7\n"
    },
    {
      "commit": "d317295ed07384c69d5890d6b17b80d57139a082",
      "tree": "7ef48ea60165f89c852bf957207c65c155d49026",
      "parents": [
        "71a8e5b25f0be5ab5bf0e1c73a9e5aabc3a23488",
        "0cb172874481f736c6b7c491dd621166cc25561b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 00:12:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 00:12:13 2017 +0000"
      },
      "message": "Merge \"Do superclass validation at compile time and log with new class status.\""
    },
    {
      "commit": "0733dc87518d2c8fc1ba2196c9f5cc9729de7c20",
      "tree": "5dfbd7beba81527b31634fa6920b8f0c1f996007",
      "parents": [
        "71a8e5b25f0be5ab5bf0e1c73a9e5aabc3a23488"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 14:05:28 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 16:54:33 2017 -0700"
      },
      "message": "Avoid creating verification_results_ unnecessarily\n\nFor compiler filters that don\u0027t quicken or compile, avoid creating\nthe verification results. This avoids creating some arrays that\nwere using a few MB of RAM in some cases.\n\nFor a large app verify compile:\nMaximum resident set size (kbytes): 258948 -\u003e 254300\n\nBug: 63467744\nTest: test-art-host\n\nChange-Id: I1d0536b2a6a5c301396641371915394cf4c0e5f3\n"
    },
    {
      "commit": "0cb172874481f736c6b7c491dd621166cc25561b",
      "tree": "2408750b6e08c686b89cee5df0ddae736a775092",
      "parents": [
        "890045e5a768257d8def42827a09a516ebe3e07e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jul 12 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 17 14:09:56 2017 -0700"
      },
      "message": "Do superclass validation at compile time and log with new class status.\n\nTries to perform superclass validation for classes that are resolved,\nbut not initialized at runtime. If successful, saves the result in the\noat file with a new class status. At runtime, the superclass validation\ncan be skipped during class initialization, saving some time and\nreducing string accesses.\n\nResults show savings of 50kB PSS in maps on startup, with slight\ndecrease in startup time.\n\nMaps (average of 100 runs)\nBefore: dex 9941.3 odex 15159.8 total 25101.1 launch 908\nAfter: dex 9897.4 odex 15155.7 total 25053.1 launch 906.6\n\nBug: 63456114\nTest: mm test-art-host\nChange-Id: If67a4a49d61781b6d561c26118d7e0c6b9cc0d6f\n"
    },
    {
      "commit": "88b74b6a4dbbe0b5b75ef1738833e5b064e85d4c",
      "tree": "478b20d75a1671be187e867fde1317aeb8b19515",
      "parents": [
        "65d793bfa91085db5f84b6ee90a3dcdafcafed1b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jul 16 17:08:19 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 10:00:25 2017 -0700"
      },
      "message": "Avoid creating compiled_methods_ array unnecessarily\n\nFor compiler filters that don\u0027t quicken or compile, avoid creating\nthe compiled method arrays to save RAM.\n\nFor a dex2oat of a large app with verify filter -j4 on the host:\nReduce native alloc from 39MB to 35MB\nMaximum resident set size (kbytes): 287592k -\u003e 282696k\n\nBug: 63467744\nTest: test-art-host\nChange-Id: Ib84fd9337dc7f5f1e32017bf2c392d1d3328fba8\n"
    },
    {
      "commit": "0656044bf8b1d5053cdea6615f4d0aebad5b64b8",
      "tree": "3842f5694a0a98b275b8ec38cf7962979d5f45ee",
      "parents": [
        "8054c1d7da8ced97e5371d5a18dcf5ddd388835d",
        "ba17dbd5f23d6f6acf3fb60b6dd65dc34bd833de"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 06 18:42:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 18:42:00 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fixed Literal String intern mismatch.\"\"\""
    },
    {
      "commit": "8054c1d7da8ced97e5371d5a18dcf5ddd388835d",
      "tree": "1179fdf1b6057ca38a0f847f13fb1ddc6744c714",
      "parents": [
        "170de15c5fc91ca8e9bc854f6adbee84d9b15b0b",
        "70f689dce49f2d1466dc98df9aee5a880956b45c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 06 18:40:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 18:40:48 2017 +0000"
      },
      "message": "Merge \"Add an init encoded fields threshold to compiler\""
    },
    {
      "commit": "70f689dce49f2d1466dc98df9aee5a880956b45c",
      "tree": "b5cdfaa381821f8c37eb77a50623cc79fedc400e",
      "parents": [
        "71bde0dff0159976fdad4b6a45e903a96bd51aca"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jun 08 17:16:12 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 06 09:32:40 2017 -0700"
      },
      "message": "Add an init encoded fields threshold to compiler\n\nAdd a check for the number of encoded fields when initializing app\nimages and fail the initialization if too much encoded fields are\npresented. This helps against the adversary applications and reduce\ncompiling time on test case 056.\n\nBug: 62337922\nTest: art-host-test -j64\nChange-Id: I9f24fbe5ada473ec415459a36b0c22d2f504af62\n"
    },
    {
      "commit": "f79aa7fc107c661e5a6d6ffd2a33221864fa1fa3",
      "tree": "07bf40e8b5d75454ffe52e82f4d4e5300386fe37",
      "parents": [
        "4a77b1e96733be419c0cb571448e8590c803bd91"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 04 16:58:55 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 05 16:32:24 2017 +0100"
      },
      "message": "Small refactoring of field/method access checks.\n\nAnd some cleanup to reduce the size of the upcoming\nmethod resolution rewrite CL.\n\nTest: m test-art-host\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nBug: 62855082\nChange-Id: I5bbf0a92d75fe9de6982b80280cd5877fcc37700\n"
    },
    {
      "commit": "4913cf39dc3a15211e3a13bdc685541babc93d6d",
      "tree": "1891acc19e3f8fc6f9e12771bb0e21a696552317",
      "parents": [
        "4dd8880401bc7cd7bc748e5f828771611aa7bdc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 04 13:51:09 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 04 13:54:37 2017 +0100"
      },
      "message": "Remove obsolete helpers from CompilerDriver.\n\nTest: Rely on TreeHugger.\nChange-Id: Id177ed422353a8606c3e57d34e1519e6b17e5c48\n"
    },
    {
      "commit": "e602b1cde4e422b9ff508b8b3dbfb31cadd826b7",
      "tree": "bc90c2b7c8b0be9bd17c3052e11aa04d81549ec0",
      "parents": [
        "222a480d96d3777564735258679f3fb508effce1"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri Jun 30 11:55:01 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri Jun 30 11:55:01 2017 -0700"
      },
      "message": "Fix boot classes init when compiling app image\n\nClasses resident in boot library should not be initialized and stored in\napp image anyway while compiling app image.\n\nFixed by checking the location of classes in compiler driver when\ninitializing classes and is compiling app image.\n\nThe InitializeDependencies is advanced which makes TryInitialize become\nthe only entrypoint for app image, and since boot image doesn\u0027t need\nthis function, the behavior for compiling boot image should stay the\nsame.\n\nBug: 62715577\nTest: not covered now, will be fixed and test by another CL.\nChange-Id: I8e683e6b14f1402dba8ef5c4b0f5fa936a343d8c\n"
    },
    {
      "commit": "57c47043f3ee4233f31bad921ea91a5c411f1dad",
      "tree": "519b6ac795d4cf96072be1dc9c40764788adca90",
      "parents": [
        "80e7e474e97e831bdbd26710c892bb8365357a86"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 11:31:39 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 11:48:55 2017 +0100"
      },
      "message": "Code cleanup around compiler options and JIT.\n\nNow support passing --verbose-methods and --dump-cfg.\n\nTest: test.py\nTest: ./out/host/linux-x86/bin/art -Xcompiler-option --dump-cfg\u003dfoo.cfg -Xcompiler-option --verbose-methods\u003drun -Xcompiler-option --compiler-filter\u003dquicken -Xusejit:true -cp benchmarks.dex benchmarks.DeltaBlue.java.DeltaBlue\nChange-Id: I75ffed146ffff43ef70f3e9e80a160751e08cb04\n"
    },
    {
      "commit": "ba17dbd5f23d6f6acf3fb60b6dd65dc34bd833de",
      "tree": "f4edd3f059665f0ed7fe2e9506c7f9508f727be3",
      "parents": [
        "3dc94c4763ecab28c0053d5d07e332c61a3f781b"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jun 28 21:27:56 2017 +0000"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jun 28 16:43:51 2017 -0700"
      },
      "message": "Revert \"Revert \"Fixed Literal String intern mismatch.\"\"\n\nThis reverts commit f7ab8348b88b7ce63c5fa112f5a71756da541763.\n\nTest: make test-ar-host -j64\n\nChange-Id: I688b7c7905c8be575959fa78ad594ac1c782af9a\n"
    },
    {
      "commit": "e17cf243978ca7f5356e746ee460f0fcf04e04a6",
      "tree": "e8ad423bf1dee5756fec451ba22db749ed4f5472",
      "parents": [
        "2bc159ebd1115f71d80639e47fc38663aa84ba4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:05:51 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:11:12 2017 -0700"
      },
      "message": "Add field/method skipping helper functions to DexFile\n\nSpecifically added SkipStaticFields, SkipInstanceFields,\nSkipAllFields, SkipStaticMethods, and SkipVirtualMethods.\n\nAlso applied the helpers to the code base.\n\nTest: test-art-host\nChange-Id: Idda77f9a6e2564c2e588d2bbe11cc320063fdb32\n"
    },
    {
      "commit": "a5dcdf346158d47bfe80d8adb29b1b020cede286",
      "tree": "50e56b3445dc8e4724d6707ffecd23f9dae96e31",
      "parents": [
        "942c597b004aa328cf291a78392b405ef5d5f040",
        "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 20:21:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 15 20:21:24 2017 +0000"
      },
      "message": "Merge \"Refactor some profiling info functions\""
    },
    {
      "commit": "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111",
      "tree": "65fd149e1159674681d866e47e485d85b8464334",
      "parents": [
        "d58932f98a673c9d687863a7efafb2da168063a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 16:36:17 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 11:45:06 2017 -0700"
      },
      "message": "Refactor some profiling info functions\n\nDeleted profile_compilation_info-inl.h\n\nAdded a new helper class MethodHotness to reduce the number of\nrequired getters for reading method hotness, startup, and post\nstartup booleans.\n\nTest: test-art-host\nBug: 62040831\n\nChange-Id: I799a38e2bea6177ba5816c54524f4ccacedba772\n"
    },
    {
      "commit": "1cfea7af6f38cd06393fed3e466701869ce8b2c3",
      "tree": "3e3b185eeb4ce0c6a2cc3184e0305f37151261c2",
      "parents": [
        "d38b67c9892b603f57a6b51a1b9d7f4e610158aa"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 24 14:44:38 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 14 10:53:48 2017 +0100"
      },
      "message": "Code cleanup around vdex.\n\n1) Handle the vdex in dex2oat instead of compiler_driver\n2) CHECK instead of DCHECK that we don\u0027t dexlayout with vdex.\n\nTest: test.py\nChange-Id: Idf7be59bb25708181e391d17128480659ac697e5\n"
    },
    {
      "commit": "d58932f98a673c9d687863a7efafb2da168063a2",
      "tree": "627bf8e2da704ef67d612f23941949ed60bdc2ee",
      "parents": [
        "dbd3c89ae7f6ff6cb37ba091afda143e7946efad",
        "7a8bcfd197ccd755761df0d46f83491fadd3eb43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 23:09:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 13 23:09:59 2017 +0000"
      },
      "message": "Merge \"Fix some indentation errors in compiler driver\""
    },
    {
      "commit": "7a8bcfd197ccd755761df0d46f83491fadd3eb43",
      "tree": "a9f195731af9a20e0f8ef042a941ece166c07f7b",
      "parents": [
        "16d59b2b0ff202be99cbe24830e8a5080b774357"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 13:40:43 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 13:40:52 2017 -0700"
      },
      "message": "Fix some indentation errors in compiler driver\n\nTest: m\nChange-Id: I8d64f6c7bdb5ccd82d916831cd0e3c3273097197\n"
    },
    {
      "commit": "17498e59a35b3802f77a6a3338468e6d18c5046b",
      "tree": "c1cfc0aff2f5e20b94db9b689430aeb34a703b27",
      "parents": [
        "19a4d0f01f850b86921e67b3f1d9834d5ce94ee3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 11:35:04 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 11:35:04 2017 -0700"
      },
      "message": "Avoid calling InitializeDependencies for non image case\n\nThe previous CL was incorrect since IsImageClass returns true for\nthe no image case.\n\nTest: test-art-host\nBug: 62402160\nChange-Id: Id75170eeaae5dfa675c113aa04b1a10b1276fab1\n"
    },
    {
      "commit": "dabeb3adf974d32ff1553af356d20e0a4abfd1f1",
      "tree": "4cc741fed0a630568e8bb2d87eea54ad69313584",
      "parents": [
        "16d59b2b0ff202be99cbe24830e8a5080b774357"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 12 17:10:07 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 12 18:40:29 2017 -0700"
      },
      "message": "Correctly set oat class status after initializing\n\nThe previous CL had a bug where it would not set the oat class status\nfor initialized classes that had run the class initializer for the\nboot image case.\n\nAims to fix random dex2oat crashes during boot image creation.\n\nBug: 62402160\nTest: test-art-host\n\nChange-Id: Ia1814fc91ec71c9556eb37699a63be3b09ff6188\n"
    },
    {
      "commit": "16d59b2b0ff202be99cbe24830e8a5080b774357",
      "tree": "6f3399a81626257ffd5cd777fff16f7ccce011a8",
      "parents": [
        "a7548fee6122f594c6669e1dcfd7b1637ef19a47",
        "fd37f1dafbc1c9763b8ea30855120d2c22062732"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 13 00:18:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 13 00:18:11 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fixed installation time regression when compile.\"\"\""
    },
    {
      "commit": "fd37f1dafbc1c9763b8ea30855120d2c22062732",
      "tree": "1d89e4ad359f21469beb0f6e52721eea28292d94",
      "parents": [
        "54c32b1f3362129d79e512581d4932aec92425eb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 12 22:15:09 2017 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 12 22:15:09 2017 +0000"
      },
      "message": "Revert \"Revert \"Fixed installation time regression when compile.\"\"\n\nBug: 62337922\n\nThis reverts commit 54c32b1f3362129d79e512581d4932aec92425eb.\n\nChange-Id: Ica942c9e70b63e2c4893f87c15757a519a0c4d73\n"
    },
    {
      "commit": "f1dd69a8fd6bc330e5ff6e89eaaf3affbc7c6f31",
      "tree": "018f0d82f516bf606e403c17ab33ed65eaaa91c5",
      "parents": [
        "934adc1dac48512abbd5107c2f951d1f4c0188d8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 08 23:30:15 2017 +0000"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jun 08 18:28:14 2017 -0700"
      },
      "message": "Revert \"Revert \"Fully support static encoded fields.\"\"\n\nBug: 62337922\n\nThis reverts commit 84c8432726299e8884215874d83958f55d5b2cd7.\n\nTest: format issue only\n\nChange-Id: Idf6f39a50b6c3baa3cc0a2147724a5815dd6d9b4\n"
    },
    {
      "commit": "56911737e7fcf4ff594f552857e7a2f56b40a3b9",
      "tree": "3d2dedad6a8a18d43ad528b7f50fd081fec9e168",
      "parents": [
        "05e60470e68d50c48e07b835c2b1eadb32e99fd0",
        "7b135c80fedea16844892527555b144c64651a65"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 07 15:30:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 07 15:30:31 2017 +0000"
      },
      "message": "Merge \"Only compile hot methods\""
    },
    {
      "commit": "84c8432726299e8884215874d83958f55d5b2cd7",
      "tree": "c29a61f9e2429be4eb87a8e85a7b99f8182162a2",
      "parents": [
        "61c42e94af08bb7ae48647ac58343fcf764cdf89"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 08:15:27 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 08:31:49 2017 +0000"
      },
      "message": "Revert \"Fully support static encoded fields.\"\n\nbug: 62337922\n\nThis reverts commit e71d6878449907b07add9f7a634a0e836911b0d1.\n\nChange-Id: If1916cbbab4da69d69990f8cae3889a8d182b331\n"
    },
    {
      "commit": "f7ab8348b88b7ce63c5fa112f5a71756da541763",
      "tree": "83d2be3bd3255a99024b3cb32f07eec9b1ce7ce8",
      "parents": [
        "bc1c6b6da9df82ebb17bd5dcd16c025ac6429b48"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 08:14:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 09:20:25 2017 +0100"
      },
      "message": "Revert \"Fixed Literal String intern mismatch.\"\n\nbug: 62337922\n\nThis reverts commit 762ef842d78b6f8a76f2b119504f075728540077.\n\nChange-Id: Idfa3a9271e3dfb92dc849f68b97c8eeeb2732abc\n"
    },
    {
      "commit": "54c32b1f3362129d79e512581d4932aec92425eb",
      "tree": "6426030c19eeecff310b253b21c52eeedd77200c",
      "parents": [
        "8f987427cedef5d07783254ac16632ce02fd8f75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 08:13:06 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 08:13:06 2017 +0000"
      },
      "message": "Revert \"Fixed installation time regression when compile.\"\n\nbug: 62337922\n\nThis reverts commit 8f987427cedef5d07783254ac16632ce02fd8f75.\n\nChange-Id: Ieea7921dfd7f589054e3b1f1d50078ede09bee4b\n"
    },
    {
      "commit": "7b135c80fedea16844892527555b144c64651a65",
      "tree": "cb0da182ae9752f64811cb2f994236058f41dc7e",
      "parents": [
        "6ecff4d2127e70738aa2493d6deceb946c204eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 05 12:54:01 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 06 16:49:08 2017 -0700"
      },
      "message": "Only compile hot methods\n\nInstead of compiling all startup + hot methods, we now only compile\nhot methods. However, the current logic still marks all startup\nmethods that have a counter greater than hot_method_sample_threshold_\nas hot methods. Since hot-startup-method-samples is currently 1,\nthere is no current behavioral change.\n\nThe goal is to increase hot_method_sample_threshold_ in a follow up\nCL.\n\nRenamed startup-method-samples to hot-startup-method-samples to\nbetter reflect the new behavior of the option.\n\nTest: test-art-host\nBug: 36457259\n\nChange-Id: I820bdcd4426769d76131b08a8b41f3b7eebfbc23\n"
    },
    {
      "commit": "8f987427cedef5d07783254ac16632ce02fd8f75",
      "tree": "1d89e4ad359f21469beb0f6e52721eea28292d94",
      "parents": [
        "4f101e5b6ae214a73bdd912374f5dc565d336e47"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Mon Jun 05 13:06:23 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Mon Jun 05 18:10:03 2017 -0700"
      },
      "message": "Fixed installation time regression when compile.\n\nFixed the installation time regression problems happens at compilation\ntime caused by the recursive initialization which blocked the fast-fail\ntest for classes that can\u0027t be initialized during installation.\n\nSolved by ruling out this situation. Check for app image before\nresolving the dependencies, fall back to ordinary initialize process\nif profile does not exist.\n\nBug: 62296843\nTest: test-art-host -j64\nChange-Id: I773406f11fd5dced8da5f0fe228b45d95eca936b\n"
    },
    {
      "commit": "ea650f3bc4f54eb2c647cf0f7134398ef5038792",
      "tree": "cdddde74424cf9fbeb2ef62e6bebca619c5ed989",
      "parents": [
        "6559ba1cfb9d24fdca4b1b1ec9e0b8dc31679982"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 24 12:04:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 02 18:25:09 2017 +0000"
      },
      "message": "Move profiles to use bitmaps for startup methods\n\nThis CL enables changes like compiling only hot methods while still\ndoing layout for hot and startup methods.  The bitmaps are also a\nbit smaller for post-launch use cases.\n\nNo change in compilation strategy yet.\n\nFixed some bugs in dexlayout test like using a profile with the wrong\ndex location. This meant the second invocation of dexlayout didn\u0027t\nhave any profile data.\n\nAdded profman support for dump-classes-and-methods,\ncreate-profile-from, and related test.\n\nProfile sizes (bytes) post launch:\nGmail: 7290 -\u003e 6136\nMaps: 22896 -\u003e 18984\nMusic: 8582 -\u003e 7050\nYouTube: 16733 -\u003e 14592\n\nTest: test-art-host\n\nBug: 62040831\n\nChange-Id: I9915b81a2ff2c47464acbbdeb55ce30a33d5483f\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": "9fa69d0620bdc28c691fce4b31a0b4c9ad906d13",
      "tree": "8a4cfb1382c302463c8ace2af78c497955bc3bf6",
      "parents": [
        "bfd844fe8601da3ea4ee6297c43fd3bf91e583ca",
        "f0446e9c785027b89a63f625b38f07c919bc6748"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 01 15:26:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 01 15:26:32 2017 +0000"
      },
      "message": "Merge \"ART: Misc header cleanups\""
    },
    {
      "commit": "854461a4cd5e4a38debe3616e12b52fe7f160782",
      "tree": "55a7399b859787403f1e032b611a889a99b3a7de",
      "parents": [
        "85b82e35d810a21257fec9d850d95f8abc900670",
        "762ef842d78b6f8a76f2b119504f075728540077"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 21:07:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 31 21:07:30 2017 +0000"
      },
      "message": "Merge \"Fixed Literal String intern mismatch.\""
    },
    {
      "commit": "762ef842d78b6f8a76f2b119504f075728540077",
      "tree": "bb87b31ca2aaeb839838f0bae894366aaf3459a2",
      "parents": [
        "a559fa1b0d6c276dde2cdc707de1acd4950f7190"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu May 25 18:34:12 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed May 31 11:59:34 2017 -0700"
      },
      "message": "Fixed Literal String intern mismatch.\n\nLiteral Strings in app images are interned into local intern tables\nwhich causes mismatch with the runtime intern table, especially when\na string is loaded from app images twice. Now when .art is loaded, a\nvisitor go through all classes and their fields to intern every string\nliteral found again.\n\nTest case 596 is updated to test the string intern functioanlity.\n\nTest on devices Nexus 5X, fixing strings takes 5.4 ms on GoogleMap\nduring startup.\n\nBug: 62224799\n\nTest: test-art-host -j64\n\nChange-Id: I2e1d44a79db1ae5f9aec80f228128201d1d838d8\n"
    },
    {
      "commit": "726e1793d3f54470705e5b84e7860074e029b0ed",
      "tree": "858cbf9048dff655b878a8f17d8640bbd22c757b",
      "parents": [
        "b28f07bf1058f9138322d9391d914c5763ce53a1",
        "2af99028f508071d5cd056e4ea42e988e0b83e79"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 31 00:58:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 31 00:58:07 2017 +0000"
      },
      "message": "Merge changes I282b25a3,I297f0ad4,I052ac9f7\n\n* changes:\n  ART: More header cleanup - class_linker.h\n  ART: More header cleanup - runtime.h\n  ART: More header cleanup - jni_internal.h\n"
    },
    {
      "commit": "f0446e9c785027b89a63f625b38f07c919bc6748",
      "tree": "3b7ac17426b17a61729a300b2fe87a03d03454cc",
      "parents": [
        "2af99028f508071d5cd056e4ea42e988e0b83e79"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 16 13:51:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 16:26:39 2017 -0700"
      },
      "message": "ART: Misc header cleanups\n\nMove/remove arena allocator includes.\n\nTest: mma art\nChange-Id: If998569d96c791fc3d4aa93ca95672a4d4b5782c\n"
    },
    {
      "commit": "d482e73fe26cb9161511a80e3db39e08b9808ab6",
      "tree": "0b8c874f24c211e4e3d87083f8017580aa23ff63",
      "parents": [
        "a14100ccf51cc63a5c472188d1e2d337627e49eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 17:59:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 16:26:35 2017 -0700"
      },
      "message": "ART: More header cleanup - runtime.h\n\nRemove unnecessary runtime.h includes. Refactor other headers\n(move to forward declarations) to make this possible.\n\nTest: mmma art\nChange-Id: I297f0ad444ba92169edd16d8c7cbe95bb6dbb800\n"
    },
    {
      "commit": "deae7db5864fa50c5a1cd6c232a17aeb986b36e1",
      "tree": "cdedad3d0f921e4f82fa7b65d55820455b7ac0ea",
      "parents": [
        "8d01c3708c4becb186979ed9377aed0fc2954d06"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 09:56:41 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:15:50 2017 -0700"
      },
      "message": "ART: Add missing namespace comments\n\nAdd closing namespace comments.\n\nBug: 32619234\nTest: m\nChange-Id: I1f50e09dcd1038c4b540b87e5c19e319c1f592e4\n"
    },
    {
      "commit": "673253e1628ca9483ea121571bb9a96f90a1c944",
      "tree": "6e2851c54f8c4df926d114022db1b0c1d57d94b7",
      "parents": [
        "6dd5019cccf7016e5b1d86defb2807759c2a6e46",
        "e71d6878449907b07add9f7a634a0e836911b0d1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 25 23:54:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 25 23:54:20 2017 +0000"
      },
      "message": "Merge \"Fully support static encoded fields.\""
    },
    {
      "commit": "e71d6878449907b07add9f7a634a0e836911b0d1",
      "tree": "2448cd1d18830070ea412edb709b49e2b46141b9",
      "parents": [
        "ed00ddb614d68559931d831cb74d3ba8f01599c9"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri May 05 16:12:40 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu May 25 10:51:11 2017 -0700"
      },
      "message": "Fully support static encoded fields.\n\nIntialization runs under one single thread. Class Status stored at Oat\nClasses are set to uninitialized (maybe verified) when that class contains\nstatic encoded fields.\n\nResolve all types mentioned in classes before initializing under\ntransaction mode, since ResolveType doesn\u0027t support transaction.\n\nTest: make test-art-host\nChange-Id: I6c9df8a2cdd43043837eb3b438ed7a89ecdaf64d\n"
    },
    {
      "commit": "6597946d29be9108e2cc51223553d3db9290a3d9",
      "tree": "cea6647a45cc59fa1423751179e647124f269990",
      "parents": [
        "a654e0378a8d0bb149362399917e4da2959e6991"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 19 17:25:12 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 22 18:35:05 2017 +0100"
      },
      "message": "Use PC-relative pointer to boot image methods.\n\nIn preparation for adding ArtMethod entries to the .bss\nsection, add direct PC-relative pointers to methods so that\nthe number of needed .bss entries for boot image is small.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Nexus 6P boots.\nTest: Build aosp_mips64-userdebug\nBug: 30627598\nChange-Id: Ia89f5f9975b741ddac2816e1570077ba4b4c020f\n"
    },
    {
      "commit": "2fad527ddf2b8d85df82468932ed724407f46be8",
      "tree": "d2420c1e23ad166d4995946d1c479efee8fc27d9",
      "parents": [
        "d1c22768e77d2c9c06d7dfa36bde24bf5b6ac8a0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 17 12:57:18 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 17 13:28:14 2017 +0100"
      },
      "message": "Ignore --compile-pic option for JIT.\n\nTest: testrunner --host --pictest --jit\nBug: 33192586\nChange-Id: I1e05874752c6a3b448ffbeff9681637a35acda2a\n"
    },
    {
      "commit": "bb84610d2de3c12b0e0cdc724df29479b9501461",
      "tree": "c653ec839e370b2cf200a3303abd81b2c36bedd9",
      "parents": [
        "0af0ec2b59e624861dc3461ba9ce192fd350fd12"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 11 21:03:35 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 11 21:03:35 2017 -0700"
      },
      "message": "ART: Remove CompiledClass\n\nReplace by direct storage of the class status, and modify accessor\nto return boolean value of whether the item exits. Reduces RAM\nrequirements and allocations for dex2oat.\n\nTest: m test-art-host\nChange-Id: I6a80ac3d644c7fd0da167996ab991b6d2796a458\n"
    },
    {
      "commit": "f5ccfb506c3a8f8c0377e65cc9f0f832be64fec8",
      "tree": "1f215957e975e60f1dc6931070ab6f99228f3e3e",
      "parents": [
        "81c50bf31d9f9e35890404a2baf93f2c1e061ad9",
        "46847395470e414cd2aa1c6ea13e9a3d08e2b46b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 08 12:04:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 08 12:04:26 2017 +0000"
      },
      "message": "Merge \"Honor --force-determinism for vdex.\""
    },
    {
      "commit": "29825550d6bd7f1185e16b3925c7f084078e688e",
      "tree": "ce96bd0b74266b14d47419cd1d4dd969801198eb",
      "parents": [
        "15cb9753075bcaa5b91a6497a2d35e8bd98af1f0",
        "d01745ef88bfd25df574a885d90a1a7785db5f5b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 03 14:13:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 14:13:59 2017 +0000"
      },
      "message": "Merge \"optimizing: constructor fence redundancy elimination - remove dmb after LSE\""
    },
    {
      "commit": "d01745ef88bfd25df574a885d90a1a7785db5f5b",
      "tree": "058eb1593dbb0fe8a8e26b901909bec8aa01d474",
      "parents": [
        "a57c334075b193de9690fff97acf6c1b1d1283fc"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Apr 05 16:40:31 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue May 02 09:45:45 2017 -0700"
      },
      "message": "optimizing: constructor fence redundancy elimination - remove dmb after LSE\n\nPart one of a few upcoming CLs to optimize constructor fences.\n\nThis improves load-store-elimination; all singleton objects that are not\nreturned will have their associated constructor fence removed.\n\nIf the allocation is removed, so is the fence. Even if allocation is not\nremoved, fences can sometimes be removed.\n\nThis change is enabled by tracking the \"this\" object associated with the\nconstructor fence as an input. Fence inputs are considered weak; they do not keep\nthe \"this\" object alive; if the instructions for \"this\" are all deleted,\nthe fence can also be deleted.\n\nBug: 36656456\nTest: art/test.py --host \u0026\u0026 art/test.py --target\nChange-Id: I05659ab07e20d6e2ecd4be051b722726776f4ab1\n"
    },
    {
      "commit": "f5bea5e9acd03a218e43ac460743210de202e8d7",
      "tree": "87c43b700883ab1404d3cf20fd44cc267d38388a",
      "parents": [
        "df48db90d5709542f2531fd1df310e81814ab788"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 02 12:46:07 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 02 14:42:04 2017 +0100"
      },
      "message": "Document some dex2oat command line options.\n\nAlso process option `--dump-cfg-append` correctly.\n\nTest: m build-art-host\nChange-Id: I062154c267c1a6eec22af42d985f19a555bdf4ca\n"
    },
    {
      "commit": "46847395470e414cd2aa1c6ea13e9a3d08e2b46b",
      "tree": "58855458907fe55c863e74be0b9a554664c0ee61",
      "parents": [
        "cf7d5d6b352442a7abf02a5b53a4575d395d0e97"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 28 14:56:39 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 28 14:56:39 2017 +0100"
      },
      "message": "Honor --force-determinism for vdex.\n\nb/37442966\nTest: build\n\nChange-Id: I220450ad204cf41ed24c2c98cdfc35aa9041a35e\n"
    },
    {
      "commit": "4e868fa7b8c47600695ff92deeb373674956a67d",
      "tree": "acdb92a2b765cc87a08459267e430a8866e608cf",
      "parents": [
        "4dc06e2ef900132d8395539842c35533da8b912a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 17:16:44 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 27 16:04:13 2017 +0100"
      },
      "message": "Make vdex and dexlayout compatible.\n\nUnquicken the vdex before dexlayout, to keep the dex integrity.\n\nbug: 37558732\nTest: run-test with speed-profile\n\nChange-Id: Ifcd5c2e4378ccb0df0a66d07f68df31d94b83220\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": "6d7abbd2324f544c6b6da42bb6b9b531df0ce3cd",
      "tree": "669705a042bbc77c7963c117a9bf6f7a2308f9c8",
      "parents": [
        "0dfc315a096bf5678cb5182771e3fdcca8ea4433"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 13:19:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 14:18:45 2017 -0700"
      },
      "message": "ART: More header cleanup - method_verifier.h\n\nMove enumerations to own header. Move the compiler interface (of what\nthe compiler can tolerate) into its own header. Replace or remove\nmethod_verifier.h where possible.\n\nTest: mmma art\nChange-Id: I075fcb10b02b6c1c760daad31cb18eaa42067b6d\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": "c7da1d61ba0fc38950f303813d4ba8c2d6d05c7f",
      "tree": "4e22f76d75e9121347adbfd628a600f06c853ac7",
      "parents": [
        "36831abc29f76baee9a7673a2c18465f33df3f05"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 19 09:36:24 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 19 09:42:40 2017 +0100"
      },
      "message": "Record class status after verification.\n\nThe class status was recorded when doing vdex verification, or\nany compilation (quickening or optimizing), but not when only doing\nverification.\n\nbug:37446669\nTest:compiler_driver_test\nChange-Id: Id027c7a9776ed651de570a0f3417c969c8cff9cd\n"
    },
    {
      "commit": "9c4f0d8ffd8fb1ce31b3f8de5ca8da497e0bee9a",
      "tree": "e72395eb564f86dbc2d620ba03879a2ff1d56067",
      "parents": [
        "7851a5339d5ebd6fd2a3a8d40abc15aad694d024"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Wed Apr 05 16:27:25 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Apr 06 10:42:52 2017 +0200"
      },
      "message": "Clean up after MIPS got read barriers support\n\nThis enables checker tests, as well as compiler_driver_test and\nreflection_test for MIPS32 and MIPS64.\n\nTest: mma test-art-host-gtest\nTest: mma test-art-target-gtest in QEMU (MIPS64)\nTest: ./testrunner.py --optimizing --target in QEMU (MIPS64)\n\nChange-Id: Ic6fe5b17f7f2cd7e38e12fef25afccf9358b80e0\n"
    },
    {
      "commit": "1a4bc7f084fae3ebcf4eac5addce14a06cd1c668",
      "tree": "fb1aec7df0d3893a535596a173a580070f8e84ee",
      "parents": [
        "46bfb7c047a590ac5c24b658f31c170631556bb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 14:57:30 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 14:57:30 2017 -0700"
      },
      "message": "ART: Remove unused DexToDex level.\n\nThere is only \"skip\" and \"optimize.\" We no longer have a required\ntier, as constructor fencing is now elision-based.\n\nBug: 36653594\nTest: m test-art-host\nChange-Id: Ide874a581fc5f887d020b3d32507e3973e7fd9a4\n"
    },
    {
      "commit": "f6d4668c42933e2f85ddbc94e276c49db4e2b1dd",
      "tree": "3343addb8cde45eb4070d4876f26bef1002248dc",
      "parents": [
        "0bbb750f6ff9a52bc4649995fc78ebea87e31dd1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 28 17:41:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 24 14:02:54 2017 +0000"
      },
      "message": "Improvements in the Inliner.\n\n- Change from a depth limit to a total number of HInstructions\n  inlined limit. Remove the dex2oat depth limit argument.\n- Add more stats to diagnose reasons for not inlining.\n- Clean up logging to easily parse output.\n\nIndividual Ritz benchmarks improve from 3 to 10%.\n\nNo change in other heuristics. There was already an instruction budget.\nNote that the instruction budget is rarely hit in the \"apps\" I\u0027ve tried\nwith.\n\nCompile-times improve from 5 to 15%.\nCode size go from 4% increase (Gms) to 1% decrease (Docs).\n\nbug:35724239\ntest: test-art-host test-art-target\n\nChange-Id: I5a35c4bd826cf21fead77859709553c5b57608d6\n"
    },
    {
      "commit": "051071718085ce807a2e7c55278a8d723e238e86",
      "tree": "396c41b8b887544f2905c5f97055e2f123c67730",
      "parents": [
        "ed883a11b8cd7f3712bd30fca1e2b0fb641bff63"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 13:17:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 13:25:00 2017 -0700"
      },
      "message": "Delete SrcMap\n\nNo longer used. SrcMapElem is still used by elf_debug_line_writer.h.\n\nAddress previous comments from aog/351387.\n\nTest: make\n\nChange-Id: Ib1525168b14889abbdc78ba20c64f3223b140a51\n"
    },
    {
      "commit": "cbcedbf9382bc773713cd3552ed96f417bf1daeb",
      "tree": "58eed766a69ddddbc41d21624244e14547fa1dff",
      "parents": [
        "ef62210a1466c133056c4bfdae9f8f5417065eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 12 22:24:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 10:20:34 2017 -0700"
      },
      "message": "Add method info to oat files\n\nThe method info data is stored separately from the code info to\nreduce oat size by improving deduplication of stack maps.\n\nTo reduce code size, this moves the invoke info and inline info\nmethod indices to this table.\n\nOat size for a large app (arm64): 77746816 -\u003e 74023552 (-4.8%)\nAverage oat size reduction for golem (arm64): 2%\n\nRepurposed unused SrcMapElem deduping to be for MethodInfo.\nTODO: Delete SrcMapElem in a follow up CL.\n\nBug: 36124906\n\nTest: clean-oat-host \u0026\u0026 test-art-host-run-test\n\nChange-Id: I2241362e728389030b959f42161ce817cf6e2009\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": "939e71a4f40496ffe770c80e81d6fe4a99d979e9",
      "tree": "4203578687db372598bffaeb81feb221a461305f",
      "parents": [
        "f92e179efdd070c4d54633ac305199b10f957bd7",
        "1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 10 15:13:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 10 15:13:31 2017 +0000"
      },
      "message": "Merge \"Hash-based DexCache field array.\""
    },
    {
      "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": "13439f0c4769a0768cf1bbaa7b3f2f9ee5a317c5",
      "tree": "a5d52373571fad4249544a7b27c8009233d69f9d",
      "parents": [
        "74f94dd8edb4a6070f6f7bfef6d28a8b4a21fc30"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 21 01:17:21 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 09 17:14:02 2017 -0800"
      },
      "message": "Use offline inline caches during AOT compilation\n\nAlso:\n- extend the testing script to understand profile when --profile is\npassed\n- filter inline cache types which are not loaded by the caller class\nloader\n\nTest: m test-art-host-run-test-638-checker-inline-caches\nBug: 32434870\nChange-Id: Ifcc27b3cebc79b84617412aaae64a73324151b55\n"
    },
    {
      "commit": "97fa9928c07d3e0ee631235e9619fb0f8949ed7a",
      "tree": "cd19ef9879b0dac1237a8be0d6a0075fcbe54f51",
      "parents": [
        "2c3fc44464d261c8ae285abbd140b4523dba005c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 13:13:25 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 20:54:21 2017 +0000"
      },
      "message": "Do not allow input-vdex with dexlayout.\n\ninput-vdex and dexlayout are incompatible with each other.\n\nbug: 36084905\nbug: 36076104\nbug: 36059948\nbug: 35872504\n\nTest: device boots, vdex works on OTA, input-vdex is not passed\n      for speed-profile.\n\nChange-Id: I630c90acf0a8f49f50b7909e2dec995dd4a4d13f\n"
    },
    {
      "commit": "68fdd5a22024f70a65159bcb8929296fc93b807d",
      "tree": "d0d5256fde2f91b61bde97d0632436cabb0b23db",
      "parents": [
        "02a4d7ff633e67d0a5113f0fc742116dcdc5b7f6",
        "c52f3034b06c03632e937aff07d46c2bdcadfef5"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Mar 09 08:33:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 09 08:33:04 2017 +0000"
      },
      "message": "Merge \"Remove --include-patch-information option from dex2oat.\""
    },
    {
      "commit": "c52f3034b06c03632e937aff07d46c2bdcadfef5",
      "tree": "031e4d1b2ca0961014e57e4987d80d7aa2c435b0",
      "parents": [
        "ef81e988d0eb4db390e576aac346701b2d820916"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Mar 02 13:45:45 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 08 10:55:17 2017 +0000"
      },
      "message": "Remove --include-patch-information option from dex2oat.\n\nBecause we no longer support running patchoat on npic oat files, which\nmeans the included patch information is unused .\n\nBug: 33192586\nTest: m test-art-host\n\nChange-Id: I9e100c4e47dc24d91cd74226c84025e961d30f67\n"
    },
    {
      "commit": "7cc3ae5705416bd8fc4b7096904e2871aa761e73",
      "tree": "7828e0346d1961b1454a56fa7759b72c13e1b67a",
      "parents": [
        "a86b359441f349d9057d05c32c88c375d794cf86"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 07 14:33:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 07 17:44:43 2017 +0000"
      },
      "message": "Return the right value in VerifyClass.\n\nWe used to return kNoFailure when a class was already processed.\nBut it could have had soft failures.\n\nAlso remove IsCompileTimeVerified to avoid future confusions and\nintroduce ShouldVerifyAtRuntime.\n\nAdd some more checks to make sure we record the right things in\nthe vdex file.\n\nbug: 33845394\ntest: verifier_deps_test test-art-host\nChange-Id: Iff11a96e825c85db416083413761981515f405b7\n"
    },
    {
      "commit": "d9f647ac9a5cb0c6f112332d584756251c2cfb9f",
      "tree": "329c14766fa03136a9912b574ba7304ea3e44e6e",
      "parents": [
        "b2a6d1218c527a685c421984292c47d241cf4a11",
        "e0ac1151b360be7147fa20320c0b427688b1424f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 03 22:47:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 03 22:47:21 2017 +0000"
      },
      "message": "Merge \"Extend profman to generate profiles with inline caches\""
    },
    {
      "commit": "e0ac1151b360be7147fa20320c0b427688b1424f",
      "tree": "c33419b00c47b731075bcfd7b75b81f366beda91",
      "parents": [
        "425b5d23e2c60d295471817a75b1b554481c5334"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 13 19:03:47 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 13:12:31 2017 -0800"
      },
      "message": "Extend profman to generate profiles with inline caches\n\nExtend profman logic to generate profiles based on a simple textual\nrespresentation. This will help writing tests for profile guided\ncompilation.\n\nBefore this CL, profman was able to generate profiles based on a list of\nclasses like:\njava.lang.Comparable\njava.lang.Math\njava.lang.Object\n\nThis CL, enables profman to understand methods and classes alike. The\nnew format is:\n\n# Classes\nLjava/lang/Comparable;\nLjava/lang/Math;\n# Methods with inline caches\nLTestInline;-\u003einlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;\nLTestInline;-\u003enoInlineCache(LSuper;)I\n\n\"LTestInline;-\u003einlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;\"\nmeans that method `int inlineMonomorphicSubA(Super)` from class Main\nwill be added to the profile with the inline cache (SubA,SubB) for its\none and only invoke virtual.\n\n@Main#noInlineCache:(LSuper;)I+;\nmeaning that method `int noInlineCache\u0027 from class Main will be added\nto the profile with no inline cache.\n\nNote that the methods are allowed to have a single invoke virtual in\ntheir dex bytecode. That is to keep the parsing the file format\nsimple and easy to use.\n\nAlso, add a few more tests for profiles and fix an issue caused by\nwriting the dex files in a possibly wrong order.\n\nTest: m run-test-host-gtest-profile_assistant_test\nBug: 32434870\nChange-Id: I6b7340cf613007117d9818be206ccb3a27b815bf\n"
    },
    {
      "commit": "7bf90484a6f3774875291e506136345f0b488976",
      "tree": "4a8517f40094fbf42c4225bb09f7d8f255fde4f9",
      "parents": [
        "9e7078b3e5794f1b65f7e75ad110551906bf5f0d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 02 16:41:35 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 03 08:58:16 2017 -0800"
      },
      "message": "ART: Resolve \u003cclinit\u003e strings in compiler driver\n\nResolve strings for \u003cclinit\u003e in classes that fail initialization.\nThis will move the data from the zygote heap into the image heap,\ncreating clean memory.\n\nIncreases the image size by XXX. However, at the same time decreases\nthe zygote heap by the same amount.\n\nBug: 34956610\nTest: m\nTest: m test-art-host\nTest: Device boots\nChange-Id: I5be41da8424d5de65c02a2aed1ac4d6113741876\n"
    },
    {
      "commit": "9e7078b3e5794f1b65f7e75ad110551906bf5f0d",
      "tree": "7104d4693a5c1b1d9dcd90f043b26ebddb22c3cb",
      "parents": [
        "3a791cee90451dc32d46f1b0a85fecc6f22f62bf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 02 13:50:36 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 03 08:55:23 2017 -0800"
      },
      "message": "ART: Resolve static field strings in compiler driver\n\nResolved strings for static final fields in classes that fail\ninitialization. This will move the data from the zygote heap into\nthe image heap, creating clean memory.\n\nIncreases the image size by ~100K. However, at the same time decreases\nthe zygote heap by the same amount.\n\nBug: 34956610\nTest: m\nTest: m test-art-host\nTest: Device boots\nChange-Id: Ifa4aac0209f2364488b164b04daa9539821bc12b\n"
    },
    {
      "commit": "97ab5e3b79d1cf6034d3a2a1c6e6b2176d4e2af5",
      "tree": "bbba74bf351ebf2863bda16d8fb46c2ca43f9c67",
      "parents": [
        "fc5d8c28e5265634aeeb2f255dc8d5747e2919ee"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 22 13:35:44 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 22 14:55:25 2017 -0800"
      },
      "message": "Check for null profile in ShouldCompileBasedOnProfile\n\nIt may be null if speed-profile is passed to dex2oat without a\nprofile. In this case, compile nothing.\n\nTest: mm test-art-host-gtest-dex2oat_test -j32\n\nBug: 35665292\nBug: 35420088\n\nChange-Id: I2da3258492d1f6b86bba6b4bb5a86d378f0a9227\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": "d0af56cdb1eaebea403e382257bdc14d7b7fdaa4",
      "tree": "56b21fb7d4dcbb0dcab45e07dc48e47a074af6c5",
      "parents": [
        "ee883219e329571b9e487b94dc6a675095d088bf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 17 12:56:25 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 17 15:54:49 2017 -0800"
      },
      "message": "Make dex2oat support profiles passed to non profile filters\n\nUsing a non profile filter with an input profile should compile\neverything but generate an app image and optimize layout based on\nthe profile.\n\nChange UseProfileGuidedCompilation to use the profile arguments.\nUsing profile arguments instead of being based on the compiler\nfilter lets us do full speed compile and layout based on profile.\n\nFix ShouldCompileBasedOnProfile to use the compiler filter instead\nof the existence of a profile.\n\nFixed gtests.\n\nTest: test-art-host\n\nBug: 34927277\n\nChange-Id: I325a10d2072ed427bb32f96e4efa54cf81e94ad3\n"
    },
    {
      "commit": "cadf24495e1599db49ab27ef41869c6855223478",
      "tree": "af414d5e9813a7346f2822c431cb27bc24a9a997",
      "parents": [
        "8b4a45c1816fe17e57e41380d3518e8b910b4f30",
        "23a625c4c0ca13154f27bcf00928b0631e2a1f58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 13:19:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 13:19:23 2017 +0000"
      },
      "message": "Merge \"Update verify-profile logic.\""
    },
    {
      "commit": "23a625c4c0ca13154f27bcf00928b0631e2a1f58",
      "tree": "c1168ff16b71fb45a9f1c4714953919a0c9df7c5",
      "parents": [
        "f85fc6bd9d65ef4689d6af797adb889da8cf15e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 06 10:28:33 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 10:45:40 2017 +0000"
      },
      "message": "Update verify-profile logic.\n\nTo start measuring OTA time improvements correctly, return\nverify-profile as non-profile filter of verify-profile.\n\nbug:34715556\nTest: device boots, interpret-only is not used\nChange-Id: I098a23d6dc958530df4eb94209d07d735576e0eb\n"
    },
    {
      "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": "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": "83c8e27a292e6e002fb3b3def75cf6d8653378e8",
      "tree": "f49ff5c239f318a0290a0d1e0a5b4d9a1ee1d2ba",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 31 14:36:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 15:12:46 2017 +0000"
      },
      "message": "Code refactoring around sharpening HLoadClass.\n\nEven if the class is not accessible through the dex cache, we\ncan access it by other means (eg boot class, jit table). So rewrite\nstatic field access instruction builder to not bail out if a class\ncannot be accessed through the dex cache.\n\nbug:34966607\n\ntest: test-art-host test-art-target\nChange-Id: I88e4e09951a002b480eb8f271726b56f981291bd\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": "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": "13970e4af1005bf466410c4deab7b0450f348674",
      "tree": "63521f624ca477c00f841e65d9af4e76438ca35d",
      "parents": [
        "6f04628765d738b648c1f9bccdebd4b2704314cd",
        "e40dd38c6ccd3c55138ed6ef216dec261150fd5e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 27 00:25:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 27 00:25:52 2017 +0000"
      },
      "message": "Merge \"Re-enable tests 934 \u0026 935\""
    }
  ],
  "next": "e40dd38c6ccd3c55138ed6ef216dec261150fd5e"
}
