)]}'
{
  "log": [
    {
      "commit": "cc55e1dcdd2ec669c635420468b3cc4c99740f0a",
      "tree": "f5a55417c00708de7924b85f5e0182ba02c37c54",
      "parents": [
        "bf3710ecec95b2716d1c706b5661192dd9ea6c66"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jul 27 15:28:07 2017 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Aug 09 10:46:35 2017 -0700"
      },
      "message": "Don\u0027t use fences to implement volatiles\n\nMixing the fence-based implementation with acquire/release instructions\non ARMv8 is not just ugly but incorrect. A volatile store; volatile\nload sequence implemented as a release store followed by ld; dmb\ndoes not prevent reordering.\n\nThis should remove the last places we were using fences to implement\nvolatiles.\n\nThe HeapReference representation is changed to be an Atomic,\nthereby avoiding many casts. We no longer inherit from ObjectReference,\nwhich was documented to be a value type. HeapReference is not, since\nit contains an atomic.\n\nDisentangle HeapReference and ObjectReference/CompressedReference\nuses sufficiently to get the code to compile again. They were\npreviously used somewhat interchangably in a few places, in spite\nof the different intended semantics (value-type vs. a concurrently-\nupdateable field). Further disentanglement might be useful.\n\nFlag a strange fence use I haven\u0027t yet understood.\n\nTest: Booted AOSP. Ran default tests. Some object code inspection.\n\nBug: 31023171\n\nTest: Built AOSP\nChange-Id: I7b3c3e624f480994541c8e3a79e585071c122a3d\n"
    },
    {
      "commit": "bf3710ecec95b2716d1c706b5661192dd9ea6c66",
      "tree": "4f0b1c2cd589eef36af2d46bd415e49e422e29c9",
      "parents": [
        "c4bfca1dd9d747032f620035bb7aa6e9bded9187",
        "c8a8a56d20f40ce9d024b5198184f7627e520aa7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 02 23:28:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 02 23:28:18 2017 +0000"
      },
      "message": "Merge \"Flush icache using rw to r transition\""
    },
    {
      "commit": "50ce4414a6154ee2d9eeaa27237d80b685e5acf1",
      "tree": "85805e0dc0f97d4fd60726151b8d197a33f0ee9b",
      "parents": [
        "42e88a0e5ffaba52fcf0888b5cab0eff3e2ec351"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Fri Jul 21 12:21:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Aug 02 13:16:39 2017 -0700"
      },
      "message": "Support clinit for app image during compilation\n\nEnabled compiler driver to start initialization process for classes with\nstatic class initializers if debuggable flag is not setted because this\nmight change the behaviour of interpreter (although invisible to user),\ne.g. the memory heap at startup will contains initialization results.\n\nUpdated two testcases to reflect the change of heap memory before\nclasses are initialized.\n\nEnabled testcase 660-clinit to test whether class initializers are\nexecuted.\n\nThis CL have to be submitted after /c/432328, /c/432154, /c/433242 and\n/c/433342 because without that four this will break the build. Besides,\nthe other four CL will be tested in this CL.\n\nTest: make test-art-host -j64\nChange-Id: Ia25b9e18bdcd0fa3619be0058d459651f3b9a492\n"
    },
    {
      "commit": "42e88a0e5ffaba52fcf0888b5cab0eff3e2ec351",
      "tree": "7f0f8d3ce411e3544f1b2e41f2459287bbbc1a38",
      "parents": [
        "d335e7b4d034bc8b69efde641779c6e1cd7bba42",
        "bf755fefbfcfbb2677a519c12efe7890f3879854"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 02 18:17:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 02 18:17:21 2017 +0000"
      },
      "message": "Merge \"Fix verifier deps determinism\""
    },
    {
      "commit": "c8a8a56d20f40ce9d024b5198184f7627e520aa7",
      "tree": "4c63469c3411617622f2b598b642400f4e8b8697",
      "parents": [
        "d335e7b4d034bc8b69efde641779c6e1cd7bba42"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Aug 02 10:40:20 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Aug 02 10:40:20 2017 -0700"
      },
      "message": "Flush icache using rw to r transition\n\nRather than using mprotects that require executable permissions, attempt\nto use just write permission toggle.\n\nBug: 62356545\nTest: make -j 40 test-art-host\nChange-Id: I262855d110e27d5de2f6df517752757cd53d09cb\n"
    },
    {
      "commit": "bf755fefbfcfbb2677a519c12efe7890f3879854",
      "tree": "b8554c85e812d38a49f93fcbc1c760c35a5cbbff",
      "parents": [
        "951853a68554d1bc5f50980194f1686cb5f41d83"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 01 13:42:56 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 02 09:35:21 2017 -0700"
      },
      "message": "Fix verifier deps determinism\n\nPreviously, the unverified_classes were not deterministic since\nthey were represented as a vector. This CL moves it to a set and adds\na regression test.\n\nBug: 63467744\nTest: test-art-host\n\nChange-Id: I891254a927228b1dc4d8e1c65d5e99ae58b854ea\n"
    },
    {
      "commit": "fc1cd86539851f287e08e95284e8864908caac20",
      "tree": "a41b0f5422452f721b6626c163f1ff5f7030a016",
      "parents": [
        "52a3c989f96984f9bc9e02620694fc44708a1df2",
        "adbb91c9c685a0a8d92c81dc5a897a520712c7dd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 01 20:20:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 01 20:20:38 2017 +0000"
      },
      "message": "Merge \"Fix recursive initialization on app image.\""
    },
    {
      "commit": "951853a68554d1bc5f50980194f1686cb5f41d83",
      "tree": "41916865521d1297161346e113a1b1c3f3d5b42a",
      "parents": [
        "be60a04b82773cd8055565b1746c21b74e0a1a85",
        "e2e403457c7999c15c1f86824175de05a09c0bc7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 01 00:57:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 01 00:57:57 2017 +0000"
      },
      "message": "Merge \"Clean up some logic skipping ValidateSuperClassDescriptors.\""
    },
    {
      "commit": "d90231a8fb0eed0724b136d75b871c7c03e3abe7",
      "tree": "788c4ccfbb0953af8b2e58a25caad160f85ef461",
      "parents": [
        "98d37952eae4175c44fc2f31e414727ae591a421",
        "bd208d8e73084b691d9cfbe870120fe53863ce07"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 01 00:09:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 01 00:09:42 2017 +0000"
      },
      "message": "Merge \"Read and write constraints for clinit\""
    },
    {
      "commit": "e2e403457c7999c15c1f86824175de05a09c0bc7",
      "tree": "57cc89c30515e6a8e13f79599ba98efaba3e125a",
      "parents": [
        "7f14c2ec37c70010d99cab6806d85018df56c555"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jul 19 10:45:18 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 31 13:17:48 2017 -0700"
      },
      "message": "Clean up some logic skipping ValidateSuperClassDescriptors.\n\nAddressed some comments in:\nhttps://android-review.googlesource.com/#/c/434206/\n\nBug: 63456114\nTest: mm test-art-host\nChange-Id: I8c0e7bda667e8b12fbf14652f65c620c7e253360\n"
    },
    {
      "commit": "06c42a571358b5e5adb69104b183af8f32f4c07d",
      "tree": "7b218fdb67fef74cdcbc2e3665757485ef89918b",
      "parents": [
        "7f14c2ec37c70010d99cab6806d85018df56c555"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 26 14:17:14 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 31 07:38:43 2017 -0700"
      },
      "message": "ART: Move openjdkjvmti to art/\n\nMove libopenjdkjvmti out of the runtime directory. Let\u0027s not\npollute the runtime library.\n\nTest: m test-art-host\nChange-Id: Idb6b9cebcd61777bd3200437a2ae584a63a4a341\n"
    },
    {
      "commit": "959f7ac9cd1956daf110cc2566b67a88e651366f",
      "tree": "7a76e4735f1705d04d8496263479cc92719bf182",
      "parents": [
        "56c7e1ea3da301eb512e334569168897229e7517",
        "3ae82531b336b195a78c864c28af1448a74af633"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Jul 30 00:44:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Jul 30 00:44:38 2017 +0000"
      },
      "message": "Merge \"Ensure thread_list_lock_ is correctly locked\""
    },
    {
      "commit": "56c7e1ea3da301eb512e334569168897229e7517",
      "tree": "b4e7a0d88e6c6b72241763db51682950c793dcb2",
      "parents": [
        "83ee165fd4fde2d7939449881159e2e4b5d3b79d",
        "b566fed9ac194014c5caed40c32730bd7c5d7242"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Jul 30 00:39:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Jul 30 00:39:30 2017 +0000"
      },
      "message": "Merge \"Enable the can_maintain_original_method_order capability\""
    },
    {
      "commit": "adbb91c9c685a0a8d92c81dc5a897a520712c7dd",
      "tree": "1ccdf5224347c7cc0e1d551e2df74128a6c0a6be",
      "parents": [
        "bd208d8e73084b691d9cfbe870120fe53863ce07"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Mon Jul 17 11:23:55 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 29 17:15:24 2017 -0700"
      },
      "message": "Fix recursive initialization on app image.\n\nAssume class B extends class A and class A\u0027s clinit tries to instantiate\nclass B as a field. In this case, class A is under initializing but\nClassLinker allows initialize B as class A is initialized. If class B is\ninitialized successfully and transaction is commited then class A abort\nthe transaction, status of class B will not be reverted.\n\nFixed by a simple approach, when compiling images, AotClassLinker does\nnot allow initialize a subclass when it\u0027s superclass is not fully\ninitialized.\n\nA testcase produce this error is added in /c/433381\n\nTest: make test-art-host -j64\n\nChange-Id: Ic6bcbf1a5162d0e6ec26979b336c0f644a1c39bc\n"
    },
    {
      "commit": "bd208d8e73084b691d9cfbe870120fe53863ce07",
      "tree": "9b2b20a1aeae2cba97a394f7b106ba31dbaf565a",
      "parents": [
        "83ee165fd4fde2d7939449881159e2e4b5d3b79d"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 12 14:53:17 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 29 17:15:24 2017 -0700"
      },
      "message": "Read and write constraints for clinit\n\nFor clinits executed during pre-compile within a transaction, they are\nconstrained to only be able to access their own static fields because\nthe results of iniitialization relying on static fields, either read or\nwrite, of other classes are runtiime determined.\n\nFurther discussion can be found at b/62887449.\n\nWhen SGET and SPUT series instructions are executed, interpreter will\ncheck whether fields are static and does the target match with the\ntransaction owner, if not, abort transaction and throw an exception.\n\nTest: make test-art-host -j64\nBug: 62887449\nChange-Id: I3e655269c8af5f0b3f2c1841fdd2602c827c2757\n"
    },
    {
      "commit": "72041a0dcb5b7c133b79a1d6783a23039f2136bd",
      "tree": "8de4326eff202726c1ab893c536190aba87334be",
      "parents": [
        "9ce960ab2b4c789ad364ad96ec5c660c60e4f90c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 14 18:23:25 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 28 17:09:39 2017 -0700"
      },
      "message": "Use class unloading in dex2oat for verify and extract\n\nUnload the main classloader in between each dex file compilation to\nreduce RAM. This frees the whole java heap and associated linear\nallocs. This is only used for quickening since filters that do\ncompilation may require loaded classes in the compiler and oat\nwriter.\n\nThis reduces dex2oat peak PSS for compiling a large app from 196MB\nto 135MB.\n\nOnly works for verify and extract since the current approach is\nincompatible with oat writer patching. b/63911263\n\nAdded a verification override that reads the compiled class status\nto avoid ever verifying classes that were quickened (since this\nis not supported and causes failures).\n\nThere is still some duplicated verification for some class with\nsuperclasses in other dex files.\n\nSupport for quicken will be added in a follow up CL.\n\nBug: 63467744\nTest: test-art-host\nTest: test/testrunner/testrunner.py --interpreter --host -j40\nChange-Id: Id0e4f84eb5db91d6143f752b498f4832a5b25b6e\n"
    },
    {
      "commit": "b566fed9ac194014c5caed40c32730bd7c5d7242",
      "tree": "10f47c63ebc4591cce1d52bc93ce71e0313bd1e9",
      "parents": [
        "9ce960ab2b4c789ad364ad96ec5c660c60e4f90c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 28 15:17:00 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 28 15:54:01 2017 -0700"
      },
      "message": "Enable the can_maintain_original_method_order capability\n\nSince dex files have a well defined order for methods (alphabetically)\nand we fill up the internal art methods_ array in the same order as\nthey appear in the dex file this capability is trivially implemented.\n\nTest: ./test.py --host -j50\nBug: 62821960\nChange-Id: If11c8e49988c896ac6c94dd17a1fcf043367860f\n"
    },
    {
      "commit": "3ae82531b336b195a78c864c28af1448a74af633",
      "tree": "5af4b05eee6c950e4166efa58c80633accb9febd",
      "parents": [
        "47d49b842a87823df6ffda30bb21bd6d8e4d8641"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 26 13:59:07 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 28 15:26:25 2017 -0700"
      },
      "message": "Ensure thread_list_lock_ is correctly locked\n\nWe were incorrectly disallowing the thread_list_lock_ on the\nInstrumentThreadStack function and not holding it for long enough in\nsome other situations. This meant we could have hit issues where\nthreads die in unexpected situations.\n\nTest: ./art/test.py --host -j50\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost\nBug: 34414073\nBug: 62821960\nChange-Id: I91f5daa59cca4aaf3a73e860f68bb01c9ec0a47f\n"
    },
    {
      "commit": "2e53f8f69f8c4175085e337445ec42aa045a2f7f",
      "tree": "b6e4bfb0281138a3afd88c271f59ccef139d95bb",
      "parents": [
        "60c29e42c2336cc6ef4f9acf157c211c7df83747",
        "47d49b842a87823df6ffda30bb21bd6d8e4d8641"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 27 23:27:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 27 23:27:32 2017 +0000"
      },
      "message": "Merge changes Iba7e9207,I11a4d3cb,I5a6746d3\n\n* changes:\n  Tests for JVMTI can_access_local_variables functions\n  JVMTI set \u0026 get local variables\n  JVMTI GetLocalVariableTable function support\n"
    },
    {
      "commit": "f6fe3cb9224f9e87974806ff03fc43f9e1f736cb",
      "tree": "a23cff8f1581f828fe405c7d2cdd01c15cdfb643",
      "parents": [
        "67abbca7cf23ef8b5c0aded0cd0a20765ff47cf2",
        "370f57eba74549e1fc484c83684ceb2285bc717f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 27 18:02:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 27 18:02:40 2017 +0000"
      },
      "message": "Merge \"Fix FastNative/CriticalNative annotation lookup.\""
    },
    {
      "commit": "67abbca7cf23ef8b5c0aded0cd0a20765ff47cf2",
      "tree": "14eda472e47c476cc94f04283bc9eb7dba31c1c7",
      "parents": [
        "078a27af849f55fc903da8f291315504618f2207",
        "b45528c1f1b83ca8c970f439b54fbfcfda6908ea"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 27 17:02:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 27 17:02:31 2017 +0000"
      },
      "message": "Merge \"ART: Refactor retrieval of types through ArtMethod.\""
    },
    {
      "commit": "078a27af849f55fc903da8f291315504618f2207",
      "tree": "239d30d658907ee40c121b0e06018ef8b71e23e5",
      "parents": [
        "83e9e0efb03e2cb924b6544ca51626ff09d834d3",
        "605fe24d07062a038c8332a4d98f47052e9cee6a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 27 16:53:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 27 16:53:50 2017 +0000"
      },
      "message": "Merge changes If53d3ee3,I7cc0eea1\n\n* changes:\n  Implemented Nested Transaction\n  Add strict flag in transaction\n"
    },
    {
      "commit": "370f57eba74549e1fc484c83684ceb2285bc717f",
      "tree": "843e9f085ecaf51be1ef25a30381789c60765468",
      "parents": [
        "2c2e13ec24bff70db6e49270b9d4d787add9925e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 16:36:59 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 17:25:10 2017 +0100"
      },
      "message": "Fix FastNative/CriticalNative annotation lookup.\n\nAvoid calling ClassLinker::LookupResolvedType() with\na DexCache/ClassLoader mismatch.\n\nTest: ANDROID_COMPILE_WITH_JACK\u003dfalse testrunner.py --host -t 004-JniTest\nBug: 63089991\nChange-Id: I323ece317274d1523586779a37d01c50b787ace4\n"
    },
    {
      "commit": "ae616fa0e828cd6cbbae53edf3cf14338ad49dd9",
      "tree": "eb6effbc6bf015c98425f6cf5d99149339b40e8f",
      "parents": [
        "54c1afa173509608085ab63931b82f72ae4b52e1",
        "5d15e6cacd82a3983295e6c3fc03626006baaf70"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 27 15:48:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 27 15:48:11 2017 +0000"
      },
      "message": "Merge \"ART: Move openjdkjvm to art/\""
    },
    {
      "commit": "b45528c1f1b83ca8c970f439b54fbfcfda6908ea",
      "tree": "e8f493a7b21064d353d112ea1378d7819db385aa",
      "parents": [
        "2c2e13ec24bff70db6e49270b9d4d787add9925e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 14:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 15:30:47 2017 +0100"
      },
      "message": "ART: Refactor retrieval of types through ArtMethod.\n\nSplit Get*() functions that take a \"bool resolve\"\nargument into Lookup*() and Resolve*() functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I0b7eaa1fadc2ffa8c0168203790467f91a126963\n"
    },
    {
      "commit": "c16268f1e7103ed1599c048d27ca80a554dcac5a",
      "tree": "6a88e6e4f2a073a5b1a8ba0dfebfddab0acefff0",
      "parents": [
        "73264cc19172cd1a6d28e03d370e9d8634ac9f46"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Jul 27 10:03:32 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Jul 27 14:50:46 2017 +0200"
      },
      "message": "Fix ClassLinker::SetEntryPointsToInterpreter() for native methods\n\nWhen ClassLinker tries to set the entrypoint for a native method,\nOatFile::OatMethod::GetQuickCode() returns nullptr on MIPS. This is\ndone because art_quick_generic_jni_trampoline is treated as OatMethod\nand it is trying to get its size by loading word from address just\nprior start of the entrypoint (if size is 0, nullptr is returned\nand there is a padding nop instruction which is encoded as 0).\n\nWith this, SetEntryPointFromQuickCompiledCode() will be called\ndirectly, not through OatFile::OatMethod::LinkMethod().\n\nThis fixes two test failures on MIPS32 and MIPS64:\n* 945-obsolete-native\n* runtime_callbacks_test\n\nNote: All tests are executed in QEMU (MIPS64R6 and MIPS32R6) and on\n      ci20 board (MIPS32R2).\n\nTest: mma test-art-target-gtest\nTest: ./testrunner.py --target --optimizing\n\nChange-Id: I936d301be2b4abaa2fede721e6d05fa14310d01d\n"
    },
    {
      "commit": "bebd7bd02a073056851cc1b0942c53ce0d2ee206",
      "tree": "c2af3c94c89a2dcee1dd742d9f8806af8025df06",
      "parents": [
        "ce68cc6023ef929578bcff250dff150edd0ca5e9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 25 14:05:52 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 26 17:10:00 2017 -0700"
      },
      "message": "JVMTI set \u0026 get local variables\n\nBasic implementation of the JVMTI can_access_local_variables\ncapability. This implements the functions and behaviors required for\nthis capability.\n\nCurrently enabling this capability immediately forces all threads to\nuse the interpreter exclusively. This behavior should be removed\neventually.\n\nTests follow in next CL.\n\nTest: ./test.py --host -j50\nBug: 34414073\nBug: 36892980\nChange-Id: I11a4d3cb2b945955cca270efdee2fbfd2601e0ba\n"
    },
    {
      "commit": "c932707bbddfe5d8c08253f5528678cd878775c6",
      "tree": "866f8c9b02a1972a0070fd85b6d996b2dc9b3cf1",
      "parents": [
        "62a96c99846b74eb64a28cfa05730191710e6974",
        "7d0f81c51518d7f7756ccc49ff4b5d6a829eef8e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 26 23:51:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 26 23:51:27 2017 +0000"
      },
      "message": "Merge \"ART: Add more logging to ClassLoaderContext mismatches\""
    },
    {
      "commit": "605fe24d07062a038c8332a4d98f47052e9cee6a",
      "tree": "9c6b132e5ec615d3f0f3aa4ab6f24486fb31d2bb",
      "parents": [
        "5a906fcc111ffc07d9fd1e7265e8b4a89609f00e"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 15:57:21 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 16:26:23 2017 -0700"
      },
      "message": "Implemented Nested Transaction\n\nTransaction can be created recursively and every transaction knows which\nclass it is created for.\n\nThe goal of implementing nested transaction is to let every class\ninitialization (especially execution of class initializer) associates\nwith one transaction which provides the ability to track whether field\naccesses are valid. To achieve this goal, we implemented a subclass for\nClassLinker called AotClassLinker, which will be instantiated instead of\nClassLinker under AOT compiler.\n\nAll invocations of InitializeClass happens at AOT compiler will be\nwrapped with creating and destorying transactions.\n\nTransactions will be paused when rollbacking, otherwise the memory will\nnot be rollbacked properly.\n\nThe use the transaction is changed and all usage are updated,\ncorresponding with native tests mentioning transaction, including\ntransaction_test and unstarted_runtime_test.\n\nThe validation rules will be implemented and explained in another CL.\n\nTest: make test-art-host -j64\n\nChange-Id: If53d3ee3231c337a9ea917f5b885c173917765de\n"
    },
    {
      "commit": "95caa2bea47b7ab6f0e72472b96304bbbbf41bd0",
      "tree": "790d4f5dd9273a7312d4a4551b993c156b808227",
      "parents": [
        "055761a47c4c0f591faaf44279e8d6a412c4f513",
        "71da4878f2e3f0dc8b7c3a31b4f57172fde5f378"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 26 22:58:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 26 22:58:28 2017 +0000"
      },
      "message": "Merge \"ART: Move simulator to art/\""
    },
    {
      "commit": "5a906fcc111ffc07d9fd1e7265e8b4a89609f00e",
      "tree": "2bc863d6a51f5e67562653686b138ae1d3757caf",
      "parents": [
        "055761a47c4c0f591faaf44279e8d6a412c4f513"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 15:01:16 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 15:05:24 2017 -0700"
      },
      "message": "Add strict flag in transaction\n\nAdd a flag named strict_ indicating whether we are compiling app images,\nwhich need more strict constraints to control \u003cclinit\u003es\u0027 behavours.\n\nWhen the transaction is marked as strict mode, behaviour changes\nincluding nested transactions, field access validation, memory\nconsumption limit and time out for \u003cclinit\u003e at compile time.\n\nTest: make test-art-host -j64\n\nChange-Id: I7cc0eea161803ad0d7763725d4deaeee21858054\n"
    },
    {
      "commit": "5d15e6cacd82a3983295e6c3fc03626006baaf70",
      "tree": "55070efc62a05017a279214533fc04635aebc90d",
      "parents": [
        "92b601462ffced04bd66e6ce47097664c746a34c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 26 12:57:41 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 26 12:57:41 2017 -0700"
      },
      "message": "ART: Move openjdkjvm to art/\n\nMove libopenjdkjvm out of the runtime directory. Let\u0027s not\npollute the runtime library.\n\nTest: m test-art-host\nChange-Id: I3864c97c749fd791ab1b43173c2580872cf0d57d\n"
    },
    {
      "commit": "92b601462ffced04bd66e6ce47097664c746a34c",
      "tree": "2efd0171a03018f3a899dd2e0410deb2031513d2",
      "parents": [
        "b22ae40038aeeebb16936fbf62b48f080d6e7ef4",
        "7dface369d0e4d270366cd38195159a44612033a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 26 18:28:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 26 18:28:29 2017 +0000"
      },
      "message": "Merge \"ART: Disable CHA for AoT\""
    },
    {
      "commit": "71da4878f2e3f0dc8b7c3a31b4f57172fde5f378",
      "tree": "ae560b5e56ce09cfaaf1f3c04e96366f193c4180",
      "parents": [
        "b22ae40038aeeebb16936fbf62b48f080d6e7ef4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 26 10:02:07 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 26 11:23:03 2017 -0700"
      },
      "message": "ART: Move simulator to art/\n\nMove the simulator library out of the runtime directory. Let\u0027s not\npollute the runtime library.\n\nTest: m\nChange-Id: I351a0061ae628c3af0462b72d4de727db296ec23\n"
    },
    {
      "commit": "ce68cc6023ef929578bcff250dff150edd0ca5e9",
      "tree": "cc07a3cc87c37d56b4b9d1ce9d5653220886bfd3",
      "parents": [
        "aed968d130d62d23cfe7f6051ca72c6a84fe1510"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 26 10:30:38 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 26 10:47:21 2017 -0700"
      },
      "message": "JVMTI GetLocalVariableTable function support\n\nAdds support for the JVMTI GetLocalVariableTable function. Also\nenables the can_access_local_variables capability. Other functions\nbehind this capability will be added in next CL.\n\nTests follow in later CL.\n\nTest: ./test.py --host -j50\nBug: 34414073\nBug: 36892980\nChange-Id: I5a6746d3ae58f1c2b3c79c578f2622ead71d8990\n"
    },
    {
      "commit": "b22ae40038aeeebb16936fbf62b48f080d6e7ef4",
      "tree": "cef0433bc2a897ed8afccc8d763922505543c1db",
      "parents": [
        "2c2e13ec24bff70db6e49270b9d4d787add9925e",
        "1a509c8effc938ba3da0f90ad83abb124b296386"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 26 16:18:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 26 16:18:11 2017 +0000"
      },
      "message": "Merge \"Be prepared to handle empty class loader contexts\""
    },
    {
      "commit": "7dface369d0e4d270366cd38195159a44612033a",
      "tree": "8dd6a47668aa2d40803d2dab780ccc789170dc2b",
      "parents": [
        "741eb89efc34ab5d1686e94f1ccd8eeef41c5063"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 21:32:59 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 21:32:59 2017 -0700"
      },
      "message": "ART: Disable CHA for AoT\n\nApp images and boot image CHA do not interact well. If boot image\nmethods have been marked single-implementation, but lose that\nstatus when compiling an app image, that information is not\nretained, and after loading the image at runtime, the state will\nbe inconsistent. As a workaround, disable CHA during AoT.\n\nModify expectations of run-test 616-cha.\n\nBug: 34193647\nTest: m test-art-host\nChange-Id: I53eacd97c66645c20318c71568fffb1219b0dc61\n"
    },
    {
      "commit": "7d0f81c51518d7f7756ccc49ff4b5d6a829eef8e",
      "tree": "84b2f12e03a64a29ef47f273ad49b4fb024bec70",
      "parents": [
        "741eb89efc34ab5d1686e94f1ccd8eeef41c5063"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 18:25:41 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 19:50:30 2017 -0700"
      },
      "message": "ART: Add more logging to ClassLoaderContext mismatches\n\nTo aid in debugging, add the original specifications to the warning.\n\nBug: 63977059\nTest: m test-art-host\nChange-Id: Icbf7da9cbce1641b99d8572e09d74141c71e9fe9\n"
    },
    {
      "commit": "be7af227c41c524fd38fc695c78f575d14db0e91",
      "tree": "aa9864ad8ead6f057a9f714c8b14541cfbb0fc91",
      "parents": [
        "c1ac9ee48ddf483ec770b424d63de4982262ea33"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 09:57:28 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 11:16:05 2017 -0700"
      },
      "message": "ART: Move app image verification to its own method\n\nMove the app image verification to its own method to allow easier\nextension without bloating app image loading code. Refactor the\nvisitors into local scope.\n\nBug: 34193647\nTest: m test-art-host\nChange-Id: Id1f471a5020f4f70017eaac4ac20e4c40607e349\n"
    },
    {
      "commit": "c1ac9ee48ddf483ec770b424d63de4982262ea33",
      "tree": "f0fe2958793a2eccef85c40ac94d056b046ca7de",
      "parents": [
        "aed968d130d62d23cfe7f6051ca72c6a84fe1510"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 22:35:49 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 25 11:15:09 2017 -0700"
      },
      "message": "ART: Move CHA to ClassLinker\n\nMove the ClassHierarchyAnalysis singleton to ClassLinker. Hierarchy\nanalysis is a link-time effort and belongs to class-loading instead\nof the global Runtime object.\n\nAlso clean up to use a unique_ptr, and add null checks to allow\nbypassing the analysis.\n\nBug: 34193647\nTest: m test-art-host\nChange-Id: I14ef536e37eb19c0dede372ffd68a826c482cf71\n"
    },
    {
      "commit": "302f69cf7172d057c3ad9a8d4125a38e9dab8a71",
      "tree": "2924be212a990cd972d27bd352a248234e9b2a34",
      "parents": [
        "86d1db15332571f21bd588efed0de3384269a1c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 25 15:27:15 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 25 15:51:45 2017 +0100"
      },
      "message": "Fix race in artInvokeInterfaceTrampoline().\n\nWhen artInvokeInterfaceTrampoline() didn\u0027t get a resolved\ninterface method, it was calling FindMethodFromCode\u003c\u003e()\nwhere the interface method was resolved and then a virtual\nmethod for it was looked up. It then tried to retrieve the\ninterface method from the DexCache where it would usualy be\nfound as it was just stored there by the method resolution.\nHowever, another thread could have just evicted that entry.\n\nInstead of adding another call to LookupResolvedMethod(),\nuse the fact that artInvokeInterfaceTrampoline() already\nexplicitly inlines all the FindMethodFromCode\u003c\u003e() except\nfor the interface method resolution, so we can simply do\nthe resolution and then take the existing path for the rest\nof the work.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 30627598\nChange-Id: I62ca9c4e108ab6a3ee700b55d3b19c8f0f63f1d2\n"
    },
    {
      "commit": "ff80dfc82a3e5177d45099c090e33f1a060f9152",
      "tree": "9ee750c2766161d310a625450ada830bc91230b2",
      "parents": [
        "9710fbaea9022149887da4459b47011a803c76fb",
        "56fe32eecd4f25237e66811fd766355a07908d22"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 08:23:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 25 08:23:46 2017 +0000"
      },
      "message": "Merge \"Jit Code Cache instruction pipeline flushing\""
    },
    {
      "commit": "b5efe0f0a1d655281d87457be95803a6414607c1",
      "tree": "40faa5c4aec904fcf19fdce0b7eed26c5eff4c29",
      "parents": [
        "5864ab200f0dc39a8a25e8c6328f70832bfd1a41",
        "b4bf949bc4511acc54ee9a03e61262949f9fa155"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 05:11:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 25 05:11:30 2017 +0000"
      },
      "message": "Merge \"ART: Add SpaceBitmap walk order test\""
    },
    {
      "commit": "cf79cf51feeea395a965c8dc452f86be60c00aab",
      "tree": "59cb7c7b75a8dd2dfd74cb3002601e032e008892",
      "parents": [
        "acae6dbe80d07a26a973587b6f838198e13e66c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 21 11:17:57 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 20:00:57 2017 -0700"
      },
      "message": "Remove CHA dependencies for class unloading when JIT is disabled\n\nWhen a linear alloc is unloaded, remove the corresponding CHA\ndependencies to prevent any dangling pointers to ArtMethods.\n\nBug: 63905544\nBug: 63467744\nTest: test-art-host\nChange-Id: I6f54c6e774daef1a64c6a02a17eb5f5ab98841fd\n"
    },
    {
      "commit": "b4bf949bc4511acc54ee9a03e61262949f9fa155",
      "tree": "9fe49b5e90a83c6714457a7fc629090b3cae5125",
      "parents": [
        "15a2958b488b9812a7d4d246d1653b11b63db610"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 14 17:56:57 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 19:49:41 2017 -0700"
      },
      "message": "ART: Add SpaceBitmap walk order test\n\nAdd tests that ensure Walk and VisitMarkedRange traverse\nthe heap in increasing order as specified. Refactor test\nfor code reuse.\n\nTest: m test-art-host-gtest-space_bitmap_test\nChange-Id: I5c4c13bdda3cf85a75151bafb137f2f11d299b73\n"
    },
    {
      "commit": "af89a91f05e849a06abfd50b8a2e1d2d81357abd",
      "tree": "4528c980b6aac2378d5278d375b7aa83a0371010",
      "parents": [
        "fde3c0db43556613504f203a6ed77a8e9aaa6f46",
        "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 01:16:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 25 01:16:14 2017 +0000"
      },
      "message": "Merge \"ART: Include cleanup\""
    },
    {
      "commit": "15a2958b488b9812a7d4d246d1653b11b63db610",
      "tree": "36595f16ee8f1839f3e10de7f95b6035fe492a9a",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db",
        "582d96a75c962c79a66c417ad55ed1a2a31140ad"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 00:06:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 25 00:06:08 2017 +0000"
      },
      "message": "Merge \"ART: Fix null pointer in CHA debug verification\""
    },
    {
      "commit": "1a509c8effc938ba3da0f90ad83abb124b296386",
      "tree": "39af8d4529cf30b052b9eb62c047b89191c247d3",
      "parents": [
        "41acdc1df1bceaa462d134b8ce30419d301e76d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jul 24 16:51:21 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jul 24 16:52:40 2017 -0700"
      },
      "message": "Be prepared to handle empty class loader contexts\n\nWhen executing run-tests we can hit an empty class loader contexts if the\ncompilation sources are passed with \"-cp\" and later removed from the\ncontext.\n\nBe prepared for such case and assume a PathClassLoader context.\n\nBug: 63977059\nTest: ./art/test/run-test --host --optimizing --dev\n      test-art-host\n\nChange-Id: Id0fa853b2407e358592f89766adb5dad19137289\n"
    },
    {
      "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": "582d96a75c962c79a66c417ad55ed1a2a31140ad",
      "tree": "5ae19a621fcc7aa9ae932b68c7f9df14be926976",
      "parents": [
        "2ae4bc9f5b620bc768e4ae2ecab641a06a488a70"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 13:51:47 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 13:51:47 2017 -0700"
      },
      "message": "ART: Fix null pointer in CHA debug verification\n\nFix the case that excluded_method is null in VerifyNonSingleImplementation.\nRefactor slightly to hide from the interface. Add the class chain from\nto the output.\n\nBug: 34193647\nTest: m\nChange-Id: I63a30f30805d68874c9817103a04a4dcae157fd7\n"
    },
    {
      "commit": "2ae4bc9f5b620bc768e4ae2ecab641a06a488a70",
      "tree": "071b002a76308f0a2830aa73c251970735ecb513",
      "parents": [
        "8bf4fece8a4cecc869f8684d52e91ade630f84df",
        "e4e812a917345a3cb9ac955c8a84f64dfc26b5d9"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Jul 24 19:11:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 19:11:28 2017 +0000"
      },
      "message": "Merge \"Allow DexFile#getDexOptNeeded to check case when downgrading is required\""
    },
    {
      "commit": "8bf4fece8a4cecc869f8684d52e91ade630f84df",
      "tree": "fbc018fe9522fec2d923fed4f0c909a0fd3e4d98",
      "parents": [
        "194cf5f7db9762c17a0f2c91308cb060db08f571",
        "279cfba1f6086c25d6737471bc4f66ae79f4e681"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 24 18:44:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 18:44:05 2017 +0000"
      },
      "message": "Merge \"MIPS: Follow-up to hash-based DexCache methods array\""
    },
    {
      "commit": "279cfba1f6086c25d6737471bc4f66ae79f4e681",
      "tree": "e9ee9c1fb1180c89734ad57b3ee601a5545d9c9e",
      "parents": [
        "62432ae776aa618082865b40b111dbff75aedeb6"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sat Jul 22 00:24:43 2017 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Mon Jul 24 09:43:09 2017 -0700"
      },
      "message": "MIPS: Follow-up to hash-based DexCache methods array\n\nThis is a MIPS-specific follow-up to\nhttps://android-review.googlesource.com/#/c/431679/.\n\nTest: booted MIPS32R2 in QEMU\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\n\nChange-Id: Ib16cf6613ae3b6537e7fbae1aff9a3316c9fd540\n"
    },
    {
      "commit": "df9224cefd7ef21103f5f0da46139d5afedd204e",
      "tree": "d10524bc258a050fba499e0a5790ca829e36c83b",
      "parents": [
        "d41f79bdb353beaff6021ffcf59a60518c5a4923",
        "4f342b01a9d6661261a233d2221ae4a3c4e6ac4b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 16:35:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 16:35:03 2017 +0000"
      },
      "message": "Merge \"Move logic to get profile class descriptors to profile info\""
    },
    {
      "commit": "4f342b01a9d6661261a233d2221ae4a3c4e6ac4b",
      "tree": "62d76d0784c86a48f2140c708bff0502514a2491",
      "parents": [
        "2727d7ca49eea03fc1cd4cf81447e1c2bb7027e7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 21 17:12:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 24 16:31:40 2017 +0000"
      },
      "message": "Move logic to get profile class descriptors to profile info\n\nMove and simplify logic used to get a descriptor set for app image\ncreation. Code is covered by TestLayoutAppImage in dex2oat_test.\n\nMotivation:\nIf we are class unloading in dex2oat, we won\u0027t have all the dex files\nregistered at once.\n\nBug: 63467744\nTest: test-art-host\nChange-Id: I1e3616ee0a731061c347677713dba07e603eaa08\n"
    },
    {
      "commit": "56fe32eecd4f25237e66811fd766355a07908d22",
      "tree": "7c2c75d54edf0865598c106cb013f8c3794bd767",
      "parents": [
        "84b65e977302e1cf16d188636c22c164c7793554"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 21 11:42:10 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jul 24 17:29:40 2017 +0100"
      },
      "message": "Jit Code Cache instruction pipeline flushing\n\nRestores instruction pipeline flushing on all cores following crashes\non ARMv7 with dual JIT code page mappings. We were inadvertantly\ntoggling permission on a non-executable page rather than executable.\n\nRemoves the data cache flush for roots data and replaces it with a\nsequentially consistent barrier.\n\nFix MemMap::RemapAtEnd() when all pages are given out. To meet\ninvariants checked in the destructor, the base pointer needs to be\nassigned as nullptr when this happens.\n\nBug: 63833411\nBug: 62332932\nTest: art/test.py --target\nChange-Id: I705cf5a3c80e78c4e912ea3d2c3c4aa89dee26bb\n"
    },
    {
      "commit": "d41f79bdb353beaff6021ffcf59a60518c5a4923",
      "tree": "7ac3d12b75af1e1692966b248a0964bcc091db78",
      "parents": [
        "a3aa6db876c6e588210b064e358a56ee85d70504",
        "b43b2d8b8ad78bc02924b65f5463418c7aa76881"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 24 15:58:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 15:58:27 2017 +0000"
      },
      "message": "Merge \"Throw VerifyError when trying to extend a final class.\""
    },
    {
      "commit": "a3aa6db876c6e588210b064e358a56ee85d70504",
      "tree": "1637337b2179220babdab507e12dbdaf18a2a211",
      "parents": [
        "f40efd14aa032cef948f1fdc2ceea771faf4a9df",
        "17272ab679c9b5f5dac8754ac070b78b15271c27"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 24 15:49:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 15:49:52 2017 +0000"
      },
      "message": "Merge \"ARM64: More JIT Code Cache maintenace\""
    },
    {
      "commit": "17272ab679c9b5f5dac8754ac070b78b15271c27",
      "tree": "bb7e52a01a6a28e4906c4f1238079b4478087a7e",
      "parents": [
        "84b65e977302e1cf16d188636c22c164c7793554"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 21 14:32:52 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jul 24 13:11:35 2017 +0100"
      },
      "message": "ARM64: More JIT Code Cache maintenace\n\nMove implementation closer to ARM\u0027s sample code.\n\nTest: art/test.py --target\nChange-Id: Ic205c700528f45afc281fb20e9336c9737d5f409\n"
    },
    {
      "commit": "78627e4e4df5481e41836eed2e0fd8d5aa54841d",
      "tree": "a078f294a0f80a5a227bd4ce03d566feca157d37",
      "parents": [
        "62432ae776aa618082865b40b111dbff75aedeb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Jul 23 14:46:03 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Jul 23 14:46:03 2017 -0700"
      },
      "message": "ART: Disable part of reg_type_test for CMS\n\nDisable the test for investigation. Figure out why FillHeap leaves\nenough heap space available to allocate new array classes.\n\nTest: ART_USE_READ_BARRIER\u003dfalse m test-art-host-gtest-reg_type_test\nChange-Id: I486651ae4bb2d96a7cc80583bc6557b88da3d9c1\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": "26761f758aff822b1204e05ce37687d0a1557399",
      "tree": "72bb419ea1209724c370eaa297c7ec3f77ca641c",
      "parents": [
        "64d2d3e9c7d935dfe879f68019970983fee7189d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 20 18:00:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 21 10:38:36 2017 -0700"
      },
      "message": "ART: Move FillHeap to CommonRuntimeTest\n\nRefactor common functionality. Clean up the code.\n\nTest: m test-art-host-gtest-monitor_test\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: Ia8b678ab0a84ac76ee162dbc202d3363e9e9c02f\n"
    },
    {
      "commit": "64d2d3e9c7d935dfe879f68019970983fee7189d",
      "tree": "962b71ab236eef1c54080617addc4a44e7686c25",
      "parents": [
        "2727d7ca49eea03fc1cd4cf81447e1c2bb7027e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 23:13:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 21 09:45:08 2017 -0700"
      },
      "message": "ART: Account for OOME during array merging\n\nWhen joining class types, in the case of arrays it is possible that\na join type cannot be created (e.g., there\u0027s no Java heap to actually\ncreate the class). In that case report an unresolved reference. For\nAoT this will lead to re-verification at runtime. At runtime, this\nwill most likely fail the class.\n\nHowever, have a special cutout that aborts for AoT on the host, to\nprotect determinism of preopting.\n\nThe decision for an unresolved reference type was made as we do not\nwant to propagate the underlying exception out of verification. This\nwould require significant work along all call edges, violating the\ncurrent design and invariants of the verifier.\n\nExtend reg_type_test.\n\nBug: 63822536\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: I823201e3c401b2c2a46a46fad3327a28e049c181\n"
    },
    {
      "commit": "2727d7ca49eea03fc1cd4cf81447e1c2bb7027e7",
      "tree": "570104d8a0e670fca44dfee36fde452bc3311842",
      "parents": [
        "1a83a66413df15b9d63d62b442ce3c8f7715ea35",
        "6ee332cc58d602bb7f16513795dc32568b176efa"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 21 15:38:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 21 15:38:35 2017 +0000"
      },
      "message": "Merge \"Ensure that we don\u0027t overwrite suspension target thread\""
    },
    {
      "commit": "753d613704b86d37e9e2286dde22ab3452908f66",
      "tree": "1de1336786add03acb4be78462bf5806395a7fb9",
      "parents": [
        "c73753f70ab4fc9a166637bee514b292f0fa0109"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 12:43:24 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 14:32:05 2017 +0100"
      },
      "message": "Update VMRuntime.preloadDexCaches() for hash-based arrays.\n\nDo not try to fill entries that already contain some\nresolved item to avoid unnecessary work. We do not know\nwhich of the conflicting items may be needed later.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boot.\nBug: 30627598\nBug: 63892794\nChange-Id: Ie52f4455da544c1a3d2a61660c14c13c488c3fd7\n"
    },
    {
      "commit": "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": "918dcea8eaa0af96c2e2c09f3aa940ac9e3b109d",
      "tree": "858805b6c3faa55761a34137295473c3e4ee80fe",
      "parents": [
        "79ad831d82f78494caa2f1b44ba24ad6f712565e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 21 07:58:14 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 21 07:58:14 2017 +0000"
      },
      "message": "Revert \"Avoid recording CHA class status for dex2oat\"\n\nTests fail\n\nBug: 63905544\nBug: 63467744\n\nThis reverts commit 79ad831d82f78494caa2f1b44ba24ad6f712565e.\n\nChange-Id: I14c4c4e857498c02dc5c15f4bd3248728ecf5ad5\n"
    },
    {
      "commit": "79ad831d82f78494caa2f1b44ba24ad6f712565e",
      "tree": "c01e8562ab8b73c6d91a6de7697623ae73e88799",
      "parents": [
        "5f2d800175df712f4a1a584575a5a913b8e22704"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 20 13:20:00 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 20 16:36:19 2017 -0700"
      },
      "message": "Avoid recording CHA class status for dex2oat\n\nIn case dex2oat does class unloading, the CHA dependency map may have\ndangling ArtMethod pointers.\n\nTemporary fix until CHA supports class unloading when JIT is\ndisabled.\n\nBug: 63905544\nBug: 63467744\nTest: test-art-host\n\nChange-Id: I883d46273a7a9ecad5d5708122876cc3b177ecad\n"
    },
    {
      "commit": "e1f602e58f9d2b0bc0c97e651df474c001e40dab",
      "tree": "56720f1d04e69aceb9285183bd14b7326ae37826",
      "parents": [
        "a9894d24088ed066aa534ba7c157ab2f1e11cd71",
        "5354af9d047429b989bf42a4db2f8390cc3467e8"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 20 19:07:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 19:07:46 2017 +0000"
      },
      "message": "Merge \"Refined HasAtLeast() for x86 and x86_64.\""
    },
    {
      "commit": "6ee332cc58d602bb7f16513795dc32568b176efa",
      "tree": "60bd28decf56445fff6bdf0bdff4e25b84bb7237",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 20 10:04:11 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 20 10:31:41 2017 -0700"
      },
      "message": "Ensure that we don\u0027t overwrite suspension target thread\n\nThanks to Ivan Maidanski for noticing this issue.\n\nContributed-By: Ivan Maidanski \u003ci.maidanski@samsung.com\u003e\nTest: ./test.py --host -j40\nChange-Id: I826e3770645ecaedd8a4c5e5201747010ddcf550\n"
    },
    {
      "commit": "2f1d924e9cd34d081d6c37332e4e8f0f0d191b85",
      "tree": "55aa28335f4056eb0d09871517e02682d398c93a",
      "parents": [
        "331f4c4e287791611733120c1a1c2afd55ecdd65",
        "3ecac070ad55d433bbcbe11e21f4b44ab178effe"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 17:11:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 17:11:37 2017 +0000"
      },
      "message": "Merge \"ARM64: JIT Code Cache maintenance\""
    },
    {
      "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": "3ecac070ad55d433bbcbe11e21f4b44ab178effe",
      "tree": "565803b40b7f8be3483c502e1bc6809974c4afee",
      "parents": [
        "24f4f7956edeffb1ae41809e09f14b6d5e7875c8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 15:28:44 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 20 16:22:47 2017 +0100"
      },
      "message": "ARM64: JIT Code Cache maintenance\n\nCache maintenance operations on ARM64 can cause segmentation faults if\naddresses are not backed by physical RAM. Some Linux kernel verions\nhave a bug that exposes these faults to user-land which crashes\nART. Some of the test devices used by the ART buildbots have this\nissue.\n\nThis CL explicitly faults in memory relevant addresses before\nperforming cache maintenance operations.\n\nTest: art/test.py --target --64 --r\nChange-Id: Id7390c14f75c13b3fbbbbb742afeb9ffef9a3801\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": "b43b2d8b8ad78bc02924b65f5463418c7aa76881",
      "tree": "7712cf16e48c5b300655b9759710677b40850cfe",
      "parents": [
        "d44c0d8c7f96644f8176e493de2fbde3eb198bb4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 18 17:46:38 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 10:53:01 2017 +0100"
      },
      "message": "Throw VerifyError when trying to extend a final class.\n\nComply with JLS 13.4.2. Previously we were throwing ICCE.\n\nTest: Added another test to 066-mismatched-super.\nTest: testrunner.py --host\nBug: 63754965\nChange-Id: I5ceb9c67df99c5135436f6facb387fdb8f252b81\n"
    },
    {
      "commit": "24f4f7956edeffb1ae41809e09f14b6d5e7875c8",
      "tree": "f6d3a32a33dadef02fc5e9b2b61c83399889f0e2",
      "parents": [
        "4d0371a271ff5ae9d0edb317898b2b85cd10fae5",
        "f88b5c0bdf829cba1b3d30d2e428ba165522efeb"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jul 20 03:45:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 03:45:05 2017 +0000"
      },
      "message": "Merge \"Use the rel_pc instead of computing it.\""
    },
    {
      "commit": "4d0371a271ff5ae9d0edb317898b2b85cd10fae5",
      "tree": "c44a13ae97e6511a11cffc5bb21652abbaf4acd0",
      "parents": [
        "ffb6d49090846d2e71c755f01c7ce8a15ef0a634",
        "00e475ca4dd6697d323f2c2f96d74c7ea9dff861"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 03:21:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 03:21:35 2017 +0000"
      },
      "message": "Merge \"Only update declared methods during class redefinition.\""
    },
    {
      "commit": "00e475ca4dd6697d323f2c2f96d74c7ea9dff861",
      "tree": "36fb992769d17d9a8cc2ec3246363ab4529ad484",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 19 16:36:23 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 19 17:50:20 2017 -0700"
      },
      "message": "Only update declared methods during class redefinition.\n\nWe were attempting to update the dex file indexes of copied methods\nduring class redefinition. Since these methods are not in the\nredefined (or even original, necessarily) dex file this causes CHECK\nfailures.\n\nBug: 63864937\nTest: ./test.py --host -j50\nChange-Id: Ieb3a7bde42ef9da651810094e7b8143e2dba9f61\n"
    },
    {
      "commit": "7897cecf822babe9dd1f379b73a7387c30d31db8",
      "tree": "7ed2963c4b048fe27725acd6b16f77d530b189e3",
      "parents": [
        "e8f48da635c4d07bbe431e5819da8e1fad91a8ef"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 16:28:59 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 17:30:51 2017 -0700"
      },
      "message": "ART: Refactor JIT stress mode a runtime debug flag\n\nDo not use a constexpr default compilation threshold for the JIT.\nInstead use a tri-state that distinguishes non-debug, fast-debug\nand slow-debug modes.\n\nBug: 35644369\nTest: m test-art-host\nChange-Id: I3f8d71126af6b7f6b6aaa7a59cf0a42e5ee3fe01\n"
    },
    {
      "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": "f88b5c0bdf829cba1b3d30d2e428ba165522efeb",
      "tree": "2b503d6bdd5cfc6f705c00296a5284d6dde9a22c",
      "parents": [
        "6c13ce8b4ccdb6127c4428cf8b2c8261dccced20"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 19 14:18:33 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 19 14:18:33 2017 -0700"
      },
      "message": "Use the rel_pc instead of computing it.\n\nBug: 23762183\n\nTest: Compiles.\nChange-Id: I5fe96c444bed89b4b9d3e96ffc37555678428be1\n"
    },
    {
      "commit": "e8f48da635c4d07bbe431e5819da8e1fad91a8ef",
      "tree": "144e5b35cfc54ec7b745ef71439ba505b13789f3",
      "parents": [
        "187ff4576847ab54db7e2eea6e6a55ccf7d1c40a",
        "a308a327884920cbb1e3e62964c4b5a01c29af8c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 19 21:12:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 21:12:18 2017 +0000"
      },
      "message": "Merge \"Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\""
    },
    {
      "commit": "187ff4576847ab54db7e2eea6e6a55ccf7d1c40a",
      "tree": "7fecc1f7d9c662d32233a2399516072c23ec0392",
      "parents": [
        "6c13ce8b4ccdb6127c4428cf8b2c8261dccced20",
        "1a088d440a3fac4e477a11af68adae9dcd3afd00"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 19 20:50:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 20:50:23 2017 +0000"
      },
      "message": "Merge \"Use AtomicDexRefMap for compiled classes\""
    },
    {
      "commit": "5354af9d047429b989bf42a4db2f8390cc3467e8",
      "tree": "25e0aaa3dcf4da018ad9bff7113ce6d66af6e937",
      "parents": [
        "6f7b23acfccd7ec0f13ad51747bd60c682655025"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 19 11:13:27 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 19 11:17:20 2017 -0700"
      },
      "message": "Refined HasAtLeast() for x86 and x86_64.\n\nRationale:\nThis refinement is needed once we start passing in more\narchitecture specific flags on x86_* builds. This CL\nalso makes the arm version a bit more readable.\n\nTest: instruction_set_features_test\nBug: 63585550\n\nChange-Id: Ia6fe47654141feaf1899da225abaee8a5ea8249a\n"
    },
    {
      "commit": "6c13ce8b4ccdb6127c4428cf8b2c8261dccced20",
      "tree": "8ab864e63e3c3a0a0b82bd3c67f3144bff231539",
      "parents": [
        "dcc6617d48692ba7bf19426d767e9d094050fdb4",
        "79400aa5124f89daec47d3cf7c6c38030547a770"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 19 17:24:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 17:24:23 2017 +0000"
      },
      "message": "Merge \"Whitelist user_code_suspension_lock_ for ConditionVariable wait\""
    },
    {
      "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": "dcc6617d48692ba7bf19426d767e9d094050fdb4",
      "tree": "d14aee12364040ff79acec4f92693863a47cb226",
      "parents": [
        "57fe2725629681c8a68f6ba5b58d87304ca3f0b1",
        "520dadff2190a5bcdb48838dbcccddc8fbbf0c97"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 19 16:41:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 16:41:41 2017 +0000"
      },
      "message": "Merge \"Unbreak Odroid measurements.\""
    },
    {
      "commit": "79400aa5124f89daec47d3cf7c6c38030547a770",
      "tree": "280b6f2c77ce4a76bd8f196579499064fc19d711",
      "parents": [
        "527f18fcebb8f5799bad483b8164fe35ce3688f2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 18 15:34:21 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 19 08:35:34 2017 -0700"
      },
      "message": "Whitelist user_code_suspension_lock_ for ConditionVariable wait\n\nConditionVariable::Wait checks to make sure the current lock status is\nsane. We need to whitelist the user_code_suspension_lock_ for being\nheld through the wait when it is a threads resume_cond_ since this\nlock needs to be held through the entirety of user-code suspension.\n\nWe also add a check to make sure the thread will not deadlock.\n\nBug: 63813338\nTest: stress --cpu 64 \u0026 \\\n      while ./test/run-test --host --jit 1904; do; done\n\nChange-Id: I24577b66629279106de328aad1afd191725c94fb\n"
    },
    {
      "commit": "520dadff2190a5bcdb48838dbcccddc8fbbf0c97",
      "tree": "6e4eda47f0e258bf807b5ce0a62cb063b9f0407c",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:33:11 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:34:09 2017 +0100"
      },
      "message": "Unbreak Odroid measurements.\n\nOdroid run Linux/target, which doesn\u0027t support ashmem.\n\nTest: test.py\nChange-Id: Icd92d2a87ea9987c9580037ef195f6e63641283d\n"
    },
    {
      "commit": "43ce5f82dae4dc5eebcf40e54b81ccd96eb5fba3",
      "tree": "32775c9d2c16b91a2899dab318d54d9ad6e3c5b9",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 19 10:34:27 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 19 13:26:02 2017 +0100"
      },
      "message": "Change flush order in JIT code cache\n\nFlush the data cache before flushing the instruction when dual mapped.\n\nBug: 62356545\nTest: art/test.py -j4 --jit --64 -r --verbose -t test-art-target-run-test-debug-prebuild-jit-no-relocate-ntrace-gcstress-checkjni-picimage-npictest-ndebuggable-no-jvmti-916-obsolete-jit64\nTest: Using an Android N image and testing on device from master-art\nChange-Id: Ia73da7449cc3a40be0128825233086924eca90a5\n"
    },
    {
      "commit": "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5",
      "tree": "09f04931241192a82e8a63893e9619d7195d6c8b",
      "parents": [
        "4ce0f9a270b4c5bceb805f396daafe0a68e20e39",
        "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 19 06:12:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 19 06:12:57 2017 +0000"
      },
      "message": "Merge \"art: use proper nativehelper headers\""
    },
    {
      "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": "41acdc1df1bceaa462d134b8ce30419d301e76d7",
      "tree": "4e8978a1550d57c48803ad7bbc5c5a207986d4cb",
      "parents": [
        "bacafb19fa654fb6c7ad610305bed45c2e4682e8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:45:32 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:48:36 2017 -0700"
      },
      "message": "Fix the default ownership of dex files in ClassLoaderContext\n\nBy default the context should have the ownership.\n\nTest: valgrind --leak-check\u003dfull\n../out/host/linux-x86/nativetest/art_runtime_tests/class_loader_context_test\nBug: 38138251\n\nChange-Id: I21ff048018abba61999b6025281c73fc9899cae0\n"
    },
    {
      "commit": "e4e812a917345a3cb9ac955c8a84f64dfc26b5d9",
      "tree": "bf830d83f8d7ade1d875903ed5d8529d706d3b11",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu May 25 20:09:58 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Jul 19 00:15:56 2017 +0000"
      },
      "message": "Allow DexFile#getDexOptNeeded to check case when downgrading is required\n\nThe change in the API will allow comparison of compiler filter in case when\ndowngrade is required. Previously, it used to only consider cases of compiler\nfilter upgrades.\n\nTest: make \u0026 boot\nBug: 36598475\n(cherry-picked from commit cf3d122a9234414b7cd2aab340d1450f3e9da213)\n\nChange-Id: Ice292ef4f16c373297821c40e39987f3de914c67\n"
    },
    {
      "commit": "a308a327884920cbb1e3e62964c4b5a01c29af8c",
      "tree": "4bd09065c52f18685dc9e10d9eabdcdb29a51539",
      "parents": [
        "bacafb19fa654fb6c7ad610305bed45c2e4682e8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 16:51:51 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 17:02:27 2017 -0700"
      },
      "message": "Change kMultiDexSeparator from \u0027:\u0027 to \u0027!\u0027\n\nThe \u0027:\u0027 separator is commonly used to separate class path elements. That\nmeans that we cannot easily encode multidex location in a classpath\nwithout complicating the parsing logic unnecessarily (e.g. when encoding\nclasspaths in the oat file).\n\nFor easy parsing and understanding kMultiDexSeparator and\nkClassPathSeparator should have different values. \u0027:\u0027 is a wide spread\nclasspath separator so this CL changes the value of kMultiDexSeparator to\n\u0027!\u0027 which is also commonly used to denote an object inside a given\ncontainer.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I30995c553d9131478c6c071b27327df6d2de06a7\n"
    },
    {
      "commit": "6f7b23acfccd7ec0f13ad51747bd60c682655025",
      "tree": "024c0e0021768590996bb5c19d296126ba7394be",
      "parents": [
        "527f18fcebb8f5799bad483b8164fe35ce3688f2",
        "d1dbb74e5946fe6c6098a541012932e1e9dd3115"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 18 21:39:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 21:39:38 2017 +0000"
      },
      "message": "Merge \"Separate rw from rx views of jit code cache\""
    }
  ],
  "next": "527f18fcebb8f5799bad483b8164fe35ce3688f2"
}
