)]}'
{
  "log": [
    {
      "commit": "ae49dc05afa93103f7112e0cac2028a1f196736c",
      "tree": "0fea414e172844119a48687835283d2cfe060621",
      "parents": [
        "60b407727442438ed0c3b1e4bd5f6963cf770263"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 16 11:49:57 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 16 11:49:57 2017 -0700"
      },
      "message": "Add extra dumping for native method JIT samples check\n\nTry to get more info why this happens, it shouldn\u0027t be possible based\non the code.\n\nBug: 64740365\nTest: mm\nChange-Id: Ibde14324d3570c1abef81d3db97b8421af91d40d\n"
    },
    {
      "commit": "76ccd09c3d98317dfbd179c6f5c231dcfc5d6996",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "c42fab35f18539957debb8703195eeb76c9718f7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "message": "Revert^3 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\"\n\nStill failling:\n\n+dalvikvm64 F 08-15 18:54:16 218912 218912 art_method-inl.h:395] Check failed: !GetDeclaringClass()-\u003eIsResolved() || interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit c42fab35f18539957debb8703195eeb76c9718f7.\n\nChange-Id: I91b51f8c1e7f6e0ae876b751d8e9cd3b8acb62f6\n"
    },
    {
      "commit": "c42fab35f18539957debb8703195eeb76c9718f7",
      "tree": "65bcf5256213282a315a34621b3fbc73786c1585",
      "parents": [
        "f0c66eb04db3c9fc513f50dfaad1385cf703820e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 14:11:49 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 15:18:07 2017 +0100"
      },
      "message": "Revert^2 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() to ignore unresolved proxy classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\n\nThis reverts commit 7ef52f75dd6e981e1e8c7567f593c197e8a94dcc.\n\nChange-Id: Idccdb04958a8bdb1c58b529dfb92885993ac62ea\n"
    },
    {
      "commit": "120aa286ab6adf3e76a31bc61fb4e583e5158d71",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "5bfead584f56b2a1cfb69f78c385965ec57f7e8b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 05 16:03:03 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 14 17:47:25 2017 -0700"
      },
      "message": "Store layout info in dex files\n\nStore layout info for code sections inside of the oat file. This will\nbe used to advise the kernel when dex files are loaded in\na follow up CL.\n\nAdded unit test in dex2oat_test.\n\nBug: 63178181\nTest: test-art-host\n\n(cherry-picked from commit 75c5ed6e75f70002db5fa7c609137c04dd2bdf40)\n\nChange-Id: I4777506886bde42ff0affdac412a8395e8013a40\n"
    },
    {
      "commit": "6b1382dcb24a44e552daaa8dca82eb63d8bf6b11",
      "tree": "bf8ec701ee2d1455f9d87e53241a55b46d1d07c5",
      "parents": [
        "a5d5fa3955ce7fefb11e12753367e0382d6765d5",
        "7ef52f75dd6e981e1e8c7567f593c197e8a94dcc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 14 18:52:52 2017 +0000"
      },
      "message": "Merge \"Revert \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\""
    },
    {
      "commit": "7ef52f75dd6e981e1e8c7567f593c197e8a94dcc",
      "tree": "9685b783f628e290c6307d6ead024aac749a11ab",
      "parents": [
        "0888cf1821d6622fd623db31000be19b9365f81c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "message": "Revert \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nBroke a few tests with:\n+dalvikvm64 F 08-14 18:36:32 136697 136697 art_method-inl.h:392] Check failed: interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit 0888cf1821d6622fd623db31000be19b9365f81c.\n\nChange-Id: Idc93b6686392f9dfeca3bc11bd22104948fd9fd3\n"
    },
    {
      "commit": "85e2d5865b720c40fb143aebccadcc75564e6bc9",
      "tree": "b7355d83eca9974ed843463f3e041f31b20751b0",
      "parents": [
        "79fd1d37d6eae0837dfc7bb340dfe557186c23d4",
        "0888cf1821d6622fd623db31000be19b9365f81c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 14 17:01:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 14 17:01:20 2017 +0000"
      },
      "message": "Merge \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\""
    },
    {
      "commit": "72fe7ea30afb03307c05f473cb8e1dc1da21a4da",
      "tree": "8b30dcc34e1cdd778b3baee92234af174747afd6",
      "parents": [
        "f9fd236b047a4851f24a3829acfd7e3340676305",
        "68db2258080ff6716f21f1cf1bf994600f3e5b8e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 14 13:58:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 14 13:58:37 2017 +0000"
      },
      "message": "Merge \"Disable dex2oat test TestWatchdogTrigger with Valgrind.\""
    },
    {
      "commit": "0888cf1821d6622fd623db31000be19b9365f81c",
      "tree": "fc1e251066fa30ffd475b8a51c15f17bc976b13f",
      "parents": [
        "f9fd236b047a4851f24a3829acfd7e3340676305"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 28 12:55:17 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 14 14:06:49 2017 +0100"
      },
      "message": "ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\n\nThis immensely simplifies the interface method retrieval\nand removes one dependency on dex_cache_resolved_methods_.\nWe may later consider removing that member if we deem the\nmemory savings worth the performance impact.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nChange-Id: Id76349c69e4c4dea4e3b297bd504db8f98f1b7cc\n"
    },
    {
      "commit": "3f35d09b6d3ef4a511ee46427b6f853eed1b477a",
      "tree": "70371c683088c2075d16e9fd07240fbdaa02d8c1",
      "parents": [
        "4ec14ff3d6126750de753f7d162df408f278e825",
        "fbfc3945c1877cfb97ebd217ccceb98abc4bc441"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 14 12:14:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 14 12:14:06 2017 +0000"
      },
      "message": "Merge \"Remove ClassLinker::SetEntryPointsToCompiledCode().\""
    },
    {
      "commit": "68db2258080ff6716f21f1cf1bf994600f3e5b8e",
      "tree": "57f9d1038d6ba7e19518f4ce362642d8b53151fb",
      "parents": [
        "4ec14ff3d6126750de753f7d162df408f278e825"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 14 12:48:47 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 14 12:48:47 2017 +0100"
      },
      "message": "Disable dex2oat test TestWatchdogTrigger with Valgrind.\n\nThis test sometimes fails an assertion with Valgrind:\n\n  art/dex2oat/dex2oat_test.cc:137: Failure\n  Value of: odex_file.get() \u003d\u003d nullptr\n    Actual: false\n  Expected: true\n\nDisable it while we investigate.\n\nTest: art/test/testrunner/run_build_test_target.py -j8 art-gtest-valgrind64\nBug: 63052624\nChange-Id: I75fdbad6f78377b3f80cd2447fb20fc5792cbdcf\n"
    },
    {
      "commit": "abafaf83838301b83832c33324d683e7f77aff76",
      "tree": "0d333d21b119818d8e5254f418775fc3dfe743be",
      "parents": [
        "eac21ef2617cc02e6a093d811a926115fb69bd05",
        "28453cf27c4f6ec194203a0227fbb5302d8c93f0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 11 08:30:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 11 08:30:43 2017 +0000"
      },
      "message": "Merge \"Fix dex file reading in VdexFile::GetNextDexFileData.\""
    },
    {
      "commit": "28453cf27c4f6ec194203a0227fbb5302d8c93f0",
      "tree": "ea2cbb70a487c33df3953b610d6923d632d492fb",
      "parents": [
        "b00c8b076714b779a2d34f581e849f33f407d6d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 10 15:30:26 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 10 20:47:50 2017 +0100"
      },
      "message": "Fix dex file reading in VdexFile::GetNextDexFileData.\n\nDex files in a vdex file are always aligned.\n\nbug: 64527414\nTest: run-test --random-profile 663-odd-dex-size\nChange-Id: I1e3b36e04b35ad3128eebee86f3166788162dec5\n"
    },
    {
      "commit": "dbd05fe1a6ed2c3e23c9f6b372dd439ad59e777b",
      "tree": "81968f4f0a16cb37b57933be5cea6542795488a1",
      "parents": [
        "1d2d8b1b6b359f5f476ef78662baa4b8782be530"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Aug 10 11:41:35 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Aug 10 11:57:53 2017 +0100"
      },
      "message": "Revert recent JIT code cache changes\n\nFlakiness observed on the bots.\n\nRevert \"Jit Code Cache instruction pipeline flushing\"\nThis reverts commit 56fe32eecd4f25237e66811fd766355a07908d22.\n\nRevert \"ARM64: More JIT Code Cache maintenace\"\nThis reverts commit 17272ab679c9b5f5dac8754ac070b78b15271c27.\n\nRevert \"ARM64: JIT Code Cache maintenance\"\nThis reverts commit 3ecac070ad55d433bbcbe11e21f4b44ab178effe.\n\nRevert \"Change flush order in JIT code cache\"\nThis reverts commit 43ce5f82dae4dc5eebcf40e54b81ccd96eb5fba3.\n\nRevert \"Separate rw from rx views of jit code cache\"\nThis reverts commit d1dbb74e5946fe6c6098a541012932e1e9dd3115.\n\nTest: art/test.py --target --64\nBug: 64527643\nBug: 62356545\nChange-Id: Ifa10ac77a60ee96e8cb68881bade4d6b4f828714\n"
    },
    {
      "commit": "1d2d8b1b6b359f5f476ef78662baa4b8782be530",
      "tree": "fdf5c06b0b4e3b8eacfa063344b0c93fd320f14a",
      "parents": [
        "80dd7567f76aa4cc28a846cb8f0549b57e47fe47",
        "cecc48852f55fd374219519ba9b31cfecf7dd813"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 10 09:14:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 10 09:14:54 2017 +0000"
      },
      "message": "Merge \"Don\u0027t increment the hotness for invokes.\""
    },
    {
      "commit": "a27a718f3aa89399af353b272f76d3b4fe89ed17",
      "tree": "a2658830d5fb3862069d170d92900cc30f4479e2",
      "parents": [
        "30a5d19f983bdfcacf93a7af49017be041dc0bb1",
        "ad8ebb38059b9fe47fde8b1390113eabba2ac888"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 10 05:09:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 10 05:09:09 2017 +0000"
      },
      "message": "Merge \"Use HeapReference for SafeGetClass\""
    },
    {
      "commit": "ad8ebb38059b9fe47fde8b1390113eabba2ac888",
      "tree": "092c7500442ed32121424bfaa980b3b700d90657",
      "parents": [
        "ac50d97b1bf63ff2e0d813774f52499b2da78f6b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 20:13:18 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 20:13:38 2017 -0700"
      },
      "message": "Use HeapReference for SafeGetClass\n\nMake sure to use heap refernece here so the value read isn\u0027t bogus\nfor heap poisoning. Fixes heap poisoning tests that were broken for\nimplicit null checks.\n\nBug: 31023171\nTest: test/testrunner/testrunner.py --interpreter --optimizing -j20 --host --verbose\n\nChange-Id: Ia67cdb304be205773d781251235f8b0b4bf7c0bd\n"
    },
    {
      "commit": "2a1513bdb0a3ecac628cd5620420d66c28413f1e",
      "tree": "8ff5c6658affcaecd9e4628ed4da55d9a4c2341d",
      "parents": [
        "ac50d97b1bf63ff2e0d813774f52499b2da78f6b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 07 20:01:46 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 18:38:10 2017 -0700"
      },
      "message": "Allow non word aligned heap limit for space bitmap\n\nFor the mem map large object space, the bitmap covers the entire\nrange of memory. This is done by passing in max int as the space\ncapacity. Previously, the space bitmap heap limit was computed by\nmultiplying the number of words by the word stride. In 32 bit systems\nthis caused heap limit to be (1 \u003c\u003c 32) \u003d\u003d 0 for the mem map large\nobject space.\n\nThis CL allows storing max int as the heap limit and returning that\nfrom the function.\n\nAdded regression test to large object test.\n\nTest: verify lyft installs and launches with the profile that was causing problems\nTest: test-art-host\n\nBug: 64413646\n\n(cherry picked from commit 76bb14a18283859b3b6e44c2b71ac441d8c252cf)\n\nChange-Id: I34cabe80420e5bbb880adaea5e1737ca8efd8886\n"
    },
    {
      "commit": "ac50d97b1bf63ff2e0d813774f52499b2da78f6b",
      "tree": "d29b23b37900a7bf4184ce34ac1fd6286fb69aaa",
      "parents": [
        "3ae12d56a99fe605c6ffb8236de18677bd622567",
        "cc55e1dcdd2ec669c635420468b3cc4c99740f0a"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Aug 09 19:55:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 09 19:55:26 2017 +0000"
      },
      "message": "Merge \"Don\u0027t use fences to implement volatiles\""
    },
    {
      "commit": "9e050df94df5c6736e1e24705194f62fbc119114",
      "tree": "0fe2c2a7a9e01cba8abaf449938503e5b906ee78",
      "parents": [
        "1bd8e5a1b2055e0ff7977ba7e149534d2ee0a696"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 10:05:47 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 11:16:52 2017 -0700"
      },
      "message": "Revert \"Revert \"Support class unloading in dex2oat for quicken multidex\"\"\n\nBug: 63467744\nTest: test-art-host\n\nThis reverts commit 6921d90a241f0307ac25120f8f976744d4a57706.\n\nChange-Id: If70e31d3a15579dc75fd40bfef186e0124568c87\n"
    },
    {
      "commit": "cecc48852f55fd374219519ba9b31cfecf7dd813",
      "tree": "8230d7ebbd0ef3d75e72da0110a0e0e493dc58b3",
      "parents": [
        "b00c8b076714b779a2d34f581e849f33f407d6d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 09 19:14:01 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 09 19:14:01 2017 +0100"
      },
      "message": "Don\u0027t increment the hotness for invokes.\n\nThey don\u0027t affect performance and seem to not affect startup.\nThis will lead to less methods needing to be JITted.\n\nTest: test.py\nChange-Id: I635146021a08eabb39d2321ec430cfc8fc23e4e6\n"
    },
    {
      "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": "1bd8e5a1b2055e0ff7977ba7e149534d2ee0a696",
      "tree": "9879a33bce10f41d81a9c0879438f46206bc1cb9",
      "parents": [
        "b00c8b076714b779a2d34f581e849f33f407d6d8",
        "646d6388758db566eb1302baf274e538e5bdb8b9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 09 14:22:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 09 14:22:20 2017 +0000"
      },
      "message": "Merge \"Move deopt and jit logs from LOG(INFO) to VLOG(jit).\""
    },
    {
      "commit": "646d6388758db566eb1302baf274e538e5bdb8b9",
      "tree": "72d192b2120450589c40d1462b5ff373efd2cb69",
      "parents": [
        "18e91619f38349e29367567a70f2f974a8cdaf67"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 09 10:50:00 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 09 13:23:41 2017 +0100"
      },
      "message": "Move deopt and jit logs from LOG(INFO) to VLOG(jit).\n\nThey served their purposes. Now stop spamming logcat.\n\nTest: test.py\nChange-Id: I53c961a6ad95ea891f2f09b7e11e7535da4fdaff\n"
    },
    {
      "commit": "b00c8b076714b779a2d34f581e849f33f407d6d8",
      "tree": "9fa3ab6deb99f0bf892e987f3d1ae789f67bbd71",
      "parents": [
        "a4a1e69af66ea9620a20a955b0e89bb50da873c9",
        "6921d90a241f0307ac25120f8f976744d4a57706"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 09 12:17:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 09 12:17:02 2017 +0000"
      },
      "message": "Merge \"Revert \"Support class unloading in dex2oat for quicken multidex\"\""
    },
    {
      "commit": "6921d90a241f0307ac25120f8f976744d4a57706",
      "tree": "04365479a12f9be9bfee324395284eb28391d965",
      "parents": [
        "0b1c341d2d89a483142cd14bdeb4650ab00184f1"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Aug 09 10:12:06 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Aug 09 10:12:06 2017 +0000"
      },
      "message": "Revert \"Support class unloading in dex2oat for quicken multidex\"\n\nThis reverts commit 0b1c341d2d89a483142cd14bdeb4650ab00184f1.\n\nNew test Dex2oatDeterminism.UnloadCompile fails on bots gtest-debug-gc and friends.\n\nChange-Id: Ib101fc4390d90f88fe017d8482775d5e975f2ccb\n"
    },
    {
      "commit": "18e91619f38349e29367567a70f2f974a8cdaf67",
      "tree": "4b862a57195b67785e3cc4e5a763ccfc1ce85aa0",
      "parents": [
        "785e3555685279767f52f1280ea13ba35b112e86",
        "0b1c341d2d89a483142cd14bdeb4650ab00184f1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 08 21:44:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 08 21:44:57 2017 +0000"
      },
      "message": "Merge \"Support class unloading in dex2oat for quicken multidex\""
    },
    {
      "commit": "0b1c341d2d89a483142cd14bdeb4650ab00184f1",
      "tree": "1eb65853f4a9c53fda1a778911dd32979ef43e32",
      "parents": [
        "5129d8ede52ea31c0304ecaa8013f833310772a2"
      ],
      "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": "Tue Aug 08 12:44:39 2017 -0700"
      },
      "message": "Support class unloading in dex2oat for quicken multidex\n\nSupport class unloading for the quicken compilation filter. This will\nbe enabled in a follow up CL.\n\nAdded a test that compares with and without unloading. The way that\nit tests this is by adding an output app image. Having an app image\ndisables the unloading. This test also covers that app images don\u0027t\nchange the odex (currently).\n\nAdded a test for the assumed verified logic.\n\nBug: 63467744\nTest: test-art-host\nTest: test/testrunner/testrunner.py --interpreter --host -j40\nChange-Id: I1e8a862c6f089c06c58aa0c846797e4c24bd072c\n"
    },
    {
      "commit": "a97a14fa206bc8175d785c7fb1ee4e81ec4d100d",
      "tree": "883429553c5b68328ab40ec9049ff0cccb2ee9f0",
      "parents": [
        "24be74dbffea935fa1f07d112611fa03d4f3e6af",
        "f573972a087b798f74bf5404e271355a2805e100"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 08 18:49:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 08 18:49:59 2017 +0000"
      },
      "message": "Merge \"runtime: Make kIsDebugBuild friendly to clion\""
    },
    {
      "commit": "19ab59dae5f8521bb09f925fec784b4bc0d143cc",
      "tree": "16b60b6c43e8c3657d42d80ba881a78863bd7f6e",
      "parents": [
        "3b21019edb5586a73516833482fc203e75309dbe",
        "48b40cc97377fe67657b9936ad19395c4218b489"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 08 08:38:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 08 08:38:44 2017 +0000"
      },
      "message": "Merge \"Use the right class loader allocator in ReallocMethods.\""
    },
    {
      "commit": "f573972a087b798f74bf5404e271355a2805e100",
      "tree": "a61d3f407846937a707eac7b071a676852345f48",
      "parents": [
        "67ca49cfc31b06720bd3a1efcf2d9e03dcff779f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Aug 07 14:42:11 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Aug 07 16:20:50 2017 -0700"
      },
      "message": "runtime: Make kIsDebugBuild friendly to clion\n\nPreviously it would think\n\n   if (kIsDebugBuild)\n\nwas always dead code and give many warnings.\n\nAlso make sure that clion inspector doesn\u0027t try to be too clever\nand suggest that kIsDebugBuild is always true, which was\nequally annoying.\n\nBug: b/64455231\nChange-Id: I8db6b7cec2024f4cc7ad3353f2ee695c4fec1d8f\n"
    },
    {
      "commit": "3b21019edb5586a73516833482fc203e75309dbe",
      "tree": "fcef5458a721bad3d51d3fd1e1b614c7ec61fc81",
      "parents": [
        "a7c29837831c82e849036ea6f8018115c16dbb78",
        "0a87a653a296854c9a0abacd9bb1557ee4c4d05d"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 07 21:55:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 07 21:55:19 2017 +0000"
      },
      "message": "Merge \"Add two special runtime methods.\""
    },
    {
      "commit": "0a87a653a296854c9a0abacd9bb1557ee4c4d05d",
      "tree": "4763469d136f3879bbce93521827717dbe05bd5b",
      "parents": [
        "52a3c989f96984f9bc9e02620694fc44708a1df2"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 12 13:43:15 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 07 11:49:38 2017 -0700"
      },
      "message": "Add two special runtime methods.\n\nThis is in preparation for being able to deoptimize upon returning\nfrom a runtime method. We need to identify two special runtime methods:\nclinit and suspend-check since if deoptimization happens when returning\nfrom these two methods, we need to execute the dex instruction that\ncorresponds to the dex pc of the deoptimization point. A clinit can\nbe implicit for an invoke-static, in which case the invocation hasn\u0027t\nhappen yet so we have to execute the invoke-static in the interpreter.\nFor a suspend-check, the dex instruction for it hasn\u0027t been executed yet.\n\nTest: full run-test/gtest on both host and target.\nBug: 33616143\nChange-Id: Id1bdfcfa84a9ca27d5ee9da4b4a99467b1a4a845\n"
    },
    {
      "commit": "5129d8ede52ea31c0304ecaa8013f833310772a2",
      "tree": "04365479a12f9be9bfee324395284eb28391d965",
      "parents": [
        "5aedbcd3d0a1a60643db3e904254e0a3060599bf",
        "f26828bf1fd5381abc9d834fcbbd74f2465c59d1"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 07 17:46:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 07 17:46:55 2017 +0000"
      },
      "message": "Merge \"Add a conditional boolean to ScopedAssertNoThreadSuspension.\""
    },
    {
      "commit": "48b40cc97377fe67657b9936ad19395c4218b489",
      "tree": "6998d031e17120b8165e1f9202f433bcdda8dca1",
      "parents": [
        "c7c25d5b4cf243cbbf06f2e4302a0faa5eccb42a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 07 16:52:40 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 07 18:01:57 2017 +0100"
      },
      "message": "Use the right class loader allocator in ReallocMethods.\n\nOtherwise we would leak memory.\n\nAlso complies with the JitCodeCache assumption that ArtMethods\nare allocated with the classloader that loaded the class where\nthose ArtMethods hang.\n\nbug: 64241268\nTest: 661-classloader-allocator\nChange-Id: I9e4ddbf8f40547084a1a4983459db48f68743cc7\n"
    },
    {
      "commit": "aef17bcac0288fd43f0d6293bbfb782fc19df4bb",
      "tree": "47a77305504a89a4818358fbde9c794cb7732da3",
      "parents": [
        "d88a2b5cf4ce61bf86ce5c16d5f4d5687011dc91",
        "140c5d1de011239c53d886313d93b916e70b6687"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 05 00:48:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Aug 05 00:48:40 2017 +0000"
      },
      "message": "Merge \"Add FdFile::Compare\""
    },
    {
      "commit": "d88a2b5cf4ce61bf86ce5c16d5f4d5687011dc91",
      "tree": "d21afa1caaff08f18d55af967753cc7a912069e5",
      "parents": [
        "443dbfcf39743f4fd5f1c517a28326ceb97136af",
        "895f92218f705ff8ad9c47b8be0c093130d9fbbc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 04 23:21:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 04 23:21:45 2017 +0000"
      },
      "message": "Merge \"ART: Fix up small header includes\""
    },
    {
      "commit": "140c5d1de011239c53d886313d93b916e70b6687",
      "tree": "7459f7e100dd3ddc95bce64a7c3d0d3b869ff6d8",
      "parents": [
        "443dbfcf39743f4fd5f1c517a28326ceb97136af"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 04 14:25:22 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 04 15:23:14 2017 -0700"
      },
      "message": "Add FdFile::Compare\n\nAlso added unit test. Will be used in tests.\n\nBug: 63467744\nTest: test-art-host-gtest-fd_file_test -j40\n\nChange-Id: If5b81ecb587fbff3cce8e0acb9ba397a9bc654da\n"
    },
    {
      "commit": "47863bbf4ffe4c52bbe68076706f421b3a873814",
      "tree": "449eb9e0727ba0d617504d8721889da71799d870",
      "parents": [
        "c116154a4aae8ed1608a15ac602f8bd69d8ca0ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 04 11:30:27 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 04 12:59:50 2017 -0700"
      },
      "message": "Fix CC handling for no large object space case\n\nThere was an assumption about the existence of LOS that caused check\nfailures. Fixed this code. Also added a regression test.\n\nBug: 64393515\nBug: 63467744\n\nTest: test-art-host\n\nChange-Id: I61f344ce28de942c58358fe040825d0f47a2df70\n"
    },
    {
      "commit": "895f92218f705ff8ad9c47b8be0c093130d9fbbc",
      "tree": "de590436a5feb2db183e3f3e35e29817c5ea3fb6",
      "parents": [
        "c116154a4aae8ed1608a15ac602f8bd69d8ca0ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 05 09:53:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 04 07:31:52 2017 -0700"
      },
      "message": "ART: Fix up small header includes\n\nTest: m\nChange-Id: I6978d6eb4b95a6ee810e5a48ca6f5d6c590d4ce1\n"
    },
    {
      "commit": "293bfbdbed4bd98fe62208c98a858ccd4e1303a6",
      "tree": "e1b5f90c8fc690dcd51141fdf1da7cdd5f007ed4",
      "parents": [
        "a11100ee3ae6ef6a9000dc924e9a607a18ac1a2a",
        "1991589d4515561411156473c89d77d295183bdd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 20:57:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 03 20:57:38 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Stop using the runtime classpath in dex2oat\"\"\""
    },
    {
      "commit": "9579b53489b5fccc0f1bfae74357a7a14d4ce40d",
      "tree": "f5c7e947f3b16da15ad75e6b297bfca9a6f38a37",
      "parents": [
        "df2a410bd5095cbc4ce2d243523f2b844d0316fb",
        "8bb1786f09ebab4e0b93172b45425d5b4940cbaa"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 03 17:42:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 03 17:42:56 2017 +0000"
      },
      "message": "Merge \"Revert \"Flush icache using rw to r transition\"\""
    },
    {
      "commit": "8bb1786f09ebab4e0b93172b45425d5b4940cbaa",
      "tree": "c9a1d6e5554721cada972251768c63bd023ffca6",
      "parents": [
        "c8a8a56d20f40ce9d024b5198184f7627e520aa7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 03 17:42:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 03 17:42:37 2017 +0000"
      },
      "message": "Revert \"Flush icache using rw to r transition\"\n\nFailures on armv7 bots.\n\nBug: 62356545\n\nThis reverts commit c8a8a56d20f40ce9d024b5198184f7627e520aa7.\n\nChange-Id: I62adc6ee6536f4c567825bd92424d4b2b72ec9be\n"
    },
    {
      "commit": "1991589d4515561411156473c89d77d295183bdd",
      "tree": "82ab908d83f7ecb5d67180aeff4814d873de28e8",
      "parents": [
        "053a84b762536144d5cae309ca5abd97766b4583"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:10:36 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:10:36 2017 +0000"
      },
      "message": "Revert \"Revert \"Stop using the runtime classpath in dex2oat\"\"\n\nThis reverts commit 053a84b762536144d5cae309ca5abd97766b4583.\n\nReason for revert: Prepare the CL again to be submitted after\nhttps://chrome-internal-review.googlesource.com/c/423809 gets merged.\n\nChange-Id: I1d0e3d6bf2aa16249b2d0146acd9c81149924c00\n"
    },
    {
      "commit": "df2a410bd5095cbc4ce2d243523f2b844d0316fb",
      "tree": "6dd9fb5049bfd0e3d21fd6ab08036f0eb355a88a",
      "parents": [
        "cda934e3f8c24d76cc3b1b64e24dd9b865cb500f",
        "053a84b762536144d5cae309ca5abd97766b4583"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:09:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 03 17:09:39 2017 +0000"
      },
      "message": "Merge \"Revert \"Stop using the runtime classpath in dex2oat\"\""
    },
    {
      "commit": "053a84b762536144d5cae309ca5abd97766b4583",
      "tree": "8e09051aec03d574a7739157a6682f881b409bf8",
      "parents": [
        "84f82b9972ec29bd05b1575ae6d638255be2f285"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:08:53 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:08:53 2017 +0000"
      },
      "message": "Revert \"Stop using the runtime classpath in dex2oat\"\n\nThis reverts commit 84f82b9972ec29bd05b1575ae6d638255be2f285.\n\nReason for revert: I submitted this to ealrly. It needs to be submitted after https://android-review.googlesource.com/c/450390 gets merged\n\nChange-Id: I91e6259b61d72a48a1d18e62f53ef82f18692930\n"
    },
    {
      "commit": "cda934e3f8c24d76cc3b1b64e24dd9b865cb500f",
      "tree": "ab8b7b8539a7f3fafc56a42242bf88ac3653441a",
      "parents": [
        "9a19be9c170e094c3e5ef991d018b476008112c5",
        "84f82b9972ec29bd05b1575ae6d638255be2f285"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 17:07:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 03 17:07:13 2017 +0000"
      },
      "message": "Merge changes Iba4cb348,I51c43230,Iae90c4a1,Ica43ee8a\n\n* changes:\n  Stop using the runtime classpath in dex2oat\n  Do not pass --runtime-arg -classpath in dex2oat_test\n  Do not pass --runtime-arg -classpath to dex2oat in dex fuzz\n  Pass the class loader context to dex2oat when optimizing at runtime\n"
    },
    {
      "commit": "9a19be9c170e094c3e5ef991d018b476008112c5",
      "tree": "ae06eca8b9d612108cd1aad8004ab903f0db35ea",
      "parents": [
        "f95d95ef0bff7f19640716d5a7895f7571ef0d55",
        "afb664701734c6edbea07431382ee33f1677d42b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 03 15:11:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 03 15:11:36 2017 +0000"
      },
      "message": "Merge \"Fix verifier checks on interface methods.\""
    },
    {
      "commit": "abadf024efdc632f663d7fb503cd277b3f65fca2",
      "tree": "6bfe3372b598db23ef29da29436b3e86a75d9f78",
      "parents": [
        "19b59155991b16755c4d5c012aa222f67a2817aa"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 03 08:25:41 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 03 08:27:20 2017 +0000"
      },
      "message": "Revert \"Support clinit for app image during compilation\"\n\nBreaks on bots.\n\nThis reverts commit 50ce4414a6154ee2d9eeaa27237d80b685e5acf1.\n\nChange-Id: I39d856dc76b55788b6775ff2269eb8570742c6ff\n"
    },
    {
      "commit": "84f82b9972ec29bd05b1575ae6d638255be2f285",
      "tree": "82ab908d83f7ecb5d67180aeff4814d873de28e8",
      "parents": [
        "1ccf61377290451b4e5cfe29ece5de3c8c585e0e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 02 18:28:08 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 02 19:26:41 2017 -0700"
      },
      "message": "Stop using the runtime classpath in dex2oat\n\nUse only --class-loader-context to infer the classpath that should be used\nfor compilation.\n\nThe tests and benchmarks no longer rely on --runtime-arg --classpath being\npassed to dex2oat.\n\nBug: 36044779\nTest: m test-art-host\nChange-Id: Iba4cb3489f4a1a4a421071e1889d806d6c1d0738\n"
    },
    {
      "commit": "27e0d1f3da2e0b7046dacb40794739d739e454a3",
      "tree": "d3c69ca2917325cf20998060d0e0d5f8ab6b1b8e",
      "parents": [
        "52a3c989f96984f9bc9e02620694fc44708a1df2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 26 00:16:07 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 02 19:23:14 2017 -0700"
      },
      "message": "Pass the class loader context to dex2oat when optimizing at runtime\n\nUntil now we always passed the special shared library symbol \"\u0026\" when we\ncalled dex2oat at runtime without an explicit class path.\n\nThis CL changes that and passes the class loader context inferred from the\nruntime class loaders to dex2oat. If any of the runtime class loaders is\nnot supported we continue to pass the special library symbol.\n\nBug: 38138251\nTest: m test-art-host\nChange-Id: Ica43ee8a3f36dab2d9ed0e634a9f6341379c8e1c\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": "afb664701734c6edbea07431382ee33f1677d42b",
      "tree": "bd67954a08efb59e7bee75dfe46d1230abe4443b",
      "parents": [
        "7f14c2ec37c70010d99cab6806d85018df56c555"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 01 09:54:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 02 14:58:10 2017 -0700"
      },
      "message": "Fix verifier checks on interface methods.\n\nWe were disallowing interfaces in the IsInheritedMethod even though\nthe function can be called with them. This could cause some failing\nDCHECKS if the verifier cannot find methods in some situations.\n\nWe also fixed a small issue in the verifier where we allowed\nnon-public java.lang.Object methods to be considered valid for\ninterface dispatch.\n\nTest: ./test.py --host -j50\nTest: Compile an app with bad bytecodes (See bug)\nBug: 64158483\nBug: 64274113\nChange-Id: Ia79f25be0001efc4069a411a0b34476bd0871803\n"
    },
    {
      "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": "f26828bf1fd5381abc9d834fcbbd74f2465c59d1",
      "tree": "6ffcc4d1051609293210698d1926b2115b04407d",
      "parents": [
        "055761a47c4c0f591faaf44279e8d6a412c4f513"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jul 27 12:49:01 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jul 27 12:51:31 2017 -0700"
      },
      "message": "Add a conditional boolean to ScopedAssertNoThreadSuspension.\n\nSometimes it\u0027s convenient to assert a block of code conditionally.\n\nTest: run-test\nChange-Id: I9c33840bb8818379dcede99d7247fc85f8ec5d17\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": "fbfc3945c1877cfb97ebd217ccceb98abc4bc441",
      "tree": "19259839bdeec7d62f8cb9724ddfad493545854c",
      "parents": [
        "ae616fa0e828cd6cbbae53edf3cf14338ad49dd9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 16:51:35 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 16:56:42 2017 +0100"
      },
      "message": "Remove ClassLinker::SetEntryPointsToCompiledCode().\n\nThis function was used only for tests and it was essentially\njust calling ArtMethod::SetEntryPointFromQuickCompiledCode()\nin a very obscure way and required the memory before the\ncode pointer to contain a non-zero code size.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/445648\nthat removed a problematic use of the function, calling it\nwith a pointer to an entrypoint instead of a pointer to\ncompiled managed code, i.e. without the pre-header that\nshould contain the non-zero code size.\n\nTest: m test-art-host-gtest\nChange-Id: I483450832443ea0589eb41c74491384bcd5d6ab8\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\""
    }
  ],
  "next": "1a509c8effc938ba3da0f90ad83abb124b296386"
}
