)]}'
{
  "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": "b67d0c0fcef5e76e579246d48ec005fe31e64f97",
      "tree": "343117b8181faeed565ff244c5dedc9d0a8d1775",
      "parents": [
        "2ae4bc9f5b620bc768e4ae2ecab641a06a488a70",
        "cade5c3c75588da6d873df727acdaf3378a66efa"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 21:00:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 21:00:39 2017 +0000"
      },
      "message": "Merge changes I87b3fcb3,I971edf31,I5218a57c\n\n* changes:\n  Track class initializing in transaction\n  Move transaction creation to runtime\n  Test case for clinit support in app image\n"
    },
    {
      "commit": "ad76ef641d8570affb2e3c728b40876c4ed53fac",
      "tree": "3be2b0da866469391593f6c5142c6e4937d5a2d9",
      "parents": [
        "28e535bd94c84d1019f18c46e189928435e2938d",
        "bf9e21a33404440e1723e738975e23f7c1334e18"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 24 11:33:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 11:33:49 2017 +0000"
      },
      "message": "Merge \"Improve SchedulingLatencyVisitorARM on HCondition latency settings.\""
    },
    {
      "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": "bf9e21a33404440e1723e738975e23f7c1334e18",
      "tree": "c25c5a814530c949745aa1f170505319f57a0d0e",
      "parents": [
        "89ae0f42e38a2f985ac404830f2a05fecf9547e2"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Thu Jun 15 11:01:11 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 21 13:50:00 2017 +0000"
      },
      "message": "Improve SchedulingLatencyVisitorARM on HCondition latency settings.\n\nTest: m test-art-host\nTest: m test-art-target\n\nChange-Id: Ieb42a8511036c86a9d99972dfd7d745f64559685\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": "a9894d24088ed066aa534ba7c157ab2f1e11cd71",
      "tree": "6d72affd2c3fba3d9713f34d11e13aceddd77d91",
      "parents": [
        "2f1d924e9cd34d081d6c37332e4e8f0f0d191b85",
        "e01b6f674a865a3aef7d66cd91a2d2e226587b50"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 20 18:31:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 18:31:23 2017 +0000"
      },
      "message": "Merge \"Move IsVeryLarge check before we create verification results\""
    },
    {
      "commit": "e01b6f674a865a3aef7d66cd91a2d2e226587b50",
      "tree": "1d99c6889746d829a86b375b3d88552f29461b7e",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 19 16:55:04 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 20 09:36:26 2017 -0700"
      },
      "message": "Move IsVeryLarge check before we create verification results\n\nOtherwise we can end up creating verification results when they are\nnot actually needed (if the compiler filter was \u003e\u003d quicken).\n\nBug: 63467744\nTest: test-art-host\nChange-Id: Ied2a12e0e4c2010f3f660e278c3a5111545ba251\n"
    },
    {
      "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": "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
      "tree": "c71c2e5775fe82242034c00d0a5c69c4116169bd",
      "parents": [
        "3579eb29f88a9fe4040e4d212e0acaa2e0690946",
        "4147fcc43c2ee019a06e55384985e3eaf82dcb8c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 11:32:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 11:32:20 2017 +0000"
      },
      "message": "Merge \"MIPS: Reduce Baker read barrier code size overhead\""
    },
    {
      "commit": "3579eb29f88a9fe4040e4d212e0acaa2e0690946",
      "tree": "4b732d4f9aed44e97066b8277a4880d6cbe8e081",
      "parents": [
        "24f4f7956edeffb1ae41809e09f14b6d5e7875c8",
        "420ee30f4c0f8a5bb6048df4fa27e5432ded893b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 10:32:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 10:32:35 2017 +0000"
      },
      "message": "Merge \"ARM: VIXL32: Merge (un)signed extensions and integer additions\""
    },
    {
      "commit": "4147fcc43c2ee019a06e55384985e3eaf82dcb8c",
      "tree": "11ec92efbfddf7736bbc74ed35fcfb3756bfcfb0",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sat Jun 17 19:57:27 2017 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Wed Jul 19 15:03:10 2017 -0700"
      },
      "message": "MIPS: Reduce Baker read barrier code size overhead\n\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\nTest: test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: same tests as above on CI20\nTest: booted MIPS32 and MIPS64 in QEMU with poisoning\n      in configurations:\n      - with Baker read barrier thunks\n      - without Baker read barrier thunks\n      - ART_READ_BARRIER_TYPE\u003dTABLELOOKUP\n\nChange-Id: I79f320bf8862a04215c76cfeff3118ebc87f7ef2\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": "01db5f78f627cc64f80b0c0a4eedd0a3dc8b46ca",
      "tree": "d1ee9267408e2f4d777d28bfc3f65c480f7ecd3f",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:05:49 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:05:49 2017 +0100"
      },
      "message": "Pass the logger to the JIT compiler.\n\nTo avoid effects of concurrent method entrypoints update,\njust pass the logger to the JIT compiler, which will invoke\nit directly with the pointer to the newly allocated code.\n\nTest: test.py --trace\nChange-Id: I5fbcd7cbc948b7d46c98c1545d6e530fb1190602\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": "420ee30f4c0f8a5bb6048df4fa27e5432ded893b",
      "tree": "fd72cba9ed09cf78e9377677fd144821fd9f6743",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Tue Feb 21 18:10:26 2017 +0000"
      },
      "committer": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Tue Jul 18 20:19:58 2017 +0100"
      },
      "message": "ARM: VIXL32: Merge (un)signed extensions and integer additions\n\nTest: m test-art-target-run-test-551-checker-shifter-operand\nChange-Id: I041e80e51bf0954b38ab20dfa9b14aa7f6d6c53b\n"
    },
    {
      "commit": "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3",
      "tree": "5f9665e7b3299f911a2a305e17c5e678cdd51c49",
      "parents": [
        "9fb4e85d6e42b3f060ddcefcbf39bdfec656fc52",
        "2bff9ca67a3e945f7c2ca7e8a075e2d91637b01b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 15:45:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 15:45:12 2017 +0000"
      },
      "message": "Merge changes I01b45c86,I10307aea,Iefccd6ff,Ibbda8e9a,I71a7f59b\n\n* changes:\n  ART: Remove more object_callbacks.h includes\n  ART: Replace or remove some ObjectCallback Walk functions\n  ART: Remove old visit functions\n  ART: Use VisitObjects visitor functions\n  ART: Add templated VisitObjects\n"
    },
    {
      "commit": "9fb4e85d6e42b3f060ddcefcbf39bdfec656fc52",
      "tree": "80e525f139b88754c23272dd5cf612312b7a61ef",
      "parents": [
        "d44c0d8c7f96644f8176e493de2fbde3eb198bb4",
        "08490b84048a0267694268185441b70cfa090185"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 15:15:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 15:15:42 2017 +0000"
      },
      "message": "Merge \"Only honor $inline$ in AOT.\""
    },
    {
      "commit": "b02ba93fb8089ae70229c4e3e90478cb4a9e4668",
      "tree": "dee702cd8570b7993a13d34789ed5b819913ccc8",
      "parents": [
        "24ff0235ab631baccd49fb491197d86d1ef97279"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 13 15:53:54 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 18 13:28:00 2017 +0100"
      },
      "message": "Don\u0027t encode OatQuickMethodHeader for non-compiled methods.\n\nRequires changes to the quickening info format stored in vdex.\n\nLarge app:\n\nBefore\nodex size: 5.5MB\nvdex size: 48MB (49308168 bytes)\n\nAfter:\nodex size: 1.2MB -78%\nvdex size: 48MB (49701846 bytes) +1%\n\nbug: 62120170\nTest: test.py\nChange-Id: I5ae0b103dc57bdd17aa772f4e43db954d109fd44\n"
    },
    {
      "commit": "08490b84048a0267694268185441b70cfa090185",
      "tree": "80f96cffd48eb9b43051d4128d4c8654c1a0d8da",
      "parents": [
        "252eda65ae216ff36a4eca2195d1ec3b29612035"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 18 12:58:10 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 18 12:58:59 2017 +0100"
      },
      "message": "Only honor $inline$ in AOT.\n\nThe state of classes is undeterministic when JITting.\n\nTest: test.py\nChange-Id: I05325efe325bb4f7759d7af7cd65d362e6945c57\n"
    },
    {
      "commit": "24ff0235ab631baccd49fb491197d86d1ef97279",
      "tree": "d999768a0cf955044a4a771fa802b30034dee234",
      "parents": [
        "252eda65ae216ff36a4eca2195d1ec3b29612035",
        "c043d006845afef99b17aeab8bb6d6da1a42ad37"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 18 09:54:47 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 09:54:47 2017 +0000"
      },
      "message": "Merge \"Remove the old ARM assemblers from ART.\""
    },
    {
      "commit": "1c158a07ac7bac301af9d2921207d66730d1ac0a",
      "tree": "db42f2bef50c3a2393e4f8e09b64a43af75bd15c",
      "parents": [
        "351c44765279142d15333e2ae02b8a423d195b1b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 17:26:19 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:08:53 2017 -0700"
      },
      "message": "ART: Use VisitObjects visitor functions\n\nMove users to VisitObjects with templated visitors. Clean\nup the code a bit.\n\nTest: m\nChange-Id: Ibbda8e9aa17e895cee559080c1e4158744cbbbf6\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": "a638954a75f28017ea8987a147f571c551c2f9e0",
      "tree": "769771eece61bb104555e89f3bfeef417b4ec8be",
      "parents": [
        "e77d1240a296b04d950a9b7f9d67c1eea5e7f7c5",
        "3957bfff3af63a889c71d680b4c215a3bc08f5cd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 20:37:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 17 20:37:32 2017 +0000"
      },
      "message": "Merge \"Reduce OatWriter RAM usage for non compilation filters\""
    },
    {
      "commit": "e77d1240a296b04d950a9b7f9d67c1eea5e7f7c5",
      "tree": "a78c1f182e7e0b8d088144507face4de6b087028",
      "parents": [
        "32df620576743b119a266cbc6afe7efecc80e97f",
        "2848a5f8df6a82ff436c67f6b92c8f0d49ae6788"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 17 20:05:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 17 20:05:18 2017 +0000"
      },
      "message": "Merge \"Avoid creating verified methods for non quickening filters\""
    },
    {
      "commit": "32df620576743b119a266cbc6afe7efecc80e97f",
      "tree": "d7f849a727e1188758cee1a72c566894b15fe4ff",
      "parents": [
        "5fde01a13f5000d16fc8f5b96aa0d2f3623d1961",
        "88b74b6a4dbbe0b5b75ef1738833e5b064e85d4c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 17 20:01:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 17 20:01:29 2017 +0000"
      },
      "message": "Merge \"Avoid creating compiled_methods_ array unnecessarily\""
    },
    {
      "commit": "3957bfff3af63a889c71d680b4c215a3bc08f5cd",
      "tree": "67b942ecec418da56495f69165fa60674489f8f9",
      "parents": [
        "5fde01a13f5000d16fc8f5b96aa0d2f3623d1961"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jul 16 13:55:27 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 11:44:40 2017 -0700"
      },
      "message": "Reduce OatWriter RAM usage for non compilation filters\n\nAvoid allocating full oat classes if compilation is not enabled.\n\nThis is accomplished by splitting OatClass into a new OatClassHeader\nclass that only has status, type, and offset members. This saves\nRAM since it is much smaller than the full OatWriter::OatClass.\n\nMaximum resident set size from /usr/bin/time -v on host dex2oat\nwith compiler filter verify -j4: 287248k-\u003e276716k\n\nBug: 63467744\nTest: test-art-host\n\nChange-Id: I6812c259cb8c8c56e122636438a76fdcc1b9a41d\n"
    },
    {
      "commit": "2848a5f8df6a82ff436c67f6b92c8f0d49ae6788",
      "tree": "af3b0a19e61831bdda8be04b4859a19ca9117d76",
      "parents": [
        "65d793bfa91085db5f84b6ee90a3dcdafcafed1b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jul 15 15:18:00 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 17 10:34:33 2017 -0700"
      },
      "message": "Avoid creating verified methods for non quickening filters\n\nFilters that don\u0027t do either quickening or compiling don\u0027t need\nverified methods. Avoiding allocating these saves a non-trivial\namount of RAM during compilation.\n\nBefore (PSS compiling a very large app):\nPeak PSS: 215014K, native RAM 59378392B\n\nAfter:\nPeak PSS: 207815K, native RAM 52917928B\n\nBug: 63467744\nTest: Compile an app with compiler-filter\u003dverify\nTest: test-art-host\n\nChange-Id: I493a1c4a8a152b835d5e950192974c4da5b96ae3\n"
    },
    {
      "commit": "c043d006845afef99b17aeab8bb6d6da1a42ad37",
      "tree": "756ce3caca2a7ff62a169c003639657bd7124d2f",
      "parents": [
        "9983e302384c12a975c8d2d5ae239f79fd8e1996"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 14 16:39:16 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 17 18:00:40 2017 +0100"
      },
      "message": "Remove the old ARM assemblers from ART.\n\nNow that the old ARM code generator for ART\u0027s Optimizing\ncompiler is gone, these assemblers no longer have users;\nretiring them.\n\nTest: test.py\nBug: 63316036\nChange-Id: Iaea42432a9e0d3288b71615f85c58846c0336944\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": "23cdebe60049850200b30869c6970193f5e7ecea",
      "tree": "bf6eab054e2595f3dbf269a0cc4f4190799f0528",
      "parents": [
        "d4472455580db696d0f211f8e6f7d99d78b3fa79",
        "854df416f12c48b52239fe163ab8a7fcac4cddd3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 17 13:13:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 17 13:13:41 2017 +0000"
      },
      "message": "Merge \"MIPS: TLAB allocation entrypoints\""
    },
    {
      "commit": "65d793bfa91085db5f84b6ee90a3dcdafcafed1b",
      "tree": "c94b0a8ea3a08a8c29feb4fcccbc0793e85f8ad5",
      "parents": [
        "731af335f4e15e82b8972d63b6424d5228f06eec",
        "9983e302384c12a975c8d2d5ae239f79fd8e1996"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sat Jul 15 08:58:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jul 15 08:58:21 2017 +0000"
      },
      "message": "Merge \"Remove the old ARM code generator from ART\u0027s Optimizing compiler.\""
    },
    {
      "commit": "9983e302384c12a975c8d2d5ae239f79fd8e1996",
      "tree": "4e4d269fe1a3d4f0f1b93cd972adab9f17aab8e0",
      "parents": [
        "bac2bd1c2fbdd94f4d4dfe83d8451f655e875e36"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 14 14:34:22 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 14 17:25:39 2017 +0100"
      },
      "message": "Remove the old ARM code generator from ART\u0027s Optimizing compiler.\n\nThe AArch32 VIXL-based code generator has been the default\nARM code generator in ART for some time now. The old ARM\ncode generator does not compile anymore; retiring it.\n\nTest: test.py\nBug: 63316036\nChange-Id: Iab8fbc4ac73eac2c1a809cd7b22fec6b619755db\n"
    },
    {
      "commit": "2d0fe4ca6906b4215646f1db99b06f927791f2c6",
      "tree": "617e2c5fbb508d5500b6a2f06144c0e412386263",
      "parents": [
        "5e7eb2faccf8f4a28e9fcda26053a5b388f2190a",
        "b79f4ac55c0bb177f541937d0678f2aa777e1c9a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 14 15:57:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 15:57:26 2017 +0000"
      },
      "message": "Merge \"Added GVN related attributes to vector nodes.\""
    },
    {
      "commit": "bac2bd1c2fbdd94f4d4dfe83d8451f655e875e36",
      "tree": "58ba3b1d28348da478a44234820ab6c485f5ed37",
      "parents": [
        "06410c093de2b8a21bdbd7dfd9ce324fd4e95c3f",
        "6d729a789d3d7771e13d9445ee0be1d9d48a81b5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 14 10:28:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 10:28:42 2017 +0000"
      },
      "message": "Merge \"Introduce a Marking Register in ARM code generation.\""
    },
    {
      "commit": "b79f4ac55c0bb177f541937d0678f2aa777e1c9a",
      "tree": "7c331aa30d3c38b4448070527ac02fdbd848f284",
      "parents": [
        "51e74b47f240187d336d9e688f5d7538366f2edf"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jul 10 10:10:37 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 13 16:50:03 2017 -0700"
      },
      "message": "Added GVN related attributes to vector nodes.\n\nRationale: enables better GVNing of vector operations,\nalso pays off some technical debt by adding unit tests\nfor vector nodes.\n\nThis is a revert^2 of a79f0b5deb932aa44e227c94c4ad09082b3ab4c7\n(failed some of the existing checker test due to\nmoving scalar replication; fix was setting can-be-moved\nattribute correctly on that node).\n\nBug: 63538372\n\nTest: test-art-host, test-art-target\n\nChange-Id: I2f29c317354b5e4bf520829232aef17931305ea6\n"
    },
    {
      "commit": "6d729a789d3d7771e13d9445ee0be1d9d48a81b5",
      "tree": "360b9af68920f411be5fe6753aaf7ab4976385ea",
      "parents": [
        "8cfbbb826a3ab7bb680cfcd8a8148570b165d620"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jun 30 18:34:01 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 13 16:41:07 2017 +0100"
      },
      "message": "Introduce a Marking Register in ARM code generation.\n\nWhen generating code for ARM, maintain the status of\nThread::Current()-\u003eGetIsGcMarking() in register R8,\ndubbed MR (Marking Register), and check the value of that\nregister (instead of loading and checking a read barrier\nmarking entrypoint) in read barriers.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: m test-art-host-gtest\nTest: ARM device boot test\nBug: 37707231\nChange-Id: I30b44254460d0bbb9f1b2adc65eca52ca3de3f53\n"
    },
    {
      "commit": "51765b098301fff1897361b2d1a21af356d9d6d8",
      "tree": "5d35468c9ecd428803fe7e4339fb8e251b6ed926",
      "parents": [
        "e63a91111d13f33028c2988ded53a4659140ca2e"
      ],
      "author": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Thu Jun 22 13:49:59 2017 +0200"
      },
      "committer": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Thu Jul 13 10:34:27 2017 +0200"
      },
      "message": "MIPS32: ART Vectorizer\n\nMIPS32 implementation which uses MSA extension.\n\nNote: Testing is done with checker parts of tests 640, 645, 646 and\n      651, locally changed to cover MIPS32 cases. These changes can\u0027t\n      be included in this patch since MSA is not a default option.\n\nTest: ./testrunner.py --target --optimizing -j1 in QEMU (mips32r6)\nChange-Id: Ieba28f94c48c943d5444017bede9a5d409149762\n"
    },
    {
      "commit": "854df416f12c48b52239fe163ab8a7fcac4cddd3",
      "tree": "f5cf247f1e71a5242c797b8fab99ded21839267d",
      "parents": [
        "e63a91111d13f33028c2988ded53a4659140ca2e"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Jun 27 14:41:39 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Jul 13 10:17:07 2017 +0200"
      },
      "message": "MIPS: TLAB allocation entrypoints\n\nAdd fast paths for TLAB allocation entrypoints for MIPS32 and MIPS64.\nAlso improve rosalloc entrypoints.\n\nNote: All tests are executed on CI20 (MIPS32R2) and in QEMU (MIPS32R6\n      and MIPS64R6), with and without ART_TEST_DEBUG_GC\u003dtrue.\n\nTest: ./testrunner.py --optimizing --target\nTest: mma test-art-target-gtest\nTest: mma test-art-host-gtest\n\nChange-Id: I92195d2d318b26a19afc5ac46a1844b13b2d5191\n"
    },
    {
      "commit": "de4b08ff24c330d5b36b5c4dc8664ed4848eeca6",
      "tree": "79835478b8b631bbf006b5e023704f3cf53bda7c",
      "parents": [
        "c9267c48979698a9217760c914aba13ea20b5990"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 10 14:13:41 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 17:54:49 2017 -0700"
      },
      "message": "Reduce quicken info size\n\nMove the quicken info from using a map of \u003cdex pc, index\u003e to an array\nof indices. Removed leb encoding since it is harmful for 16 bit\nindices. The map is indexed by the dequickenable instruction index\nfrom the start of the code item.\n\nNumbers for a certain large app compiled with quicken filter:\ndex2oat native alloc: 85345936B -\u003e 81527072B\noat file size: 9068968B -\u003e 8659368B\nvdex file size: 90479120B -\u003e 86321184B\n\nBug: 63467744\nBug: 36457259\nTest: test-art-host\n\n(cherry picked from commit 959f348acabc48efbb18c547dad6300c0f610c1c)\n\nChange-Id: I85546d8cd409cbf96140cbdddabd7e228797b9e3\n"
    },
    {
      "commit": "5dcf650c18c2314f861e62e6cc0309fe75056379",
      "tree": "a7e860a3c947cffedfd5feff6a49c8885099a1bc",
      "parents": [
        "8d174b5863ac4eec9d2315a5af3bdbfb4e4332e3",
        "b2e8adc075265ff4f1024dd081aaa74654ddf9f0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 12 17:43:53 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 17:43:53 2017 +0000"
      },
      "message": "Merge \"Include more cases in ImageWriter\""
    },
    {
      "commit": "af24def8967027f10ce8d44cb209c23032a2a1b4",
      "tree": "503bc7430d73944dc1faf51082fc36be1735d4c4",
      "parents": [
        "08dd84adab79f98b2f2e7dfbccf8ef6b07cd3f2e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 13:18:01 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 13:20:53 2017 +0100"
      },
      "message": "Fix ART ARM64 CFI gtests with GCs other than CC with Baker read barriers.\n\nSince the introduction of a Marking Register in the ARM64 back\nend, gtests jni_cfi_test and optimizing_cfi_test produce\ndifferent outputs for the Concurrent Copying (CC) collector\nwith Baker read barriers on the one hand, and for other GCs on\nthe other hand.\n\nTest: m test-art-host-gtest with tree built with ART_USE_READ_BARRIER\u003dfalse\nBug: 37707231\nChange-Id: I63de8873f52df593eb664970f2be20f1089804a9\n"
    },
    {
      "commit": "08dd84adab79f98b2f2e7dfbccf8ef6b07cd3f2e",
      "tree": "f171c11372ad3826d91853a0e125be14e12d029d",
      "parents": [
        "8ea20746896a5930d99b74d54213ff5a742ae937",
        "97c46466aea25ab63a99b3d1afc558f0d9f55abb"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 10:38:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 10:38:10 2017 +0000"
      },
      "message": "Merge \"Introduce a Marking Register in ARM64 code generation.\""
    },
    {
      "commit": "b2e8adc075265ff4f1024dd081aaa74654ddf9f0",
      "tree": "d478bd7180d8c8ff1379d4636869f516ed4655aa",
      "parents": [
        "720e0db030504d9490e0c0eb671d04267921fd42"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri Jul 07 17:35:37 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Tue Jul 11 17:47:19 2017 -0700"
      },
      "message": "Include more cases in ImageWriter\n\nAdd a reference visitor for object in image writer to prune not only classes\nbut also instances referenced. Otherwise an object storing a ref to a pruned\nclass will not pruned.\n\nPrune a class anyway if it contains any field that is an instance of Method\nand Constructor class because reflection is forbidden.\n\nTests may not cover the new logic, but they will be tested when clinit is\nsupported for app image later.\n\nTest: make test-art-host-j64\nChange-Id: I8318cdb553eff8e56a30493124f859419f20e23f\n"
    },
    {
      "commit": "5fd8e8146b45e591fedc8c83781e9c62b5e6fef4",
      "tree": "a79259b26160e5e85eeb4023106cf205eb2b19e5",
      "parents": [
        "733e441e3bcaa6efb8248fe3429b18d3199ee30e",
        "1ce7085831316272f071a01d14eea8048264a7bf"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 11 17:35:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 11 17:35:32 2017 +0000"
      },
      "message": "Merge \"Add support for class loader context in dex2oat\""
    },
    {
      "commit": "97c46466aea25ab63a99b3d1afc558f0d9f55abb",
      "tree": "afd225f51d28a77329bc2590a025400e088f260c",
      "parents": [
        "00cca3a275562d110a8b35094b9b12fac37f67ab"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 11 14:04:03 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 11 17:43:27 2017 +0100"
      },
      "message": "Introduce a Marking Register in ARM64 code generation.\n\nWhen generating code for ARM64, maintain the status of\nThread::Current()-\u003eGetIsGcMarking() in register X20,\ndubbed MR (Marking Register), and check the value of that\nregister (instead of loading and checking a read barrier\nmarking entrypoint) in read barriers.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: ARM64 device boot test\nBug: 37707231\nChange-Id: Ibe9bc5c99a2176b0a0476e9e9ad7fcc9f745017b\n"
    },
    {
      "commit": "1ce7085831316272f071a01d14eea8048264a7bf",
      "tree": "35e527413824324e82398fdc6bd89c883366bdb6",
      "parents": [
        "87e2cb64ab02d9bdc48255130c67168c809c5f62"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 28 10:59:03 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jul 10 17:08:08 2017 -0700"
      },
      "message": "Add support for class loader context in dex2oat\n\nThe context can be passed to dex2oat using \u0027--class-loader-\ncontext\u003d\u003cstring spec\u003e\u0027. It accepts a string specifying the intended\nruntime loading context for the compiled dex files.\n\ne.g. --class-loader-context\u003dPCL[lib1.dex:lib2.dex];DLC[lib3.dex].\n\nIt describes how the class loader chain should be build in order to\nensure classes are resolved during dex2aot as they would be resolved at\nruntime. This spec will be encoded in the oat file. If at runtime the\ndex file will be loaded in a different context, the oat file will be\nrejected.\n\nThe chain is interpreted in the natural \u0027parent order\u0027, meaning that\nclass loader \u0027i+1\u0027 will be the parent of class loader \u0027i\u0027. The\ncompilation sources will be added to the classpath of the last class\nloader. This allows the compiled dex files to be loaded at runtime in a\nclass loader that contains other dex files as well (e.g. shared\nlibraries).\n\nNote that the compiler will be tolerant if the source dex files\nspecified with --dex-file are found in the classpath. The source dex\nfiles will be removed from the any class loader\u0027s classpath possibly\nresulting in empty class loaders.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I3446ac7b2949d367dbc6d15729d3b203791eaac0\n"
    },
    {
      "commit": "65f1c2edd02f3936aef94c7313932069e66a1167",
      "tree": "d584cd9362d216b4f4dc310a28c3210a83cd375e",
      "parents": [
        "2b30e06c3caa33ad77cd30648e1e111c44799305",
        "ca8c2951ea25e8f93eea9decc70d81937b4361dd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 10 19:08:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 10 19:08:54 2017 +0000"
      },
      "message": "Merge \"MIPS32: Saves 128-bit vector registers along SuspendCheckSlowPath\""
    },
    {
      "commit": "e61682fc562a8ada3d0be8c375b05365ffbc2aa7",
      "tree": "f350f31de30c698b1e1ee66749c5e1fd430a5116",
      "parents": [
        "d3784e9d4d29707c9909f2501a816d8d0a27fa99",
        "9858bf70c9af425f5f712caca7b51b49c806b271"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 08 12:35:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jul 08 12:35:23 2017 +0000"
      },
      "message": "Merge \"Revert \"Added GVN related attributes to vector nodes.\"\""
    },
    {
      "commit": "9858bf70c9af425f5f712caca7b51b49c806b271",
      "tree": "e70e88c83c8260fbea01b258d3d221cc31d38d8d",
      "parents": [
        "a79f0b5deb932aa44e227c94c4ad09082b3ab4c7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 08 12:34:55 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 08 12:34:55 2017 +0000"
      },
      "message": "Revert \"Added GVN related attributes to vector nodes.\"\n\nFails armv8 checker tests.\n\nThis reverts commit a79f0b5deb932aa44e227c94c4ad09082b3ab4c7.\n\nChange-Id: I8913743f241febbbb24c0662af76397e87e59cd1\n"
    },
    {
      "commit": "5da5dca64d2c0db9f793b82ceeb1dd21a3c839f9",
      "tree": "dfc716616ea4b98095c41d7000ced8ca58fb985c",
      "parents": [
        "a3920a0435fa63a0ee98ccd3c87d7af960086eaa",
        "2e0a7e5047fde08ddd220aaa1a0e64d44ecbb420"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 07 18:07:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 07 18:07:23 2017 +0000"
      },
      "message": "Merge \"MIPS32: Adds changes neccessary for saving 128 bits of data\""
    },
    {
      "commit": "334a1c591ad8931d944d460107936b21e4d2331b",
      "tree": "b39dc5742880ca057b8b78d8a1bc3e79b151c60a",
      "parents": [
        "8be42d0d30f32e5237087673b46010625988553a",
        "a79f0b5deb932aa44e227c94c4ad09082b3ab4c7"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jul 07 15:50:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 07 15:50:14 2017 +0000"
      },
      "message": "Merge \"Added GVN related attributes to vector nodes.\""
    },
    {
      "commit": "a79f0b5deb932aa44e227c94c4ad09082b3ab4c7",
      "tree": "2d16c2876f6ccbc8ca1b9f6bf7fe43523a4132e3",
      "parents": [
        "4c4d9df7c79747978d2f927994a7b3c11a079075"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 05 17:19:41 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 06 11:58:20 2017 -0700"
      },
      "message": "Added GVN related attributes to vector nodes.\n\nRationale: enables better GVNing of vector operations,\nalso pays off some technical debt by adding unit tests\nfor vector nodes.\n\nTest: test-art-host, test-art-target\n\nChange-Id: I2aa886b894bb6a0961823ae309cf8cf44984cf4a\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": "170de15c5fc91ca8e9bc854f6adbee84d9b15b0b",
      "tree": "eb4d970ecfcfdbd343002b7d7303f97ffd1238d4",
      "parents": [
        "e32097c4d7f068673b531384340bb55f4b2ac011",
        "1b49910396629427d8d11aefb574817aec0231fb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 06 18:30:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 18:30:04 2017 +0000"
      },
      "message": "Merge \"Move libartd-simulator dependency to host-only\""
    },
    {
      "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": "ca8c2951ea25e8f93eea9decc70d81937b4361dd",
      "tree": "72c811abe58895b4972cd88ee267c8ca66155fd1",
      "parents": [
        "2e0a7e5047fde08ddd220aaa1a0e64d44ecbb420"
      ],
      "author": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Mon May 29 11:31:46 2017 +0200"
      },
      "committer": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Thu Jul 06 14:06:33 2017 +0200"
      },
      "message": "MIPS32: Saves 128-bit vector registers along SuspendCheckSlowPath\n\nWe need to save 128 bits of data. This is only done for vector\nregisters that are live, so overhead is not too big.\n\nTest: mma test-art-host-gtest\nTest: ./testrunner.py --optimizing --target in QEMU (MIPS)\nChange-Id: I0f792e9c98011be3e24d5fad35a8244faafcb9a0\n"
    },
    {
      "commit": "2e0a7e5047fde08ddd220aaa1a0e64d44ecbb420",
      "tree": "7c541176dc1b44cc927272f9b38fab4ce7ac9e85",
      "parents": [
        "209b4c7141d7da61790844cd58bd0a9bab2951d8"
      ],
      "author": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Thu Jul 06 11:55:24 2017 +0200"
      },
      "committer": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Thu Jul 06 14:04:01 2017 +0200"
      },
      "message": "MIPS32: Adds changes neccessary for saving 128 bits of data\n\nTest: mma test-art-host-gtest\nTest: ./testrunner.py --optimizing --target in QEMU (MIPS)\n\nChange-Id: I90b7baa1d5f910887bcc3ab80a1a48391ba80c45\n"
    },
    {
      "commit": "209b4c7141d7da61790844cd58bd0a9bab2951d8",
      "tree": "20819fa38ead6455301558143ed41f908bd581fd",
      "parents": [
        "c2127b907a94e4128d3a812d75a6654ebfc098dc",
        "f79aa7fc107c661e5a6d6ffd2a33221864fa1fa3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 08:47:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 08:47:59 2017 +0000"
      },
      "message": "Merge \"Small refactoring of field/method access checks.\""
    },
    {
      "commit": "71bde0dff0159976fdad4b6a45e903a96bd51aca",
      "tree": "b47f72efc2e56af1fb2839495692076521437e0c",
      "parents": [
        "b2bedf41a6ce1204d01a4adf804bc418594af0ee",
        "23e81a182fb71693b731ac24b6fc3969b7471473"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 06 01:01:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 01:01:36 2017 +0000"
      },
      "message": "Merge \"Improve ImageWriter logging.\""
    },
    {
      "commit": "23e81a182fb71693b731ac24b6fc3969b7471473",
      "tree": "f916042ca693263e99b8f28c33b1061c5a8d4580",
      "parents": [
        "4c4d9df7c79747978d2f927994a7b3c11a079075"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 05 09:36:27 2017 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 05 15:05:35 2017 -0700"
      },
      "message": "Improve ImageWriter logging.\n\nIn the case of a locked object log the type of object and the thread\nthat locked it.\n\nTest: test.py --host\n\nChange-Id: Ibaf79cead765df6c212213017248d0f70d9cfbd7\n"
    },
    {
      "commit": "5da37807bb1ab3f7f4cc8f111ad4819d766fc0ff",
      "tree": "0b6d0fc74b5b0f0029100584476e3a96e3bb6863",
      "parents": [
        "4c4d9df7c79747978d2f927994a7b3c11a079075",
        "3b15545581b32edbb3fa66967a01cd4d3b0bb5c2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 05 17:21:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 05 17:21:39 2017 +0000"
      },
      "message": "Merge \"Prune methods in image DexCache based on referencing class.\""
    },
    {
      "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": "3b15545581b32edbb3fa66967a01cd4d3b0bb5c2",
      "tree": "58a63b6c19a5084a141309c05b8c5629331abd2b",
      "parents": [
        "4a77b1e96733be419c0cb571448e8590c803bd91"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 05 11:41:33 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 05 16:12:00 2017 +0100"
      },
      "message": "Prune methods in image DexCache based on referencing class.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/353911\nwhere we did the same thing for fields.\n\nTest: 163-app-image-methods\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nBug: 30627598\nChange-Id: Ic24546f7e4a42f0f85e224a65ce1c8f7f1439340\n"
    },
    {
      "commit": "640fbdc7516a40883f219bd3c9f0e7b8a49842b4",
      "tree": "09b4ed23b6904c78ce6b1229b0b70f9a8830717f",
      "parents": [
        "4a77b1e96733be419c0cb571448e8590c803bd91",
        "2a3471fc83383bfe3e060799482e372420ba6150"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 05 10:28:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 05 10:28:20 2017 +0000"
      },
      "message": "Merge \"Disambiguate memory accesses in instruction scheduling\""
    },
    {
      "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": "631827d9b200c93f24816c6869d72426f9fed8e3",
      "tree": "9d5d768df39e21a2678d4b9148c5ec4d1c016911",
      "parents": [
        "d64fbfa3471c47d6628d6014bc4a3ac780abd26a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 10 14:53:47 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 04 11:57:13 2017 +0100"
      },
      "message": "Fixes for constant method handles\n\nAdd support for constant direct and interface method handles in the\nDEX file.\n\nAdd error handling for field and method resolution failures in\nClassLinker::ResolveMethodHandle().\n\nBug: 36957105\nTest: art/test/run-test --host 952-invoke-custom-kinds\nChange-Id: I91a2a23ba3365310eccb8cadd193b62f57e5811c\n"
    },
    {
      "commit": "8091ed8a26db4609c719ea8d905145ddfed7f498",
      "tree": "342d4459e8e9c61af7b69fc2ac2e0512592cf9f4",
      "parents": [
        "61cfb15e2588ff1fe3c80efbfcf55973122b28cb",
        "5fa5c04ca39fb9c46bfef0e0807a18d0cd9a4ba7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 03 11:48:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 03 11:48:56 2017 +0000"
      },
      "message": "Merge \"MIPS: Shorten .bss string/class loads\""
    },
    {
      "commit": "7df2bb6411a097e427b067fbbc3a17e2837cbb00",
      "tree": "2075547c85228ea923f199072afb986549ae59ca",
      "parents": [
        "a073f1f50a7bcc981c8d3d4bb7c3a267644af1e2",
        "e602b1cde4e422b9ff508b8b3dbfb31cadd826b7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jul 01 01:21:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jul 01 01:21:44 2017 +0000"
      },
      "message": "Merge \"Fix boot classes init when compiling app image\""
    },
    {
      "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": "e128af51eb0d1a882b9bc37cd213639d0c3a63e7",
      "tree": "cce9394c1892680e9d731df24475fca35decaf59",
      "parents": [
        "dfcf10b92330164f8af6c82c8232e85cfff1ae3c",
        "8f7c41044bdb7a36913444a3437bf2b946f7efe9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 30 18:18:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 18:18:06 2017 +0000"
      },
      "message": "Merge \"ARM: ART Vectorizer (64-bit vectors).\""
    },
    {
      "commit": "dd3240ce699129007935ba0bae4872e28652b90c",
      "tree": "305d061a33740ce48c7f027b474641017e1bab86",
      "parents": [
        "89ae0f42e38a2f985ac404830f2a05fecf9547e2",
        "8098da9cf3e3f7875546c2cd953f2337587b39db"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jun 30 15:50:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 15:50:59 2017 +0000"
      },
      "message": "Merge \"MIPS32: MoveLocation refactoring\""
    },
    {
      "commit": "2a3471fc83383bfe3e060799482e372420ba6150",
      "tree": "7b7764521a0b67392e023f1efacc0dbae64fe675",
      "parents": [
        "89ae0f42e38a2f985ac404830f2a05fecf9547e2"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Mon May 08 18:36:40 2017 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri Jun 30 16:32:54 2017 +0100"
      },
      "message": "Disambiguate memory accesses in instruction scheduling\n\nBased on aliasing information from heap location collector,\ninstruction scheduling can further eliminate side-effect\ndependencies between memory accesses to different locations,\nand perform better scheduling on memory loads and stores.\n\nPerformance improvements of this CL, measured on Cortex-A53:\n| benchmarks     | ARM64 backend | ARM backend |\n|----------------+---------------|-------------|\n| algorithm      |         0.1 % |       0.1 % |\n| benchmarksgame |         0.5 % |       1.3 % |\n| caffeinemark   |         0.0 % |       0.0 % |\n| math           |         5.1 % |       5.0 % |\n| stanford       |         1.1 % |       0.6 % |\n| testsimd       |         0.4 % |       0.1 % |\n\nCompilation time impact is negligible, because this\nheap location load store analysis is only performed\non loop basic blocks that get instruction scheduled.\n\nTest: m test-art-host\nTest: m test-art-target\nTest: 706-checker-scheduler\n\nChange-Id: I43d7003c09bfab9d3a1814715df666aea9a7360b\n"
    },
    {
      "commit": "89ae0f42e38a2f985ac404830f2a05fecf9547e2",
      "tree": "94f9768d4639fcda93a46c27637154259c810ea0",
      "parents": [
        "aed3dbf9601bc1bb91142dce10a89cf5ea6a93d3",
        "cf96bedc850e99f7dfeb4fc134603701c146f738"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 12:28:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 12:28:37 2017 +0000"
      },
      "message": "Merge \"Fix unintended change in JIT inlining heuristics.\""
    },
    {
      "commit": "aed3dbf9601bc1bb91142dce10a89cf5ea6a93d3",
      "tree": "03742367b4f8f6a1b6eb44effae478c6d16a6e50",
      "parents": [
        "6cb5ae065a54f08f0c8d09b41c2697b097094ce9",
        "016c0f165dc6872d22c12c239d19b094983519f1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 11:44:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 11:44:18 2017 +0000"
      },
      "message": "Merge \"Improve array index analysis in LSA.\""
    },
    {
      "commit": "8f7c41044bdb7a36913444a3437bf2b946f7efe9",
      "tree": "cdfcc8dae149617f6270198e15101b329f821ebd",
      "parents": [
        "a4811cd3496eb28295fe61057844c53793f3023e"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Jun 21 11:21:37 2017 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 30 11:52:24 2017 +0100"
      },
      "message": "ARM: ART Vectorizer (64-bit vectors).\n\nBasic vectorization support with 64-bit vector length on ARM 32-bit\nplatforms (128-bit vectors require massive changes in register\nallocator).\n\nTest: test-art-target, test-art-host\n\nChange-Id: I1d740146c3f00170fc033ae5fd69d59321ddcbf4\n"
    },
    {
      "commit": "cf96bedc850e99f7dfeb4fc134603701c146f738",
      "tree": "9cb3decf0dca2a07e49ad9bb270a3c0f30030706",
      "parents": [
        "740c3008171fe69432db8bfe4b9c837ac24b85c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 10:26:24 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 10:26:24 2017 +0100"
      },
      "message": "Fix unintended change in JIT inlining heuristics.\n\nHappened after: https://android-review.googlesource.com/#/c/426519/\nSeen on go/lem\n\nTest: test.py\nChange-Id: I6907e4259b98e0b9db0c624fd0bee6adc00fc7ee\n"
    },
    {
      "commit": "740c3008171fe69432db8bfe4b9c837ac24b85c0",
      "tree": "ead2d10a4c0478e2e08d30a9e7de7f8f5fbb4a27",
      "parents": [
        "4aa0cf8d72386bc2bc42f437919a66ec392eca21",
        "757b26c2442ae792039bc50153bef91145f3c7b4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 09:12:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 09:12:51 2017 +0000"
      },
      "message": "Merge \"Add CHECKs to help diagnose a crash seen internally.\""
    },
    {
      "commit": "4aa0cf8d72386bc2bc42f437919a66ec392eca21",
      "tree": "8032373cf5073225b8d6082d98760a3a4c3f4e09",
      "parents": [
        "5f17267621174ac22ab53f02b3a5e1ee54308775",
        "c9c310487b8730fce5edfa72e79c4188629898a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 30 09:11:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 09:11:55 2017 +0000"
      },
      "message": "Merge \"Turn a few DCHECK into CHECKs.\""
    },
    {
      "commit": "99f753b277068213f43f72bc4e0ce3229bccb554",
      "tree": "224d3afa4edebcf91640b2d9e9a2a05aaac12cf5",
      "parents": [
        "163c540b4682210a2ae4c1e64f7290d348b8068c",
        "37dc4df47fec811ea52f7180880961565f013434"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 29 20:21:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 29 20:21:03 2017 +0000"
      },
      "message": "Merge \"Improved subscript and data dependence analysis.\""
    },
    {
      "commit": "37dc4df47fec811ea52f7180880961565f013434",
      "tree": "eac308a6c7ef8b7d53f64889ff0a93740a2dc62a",
      "parents": [
        "76754cc816af46b41a8d1f419a38334b5db59b6e"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 28 14:08:00 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jun 29 11:20:56 2017 -0700"
      },
      "message": "Improved subscript and data dependence analysis.\n\nRationale:\nWe missed vectorizing a simple stencil operation\ndue to inaccurate unit stride analysis and failure\nto detect single runtime data dependence test.\n\nTest: test-art-host, test-art-target\nChange-Id: I07ba03455bfb1c0aff371c1244a1328f885d0916\n"
    },
    {
      "commit": "757b26c2442ae792039bc50153bef91145f3c7b4",
      "tree": "4d8798405364a51bb7dd6f2c365bfdffca26f791",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 16:11:41 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 16:13:06 2017 +0100"
      },
      "message": "Add CHECKs to help diagnose a crash seen internally.\n\nbug: 62855731\nTest: test.py\nChange-Id: I7904257174ce11a138ca769172dbc2e33e10ef76\n"
    },
    {
      "commit": "c9c310487b8730fce5edfa72e79c4188629898a3",
      "tree": "e9e72b0296b557722979b51bf9d98054c4fb1971",
      "parents": [
        "853cc56ae6a79fa9540bb49c5c95d1568d47656d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 14:04:16 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 15:04:21 2017 +0100"
      },
      "message": "Turn a few DCHECK into CHECKs.\n\nTo help diagnose b/63070152.\n\nbug: 63070152\nTest: test.py\nChange-Id: I1ac1cf9bfe1bc15ecfa94b5b8537cd3afda6fd14\n"
    },
    {
      "commit": "853cc56ae6a79fa9540bb49c5c95d1568d47656d",
      "tree": "f29668e3020b90817693dda257a1fc82e4878e1d",
      "parents": [
        "bbf6f808af14caff86395064b9ec192eacbddd5b",
        "57c47043f3ee4233f31bad921ea91a5c411f1dad"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 29 12:36:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 29 12:36:18 2017 +0000"
      },
      "message": "Merge \"Code cleanup around compiler options and JIT.\""
    },
    {
      "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": "76754cc816af46b41a8d1f419a38334b5db59b6e",
      "tree": "9a04d4a9811c5f196b29c144875a57818e8815d9",
      "parents": [
        "3dc94c4763ecab28c0053d5d07e332c61a3f781b",
        "f57c1ae3682f95e6d7ce08ae4c241d04b09de658"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 28 22:33:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 28 22:33:32 2017 +0000"
      },
      "message": "Merge \"Prevent loop optimization in debuggable mode.\""
    },
    {
      "commit": "f57c1ae3682f95e6d7ce08ae4c241d04b09de658",
      "tree": "bf12e0e19626c28edd933fb31c5652e7f974bf1d",
      "parents": [
        "0ca1ae25d33dc8b92d9eecd585657f74cbb313e9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 28 17:40:18 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 28 21:10:13 2017 +0100"
      },
      "message": "Prevent loop optimization in debuggable mode.\n\nbug: 33775412\nTest: no scanner crash (torn on whether I should spend some time working on a smali test)\n\nChange-Id: I8b94725ce57171b592bede4bf55cd0a9626a8a10\n"
    },
    {
      "commit": "a6d098c3f4da902d6607972fcadaf57760d76d63",
      "tree": "3d0a0590183765deacb3ed812b4f4fe5b3e78cf1",
      "parents": [
        "0ca1ae25d33dc8b92d9eecd585657f74cbb313e9",
        "14a68b4aa9620e4fd58907255b049fb5c18bd1ec"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 28 16:02:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 28 16:02:59 2017 +0000"
      },
      "message": "Merge \"Unrolling and dynamic loop peeling framework in vectorizer.\""
    },
    {
      "commit": "8098da9cf3e3f7875546c2cd953f2337587b39db",
      "tree": "8f0b2d69f83a1de7a0bb80ce1c3f1412c429615d",
      "parents": [
        "ebd4def76f4e60e442edb8d48f43a931bc3c773e"
      ],
      "author": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Wed Jun 28 12:07:50 2017 +0200"
      },
      "committer": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Wed Jun 28 17:42:17 2017 +0200"
      },
      "message": "MIPS32: MoveLocation refactoring\n\nMove32 and Move64 are removed so MoveLocation now handles all cases.\nReason for this are 128-bit (SIMDStackSlot, VectorRegister) moves\nwhich will be added in follow-up patch.\n\nTest: mma test-art-host-gtest\nTest: ./testrunner.py --optimizing --target in QEMU\n\nChange-Id: I93496e74874f77337b11b2265aa4b470bc7c6ce2\n"
    },
    {
      "commit": "14a68b4aa9620e4fd58907255b049fb5c18bd1ec",
      "tree": "692319b6a9344d84a2e8916c388be954d8878c41",
      "parents": [
        "afdcd847498abc0f4e295bece443afabf8aaf868"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jun 08 14:06:58 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 27 11:29:07 2017 -0700"
      },
      "message": "Unrolling and dynamic loop peeling framework in vectorizer.\n\nRationale:\nThis CL introduces the basic framework for dynamically peeling\n(to obtain aligned access) and unrolling the vector loop (to reduce\nlooping overhead and allow more target specific optimizations\non e.g. SIMD loads and stores).\n\nNOTE:\nThe current heuristics are \"bogus\" and merely meant to exercise\nthe new framework. This CL focuses on introducing correct code for\nthe vectorizer. Heuristics and the memory computations for alignment\nare to be implemented later.\n\nTest: test-art-target, test-art-host\n\nChange-Id: I010af1475f42f92fd1daa6a967d7a85922beace8\n"
    }
  ],
  "next": "1b49910396629427d8d11aefb574817aec0231fb"
}
