)]}'
{
  "log": [
    {
      "commit": "28e012a4af2d710e5e5f824709ffd6432e4f549f",
      "tree": "576ebdbff9d5f9f098cd29d652215b8f67b6b042",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 07 11:22:59 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 15:27:27 2017 +0000"
      },
      "message": "Determine HLoadClass/String load kind early.\n\nThis helps save memory by avoiding the allocation of\nHEnvironment and related objects for AOT references to\nboot image strings and classes (kBootImage* load kinds)\nand also for JIT references (kJitTableAddress).\n\nCompiling aosp_taimen-userdebug boot image, the most memory\nhungry method BatteryStats.dumpLocked() needs\n  - before:\n    Used 55105384 bytes of arena memory...\n    ...\n    UseListNode    10009704\n    Environment      423248\n    EnvVRegs       20676560\n    ...\n  - after:\n    Used 50559176 bytes of arena memory...\n    ...\n    UseListNode     8568936\n    Environment      365680\n    EnvVRegs       17628704\n    ...\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 34053922\nChange-Id: I68e73a438e6ac8e8908e6fccf53bbeea8a64a077\n"
    },
    {
      "commit": "d12c3b01bab8d3190515e2ae02e8542518815245",
      "tree": "9d2e87fffe92dfec072e49cff9547bd322f68250",
      "parents": [
        "a602c56ba1a82d70eb40de35e7c716477a46ee28"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Nov 30 18:03:15 2017 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Nov 30 19:49:07 2017 +0000"
      },
      "message": "Track Proxy change in libcore\n\nTrack removal of two static methods from\njava.lang.reflect.Proxy.\n\nBug: 35910877\nTest: make test-art-host\nChange-Id: I23f069f2d4d29890cbea8b69f6a6cd1f80e826c3\n"
    },
    {
      "commit": "1fcae9f0cc4995e473c39c2e2b3afd53bc1272a0",
      "tree": "a55e0cc83b4373f4cc729be30688cdef50f335cc",
      "parents": [
        "5387bc5979c8984aabde455a80692f080d823c89"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 14:14:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 14:17:38 2017 +0000"
      },
      "message": "ART: Interfaces must declare superclass j.l.Object.\n\nTest: 166-bad-interface-super\nBug: 69442553\nChange-Id: I13b11fb4831f3a2780e6d621676c807907587346\n"
    },
    {
      "commit": "e983b1658589e2a3d12620846b7e2351af26afa6",
      "tree": "4a5abce1e079b54262248fd809f02e97d120740a",
      "parents": [
        "77526ffcc5f25ef9c4aa4e87d416c22f2586cf17",
        "b0a6aeee250945b1d156ebab94053380f2e5a3c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 10 10:02:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 10 10:02:44 2017 +0000"
      },
      "message": "Merge \"Record @{Fast,Critical}Native in method\u0027s access flags.\""
    },
    {
      "commit": "b0a6aeee250945b1d156ebab94053380f2e5a3c5",
      "tree": "7ddb52bb20997b8f1c81be3df2250949a088e697",
      "parents": [
        "0db16e00e3927445585a588499731c58c1ae1bef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 27 10:34:04 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 10 08:30:36 2017 +0000"
      },
      "message": "Record @{Fast,Critical}Native in method\u0027s access flags.\n\nRepurpose the old kAccFastNative flag (which wasn\u0027t actually\nused for some time) and define a new kAccCriticalNative flag\nto record the native method\u0027s annotation-based kind. This\navoids repeated determination of the kind from GenericJNI.\nAnd making two transitions to runnable and back (using the\nScopedObjectAccess) from GenericJniMethodEnd() for normal\nnative methods just to determine that we need to transition\nto runnable was really weird.\n\nSince the IsFastNative() function now records the presence\nof the @FastNative annotation, synchronized @FastNative\nmethod calls now avoid thread state transitions.\n\nWhen initializing the Runtime without a boot image, the\nWellKnowClasses may not yet be initialized, so relax the\nDCheckNativeAnnotation() to take that into account.\n\nAlso revert\n    https://android-review.googlesource.com/509715\nas the annotation checks are now much faster.\n\nBug: 65574695\nBug: 35644369\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I2fc5ba192b9ce710a0e9202977b4f9543e387efe\n"
    },
    {
      "commit": "2ffb703bf431d74326c88266b4ddaf225eb3c6ad",
      "tree": "0552c3c76a42b18f9e7460d501fb71a6dc2e7f33",
      "parents": [
        "c4b6f3116f15c8e4fdf2e4f604ababdee12d8923"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 13:35:21 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 15:15:52 2017 -0800"
      },
      "message": "cpplint: Cleanup errors\n\nCleanup errors from upstream cpplint in preparation\nfor moving art\u0027s cpplint fork to upstream tip-of-tree cpplint.\n\nTest: cd art \u0026\u0026 mm\nBug: 68951293\nChange-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956\n"
    },
    {
      "commit": "cefd676fb79d225fcd7e8e8c0ef141d70a2f45b8",
      "tree": "be625fa0bc1255cbea5c5066dd878fb0b2a1c454",
      "parents": [
        "dbc26ad5e8ded15688d20a39344c677077311279",
        "86083f7cd118f3d6c757191e83b4e4abaabdc5d7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 08 03:26:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 08 03:26:30 2017 +0000"
      },
      "message": "Merge \"runtime: Bitstring implementation for subtype checking (4/4).\""
    },
    {
      "commit": "86083f7cd118f3d6c757191e83b4e4abaabdc5d7",
      "tree": "8e5b81ae0d09d41bfd90284a1b6b16b2332435e5",
      "parents": [
        "495e783c9180c3fc033ce459ee0a783e633f7754"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Oct 27 10:59:04 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Nov 07 14:47:51 2017 -0800"
      },
      "message": "runtime: Bitstring implementation for subtype checking (4/4).\n\nIntegrate the previous CLs into ART Runtime. Subsequent CLs to add\noptimizing compiler support.\n\nUse spare 24-bits from \"Class#status_\" field to\nimplement faster subtype checking in the runtime. Does not incur any extra memory overhead,\nand (when in compiled code) this is always as fast or faster than the original check.\n\nThe new subtype checking is O(1) of the form:\n\n  src \u003c: target :\u003d\n    (*src).status \u003e\u003e #imm_target_mask \u003d\u003d #imm_target_shifted\n\nBased on the original prototype CL by Zhengkai Wu:\nhttps://android-review.googlesource.com/#/c/platform/art/+/440996/\n\nTest: art/test.py -b -j32 --host\nBug: 64692057\nChange-Id: Iec3c54af529055a7f6147eebe5611d9ecd46942b\n"
    },
    {
      "commit": "4098a7ad22535212c193f5c66eaf8a7387e1b7fc",
      "tree": "b6fbfef133515376185b769ea2c9625a6a637a04",
      "parents": [
        "383684585824efa60350b208b92362efab3962eb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:00:51 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:24:06 2017 +0000"
      },
      "message": "Refactor ArtField::GetType\u003c\u003e() as {Lookup,Resolve}Type().\n\nAnd add no thread suspension assertion to LookupType()\nas well as ArtMethod::LookupResolvedClassFromTypeIndex().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: If1541ccb0aafeabb6d1dd5566f10afcac98a2ef1\n"
    },
    {
      "commit": "005ac512de3d734624a5db39bb14b71763ba730d",
      "tree": "ef109d3d3ee408fa2d3759dab89f381675c8f934",
      "parents": [
        "a4d89d9bb911f7f3d0a6e4d3b45372e0aea6476d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Oct 24 15:43:43 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 02 09:00:16 2017 +0000"
      },
      "message": "ART: Add mirror classes for VarHandles\n\nAdds mirror classes for VarHandle, FieldVarHandle,\nArrayElementVarHandle, ByteArrayViewVarHandle and\nByteBufferViewVarHandle.\n\nBug: 65872996\nTest: art/test.py --host -g -j32\nChange-Id: I34e4b53c21cd969b54003dcfa3527acb963bfec7\n"
    },
    {
      "commit": "3e6c13997373efac343a65740da0c4f6e77338b9",
      "tree": "cb77105b96f532dcb07bc0db2b421f7fe785cee0",
      "parents": [
        "9041c606de11412a036bac2d2068d6f151a0fab7",
        "eb3c7644b91d985d084c564410af60583c908172"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 26 13:14:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 26 13:14:50 2017 +0000"
      },
      "message": "Merge \"ART: Remove workaround for bug 34659969.\""
    },
    {
      "commit": "eb3c7644b91d985d084c564410af60583c908172",
      "tree": "a217e5b815a0d008897218dcffe510ba11cdcce7",
      "parents": [
        "6291ac84088ba32888d6b7d714f9965eeb82d345"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 24 15:13:36 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 26 12:26:34 2017 +0100"
      },
      "message": "ART: Remove workaround for bug 34659969.\n\nThe workaround is unnecessary since\n    https://android-review.googlesource.com/423760 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 34659969\nChange-Id: I47010ea95879457fdc6af6f9809a40ed209f8e38\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "acbd98ba58faf3e7c9f2b888ee8a2f54ac5df015",
      "tree": "d5d7a7e29af68392cc4d956977da702f00983bdc",
      "parents": [
        "1b8376c8127c973377e7881afb1ae41a8cf812c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 12 10:44:11 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 19 13:06:11 2017 -0700"
      },
      "message": "ART: Add trace around app image verification\n\nTo track verification times in debug builds.\n\nBug: 35644369\nTest: m test-art-host\nChange-Id: I131a713464e2bd44125e5091e9c20cec600a87e0\n"
    },
    {
      "commit": "e7732be2390f00b1f98b8c0066a37892ee1126f6",
      "tree": "a2f1b1b46f1eb6e3623ec37f077b57e0f1b01013",
      "parents": [
        "44f520b12bab27ef4c0719f9dd296d76c79b23cb"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 11 14:35:20 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 16 21:20:36 2017 +0100"
      },
      "message": "ART: Implement missing mterp handlers\n\nAdds mterp handlers for const-method-{handle,type}, invoke-custom, and\ninvoke-polymorphic.\n\nMinor refactoring starting from interpreter_common.{h,cc} for consistency.\n\nTest: m test-art-host\nBug: 65872996\nChange-Id: I95cda758d1ce2fb52e3b1c6211e5d1763cee7bd6\n"
    },
    {
      "commit": "79c87da9d4698ec58ece65af0065eebd55a1cfe0",
      "tree": "399797f37712da9d20829d5b5059b6c84943cb02",
      "parents": [
        "656e97f949df4081fba908113406b32915174502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 10 11:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 14:47:06 2017 -0700"
      },
      "message": "Add DexFileLoader class\n\nAdded DexFileLoader class, moved functionality from DexFile there:\n- Multidex loading logic\n- DexFile opening logic for Zip and etc\n- Some other helpers\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic3dfa458947d4b69912dea5cdd836e7e8f55061c\n"
    },
    {
      "commit": "8f34abacb10936ab1ba87d8d8473c16d6ceddea8",
      "tree": "1835958a45e52d7b165938d33989637ddb746001",
      "parents": [
        "97785f595a8a3b5c766021a07c47a2ca81e4a810"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 09 13:46:32 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 09 13:58:53 2017 -0700"
      },
      "message": "Move to interpreter if async-exceptions are pending.\n\nIt was previously possible to miss async exceptions due to a\nconcurrent exception occurring that allows the thread to enter JITed\ncode without checking for async-exceptions. Once this happens it is\npossible the thread will never re-enter interpreted code where the\nexception can be noticed.\n\nTest: ./test.py --host\nTest: stress --cpu 60\nBug: 67576489\nChange-Id: Ic93490d4b3e945ac92ab9e8c865e07ae76ca213a\n"
    },
    {
      "commit": "8d8de0c92c45a25ac71375c689af29e168bc2ec1",
      "tree": "f60102a6d4493207ed3f8a4df86a004c4f5a046b",
      "parents": [
        "1602bf67be5d9e377c1afde175b65634f4b8b0b5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 04 09:35:30 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 04 09:43:31 2017 -0700"
      },
      "message": "Use CheckedCall for mprotects\n\nAims to prevent silent failures causing SIGSEGV in random places.\n\nBug: 66910552\nTest: test-art-host\n\nChange-Id: I91742b0b0059b5125ac663c3c3422ac5562df0fa\n"
    },
    {
      "commit": "2e59994c3c586d8b753e4b14a94c81bce3dba1a9",
      "tree": "ab749ce709732821c7c00c81eb76afef032fd888",
      "parents": [
        "865a0503515f78611dce103bd04b7c66c051d304"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 22 16:17:41 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 02 16:08:18 2017 +0100"
      },
      "message": "ART: support for const-method-{handle,type}\n\nAdds support for const-method-handle and const-method-type bytecodes.\n\nBug: 66562269\nTest: art/test/run-test --host 979\nTest: art/test/dexdump/run-all-tests\nChange-Id: I812eaf0f2439d6126b4287483fe2348366cacf90\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "fe712a8b9c247d66df013f2b4b6faa6009d745bb",
      "tree": "45897680a8f1897b6d33c3bccfad859bb6d9abe0",
      "parents": [
        "3597f51c4af8d5e32c21789ea7b7cd75dc078120",
        "486dda03900a215650f71a9068759978aa77c699"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 18 08:28:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 18 08:28:15 2017 +0000"
      },
      "message": "Merge \"Add support for registering classpath classes status.\""
    },
    {
      "commit": "486dda03900a215650f71a9068759978aa77c699",
      "tree": "1f2a1331d3ec474c979db5f9a35dd11f453abc25",
      "parents": [
        "b072ec25f8a71420ee77b068a28a2669420f6150"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 11 14:15:52 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 15 12:45:28 2017 +0100"
      },
      "message": "Add support for registering classpath classes status.\n\nBy doing class unloading after each dex file compilation, we are loosing\naway verification done on classpath classes.\n\nThis change introduces a new table for keeping around class status of\nclasspath classes.\n\nMultidex quickening compilation improved by ~5% by not re-verifying classpath\nclasses.\n\nBug: 63467744\n\ntest: test.py\ntest: golem successfully compiles FB\nChange-Id: I629c0a7d86519bbc516f5e59f7cd92ca6ca842eb\n"
    },
    {
      "commit": "e9691f5ef14de049a1bbffb344049641d7fcd73b",
      "tree": "ffec6bb7adbd4d01aa8b051f281ef2df9c738a6c",
      "parents": [
        "61add1d9dcd11d86253b218a8feeafa642bc4941"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 13 13:32:12 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 13 13:32:12 2017 +0100"
      },
      "message": "ART: Do not add Proxy prototype methods to their dex cache.\n\nThis work is really unnecessary since\n    https://android-review.googlesource.com/460136 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Id3ac5be338b827dce73cb8f82cf162f976864d54\n"
    },
    {
      "commit": "a49e053faa4a254df1f21e055cb73555de241cfc",
      "tree": "bed0e8f0934550d4329c0aed10f016c884c6750f",
      "parents": [
        "47d00f6c4657af33c3cc29783c0f2eb156aa1449"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Aug 25 08:05:29 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Sep 11 15:31:00 2017 -0700"
      },
      "message": "Show ArtMethods in imgdiag\n\nSince ArtMethods were moved out of mirror:: classes imgdiag does not\nshow information about them.  Diff ArtMethods to facilitate finding\ndirty memory there.\n\nBug: 38173645\nTest: imgdiag --boot-image\u003d/system/framework/boot.art --image-diff-pid\u003d`pid system_server`\nChange-Id: Icd86a9ef14d5177a297026c22c81c080f5c85fc1\n"
    },
    {
      "commit": "88f929ce72a5eabdb1ae1b32e5ec157d0e9f1ef8",
      "tree": "6e4c293998044975d91596032d9f193dc41bad8f",
      "parents": [
        "c54e4cfa995fcd5a8457b3424fada36c560c9789",
        "6cfbdbc359ec5414d3e49f70d28f8c0e65b98d63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 08 11:27:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 08 11:27:33 2017 +0000"
      },
      "message": "Merge \"Use mmapped boot image intern table for PIC app HLoadString.\""
    },
    {
      "commit": "6cfbdbc359ec5414d3e49f70d28f8c0e65b98d63",
      "tree": "f92b309ddc43c2254b6067346a653170fbbf7316",
      "parents": [
        "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 25 13:26:39 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 17:52:35 2017 +0100"
      },
      "message": "Use mmapped boot image intern table for PIC app HLoadString.\n\nImplement new HLoadString load kind for boot image strings\nreferenced by PIC-compiled apps (i.e. prebuilts) that uses\nPC-relative load from a boot image InternTable mmapped into\nthe apps .bss. This reduces the size of the PIC prebuilts\nthat reference boot image strings compared to the kBssEntry\nas we can completely avoid the slow path and stack map.\n\nWe separate the InternedStrings and ClassTable sections of\nthe boot image (.art) file from the rest, aligning the\nstart of the InternedStrings section to a page boundary.\nThis may actually increase the size of the boot image file\nby a page but it also allows mprotecting() these tables as\nread-only. The ClassTable section is included in\nanticipation of a similar load kind for HLoadClass.\n\nPrebuilt services.odex for aosp_angler-userdebug (arm64):\n  - before: 20862776\n  - after: 20308512 (-541KiB)\nNote that 92KiB savings could have been achieved by simply\navoiding the read barrier, similar to the HLoadClass flag\nIsInBootImage(). Such flag is now unnecessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --pictest\nTest: testrunner.py --target on Nexus 6P.\nTest: testrunner.py --target --pictest on Nexus 6P.\nTest: Nexus 6P boots.\nBug: 31951624\nChange-Id: I5f2bf1fc0bb36a8483244317cfdfa69e192ef6c5\n"
    },
    {
      "commit": "66e3af9ce5b3aaa43e5ce3bce8233235af139072",
      "tree": "859b229b42d1d70bff74b3f7d5ddf59a50c16904",
      "parents": [
        "b072ec25f8a71420ee77b068a28a2669420f6150",
        "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 07 16:08:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 07 16:08:28 2017 +0000"
      },
      "message": "Merge \"Remove DexCache arrays from app oat .bss.\""
    },
    {
      "commit": "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59",
      "tree": "685000aec6754ac7ec361d843df6254786fa33f2",
      "parents": [
        "562086585f002babaaa542488a91bf7dd25e222c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 14:15:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 14:46:19 2017 +0100"
      },
      "message": "Remove DexCache arrays from app oat .bss.\n\nTheir presence in the .bss was no longer necessary and\nit doesn\u0027t really matter for memory usage whether they\nare in the .bss or in the LinearAlloc. This removes\na lot of unnecessary code.\n\nTest: m test-art-host\nTest: testrunner.py --host\nChange-Id: I63ccd4412fcb267341b8b012b7e3b09903f86625\n"
    },
    {
      "commit": "f598131aeaede9eac05c1399f0dba6f89fda0d7e",
      "tree": "54073e88ac41fc5252b54807b54cb69320f94428",
      "parents": [
        "f56311a966a9e8e476287cd47d615a91a83c1d04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 06 14:17:34 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 06 17:26:51 2017 -0700"
      },
      "message": "Add more logging for b/64759619\n\nAim to get more info about methods that don\u0027t have a resolved\ndeclaring class.\n\nTest: test-art-host\nBug: 64759619\n\n(cherry picked from commit 26c5f9dd5a11012af3327ef3309890f40cb222b0)\n\nChange-Id: I6a2b4b4f1db8cc7771d76deed96dd7f598cd1fdd\n"
    },
    {
      "commit": "cd87c3ee6fefc505010c795284cfc4bca076edf2",
      "tree": "074c0326206fe4a52dc8ebfa09657ef040d88022",
      "parents": [
        "39d44ba52b512cdfa7a0a2fccc7f77d28a15329e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:11:57 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:26:54 2017 +0100"
      },
      "message": "Clean up ImageHeader section getters.\n\nTest: m art-test-host-gtest\nTest: testrunner.py --host\nChange-Id: Iaea7ce6f9bc3ff3c6d9bb6fb598aa62333ebf30c\n"
    },
    {
      "commit": "5c3e9d1f60607420bb52fa8c9230967b9d9ea248",
      "tree": "896d3480f1fb992f78c3ecba8f221e2c94eb6fbf",
      "parents": [
        "80be041454871a9b72c39790a10954595d721a63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 30 16:43:54 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 30 18:31:06 2017 +0100"
      },
      "message": "ART: Clean up checks in CheckProxyMethod().\n\nThe non-proxy method, `np`, is always the same as the\n`prototype`, so it\u0027s not really worth comparing their\nmembers. That\u0027s been the case since\n    https://android-review.googlesource.com/148090 .\n\nWe\u0027ve see the comparison of the return type hit a CHECK()\nfailure for ObjPtr\u003c\u003e cookie. This can happen since\n    https://android-review.googlesource.com/431679\nif the return type is evicted from the DexCache and we go\nthrough the slow path.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 30627598\nChange-Id: I11f9ea86326be6ef9043ac5f170d74165ac11343\n"
    },
    {
      "commit": "5122e6ba34d46851cd89f2ad55bf6bb067e038d6",
      "tree": "e96ba37b6451be7a06d930b0274251cac35ce05e",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 16:10:09 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 29 11:29:31 2017 +0100"
      },
      "message": "ART: Remove ArtMethod::dex_cache_resolved_methods_.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Repeat the above tests with ART_HEAP_POISONING\u003dtrue\nTest: Build aosp_mips64-eng\nChange-Id: I9cd0b8aa5001542b0863cccfca4f9c1cd4d25396\n"
    },
    {
      "commit": "be8303d3e7afb5a9088b69858cbcf40cf8737d1a",
      "tree": "a1349fa9d461515d231478df0118e1443e178988",
      "parents": [
        "c9d88538d73680563f7a6e73885acfff2c55ef58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 17 17:39:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 18 10:51:59 2017 -0700"
      },
      "message": "Call madvise hints for image dex files\n\nAfter opening image spaces, perform madvise hints for the\ncorresponding dex files.\n\nMoved kMadviseDexFileAccesses to oat_file.cc to not have this enabled\nyet.\n\nBug: 63178181\nTest: make and flash\n\n(cherry picked from commit 3efecdef520e80cd79f34549c4ba3a77042d0d92)\n\nChange-Id: If91537e098b159d00354551ce6400a806549b2ca\n"
    },
    {
      "commit": "d1ee20fed62cd8db8fd496c4e5760dc554136020",
      "tree": "3252b0983fc23118846b68e0fc9b65b86af030eb",
      "parents": [
        "2ade881db8642f10007c1c46b5e7f073d463c2d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 09:21:16 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 10:38:57 2017 +0100"
      },
      "message": "Revert^4 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() failure while visiting references for non-CC\nmoving GC by avoiding the DCHECK(); reference equality may\ngive false negatives at that stage as we may compare the new\nreference against an old one for the same object.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\nTest: ART_DEFAULT_GC_TYPE\u003dSS ART_USE_READ_BARRIER\u003dfalse \\\n      testrunner.py --host --gcstress -t 048-reflect-v8\n\nThis reverts commit 76ccd09c3d98317dfbd179c6f5c231dcfc5d6996.\n\nChange-Id: I13cc339d5b31fceedf39ea9a77f27369ba72279f\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "07bfbace6f835e6c748fd68ec7624992478b16c1",
      "tree": "5d094a00fbc90455bd9b53e042cf8b4fe8433462",
      "parents": [
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 14:55:02 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 16:33:00 2017 +0100"
      },
      "message": "Hash-based DexCache methods array.\n\nTotal boot*.art size for aosp_angler-userdebug:\n  - arm64:\n    - before: 11603968\n    - after: 10129408 (-1.4MiB, -12.7%)\n  - arm:\n    - before: 8626176\n    - after: 7888896 (-0.7MiB, -8.5%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nTest: Build aosp_mips64-eng\nBug: 30627598\nChange-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f\n"
    },
    {
      "commit": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "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": "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": "3d931dc76aa3cd9787bfc7d3f42bc819b57cdcc0",
      "tree": "a0691610e70d9fbc5755a93dcb7cd1e5add13160",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372",
        "57d0accc081c1779edb604ab86e5a4c0cfba16eb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 20:57:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 20:57:03 2017 +0000"
      },
      "message": "Merge \"Create a class loader context starting from an existing ClassLoader\""
    },
    {
      "commit": "57d0accc081c1779edb604ab86e5a4c0cfba16eb",
      "tree": "15af07023c0576e36e4fcfb78dd6e29890edcfd2",
      "parents": [
        "7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 11 17:41:30 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:33 2017 -0700"
      },
      "message": "Create a class loader context starting from an existing ClassLoader\n\nExtend ClassLoaderContext to be able to generate a context from an\nexisting class loader.\n\nThis will be used in extending the duplicate class check to cover\nDelegateLastClassLoaders.\n\nMost of the functionality is migrated from OatFileManager with some\ncleanups consisting of extra docs and more conservative checks on the\nintegrity of the class loader chain.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: If7c18cb75bfc9e6784676f96a666bf13b04c8b8b\n"
    },
    {
      "commit": "0c18338ebae6b3597c882887f8354b64abb5e90f",
      "tree": "fde8624a51b99ef7338784c863a9edf55dc2d08b",
      "parents": [
        "10d39085d5e064ae0afdc898eb32741a660c4b9d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 22:26:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:09:01 2017 -0700"
      },
      "message": "ART: Replace or remove some ObjectCallback Walk functions\n\nReplace with visitor functions in RegionSpace and SpaceBitmap. Remove\nold ObjectCallback version in HeapBitmap. Fix up users. Move some\nthread-safety annotations.\n\nMove ObjectCallback definition to the only remaining user (ModUnionTable).\n\nTest: m\nChange-Id: I10307aeacad0c60d21fbade2081ec040d6a6ac4c\n"
    },
    {
      "commit": "1c158a07ac7bac301af9d2921207d66730d1ac0a",
      "tree": "db42f2bef50c3a2393e4f8e09b64a43af75bd15c",
      "parents": [
        "351c44765279142d15333e2ae02b8a423d195b1b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 17:26:19 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:08:53 2017 -0700"
      },
      "message": "ART: Use VisitObjects visitor functions\n\nMove users to VisitObjects with templated visitors. Clean\nup the code a bit.\n\nTest: m\nChange-Id: Ibbda8e9aa17e895cee559080c1e4158744cbbbf6\n"
    },
    {
      "commit": "0cb172874481f736c6b7c491dd621166cc25561b",
      "tree": "2408750b6e08c686b89cee5df0ddae736a775092",
      "parents": [
        "890045e5a768257d8def42827a09a516ebe3e07e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jul 12 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 17 14:09:56 2017 -0700"
      },
      "message": "Do superclass validation at compile time and log with new class status.\n\nTries to perform superclass validation for classes that are resolved,\nbut not initialized at runtime. If successful, saves the result in the\noat file with a new class status. At runtime, the superclass validation\ncan be skipped during class initialization, saving some time and\nreducing string accesses.\n\nResults show savings of 50kB PSS in maps on startup, with slight\ndecrease in startup time.\n\nMaps (average of 100 runs)\nBefore: dex 9941.3 odex 15159.8 total 25101.1 launch 908\nAfter: dex 9897.4 odex 15155.7 total 25053.1 launch 906.6\n\nBug: 63456114\nTest: mm test-art-host\nChange-Id: If67a4a49d61781b6d561c26118d7e0c6b9cc0d6f\n"
    },
    {
      "commit": "f8db2c3945e746fcbf307832ac2f7826d5ec178a",
      "tree": "fc579f67f17b2ccbb218889f2484ef6f5013da1c",
      "parents": [
        "c5515fd96887f70101640fddf9a3189ff936c08b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 07 20:07:12 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 14 13:04:30 2017 +0100"
      },
      "message": "ART: Add support for constructor method handles\n\nAdd well known methods for MethodHandles.lookup() and\nMethodHandles.Lookup.findConstructor(). These are used to call the\nJava code that create a constructor transform.\n\nSeparate method handle resolution paths for fields and methods in the\nclass linker.\n\nUpdate test 952-invoke-custom-kinds to include a constructor method\nhandle. The test classes now match dx/tests/135-invoke-custom.\n\nBug: 62774190\nTest: Update 952-invoke-custom-kinds\nChange-Id: I9a007254a856422c24397c4df3ef3dfbf6bdd840\n"
    },
    {
      "commit": "82b351f1b3027485f378ec955ad29cc1e7314013",
      "tree": "e9bc7f600b6cf877ccf12380d6b2e0588619c6ad",
      "parents": [
        "f5f88da9d871cd510dcfff5d5e4bb547332df804"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 05 14:34:25 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 11 10:08:17 2017 +0100"
      },
      "message": "Fix MethodHandle resolution for invoke-direct\n\nResolving invoke-direct needs to consider whether the target should\nhave invocation type kInvokeDirect or kInvokeSuper.\n\nBug: 36957105\nTest: art/test/run-tests --host 952-invoke-custom-kinds\nChange-Id: I117033f351925bca7e19072ab212f9f5519f43cb\n"
    },
    {
      "commit": "7b46197bc2459b3324e0049277a911e31414bb52",
      "tree": "d1415e7d77bd9110194878f93222f057fabbbb9c",
      "parents": [
        "0656044bf8b1d5053cdea6615f4d0aebad5b64b8",
        "cdd4912eef02cce1ae4ec95e025794dced089466"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jul 06 21:12:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 21:12:54 2017 +0000"
      },
      "message": "Merge changes I8d0f5341,Iced0de7c,I742cd614\n\n* changes:\n  Add fast path to FindClass for DelegateLastClassLoader\n  Add DelegateLastClassLoader to the list of WellKnownClassLoaders\n  Refactor FindClass code in class linker\n"
    },
    {
      "commit": "cdd4912eef02cce1ae4ec95e025794dced089466",
      "tree": "d212b7d061f5dad7861945b9d86cea728e68d133",
      "parents": [
        "7865ac7e233b8a8dcfd6ca8466d30b39a8089c3e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 05 20:09:53 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jul 06 12:32:16 2017 -0700"
      },
      "message": "Add fast path to FindClass for DelegateLastClassLoader\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I8d0f534195c31a5d291e38b0eea47534a5d471fb\n"
    },
    {
      "commit": "7865ac7e233b8a8dcfd6ca8466d30b39a8089c3e",
      "tree": "c845ef2149d819dd512b87f1898aff6d583f91c6",
      "parents": [
        "415dc3d63fc05f89b77c2f6249a5a89dade4df27"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 28 11:03:12 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jul 06 12:05:54 2017 -0700"
      },
      "message": "Add DelegateLastClassLoader to the list of WellKnownClassLoaders\n\nGeneralize CreatePathClassLoader from the class linker to be able to\ncreate a well known class loader with a given parent.\n\nFor now, it only supports PathClassLoader and DelegateLastClassLoader.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: Iced0de7c21010c6d61dbf29a631e670011833a7d\n"
    },
    {
      "commit": "415dc3d63fc05f89b77c2f6249a5a89dade4df27",
      "tree": "c80669ca9def11e5c32addfdc3f4c88c4eb25686",
      "parents": [
        "16d59b2b0ff202be99cbe24830e8a5080b774357"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 28 11:03:12 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jul 06 12:02:52 2017 -0700"
      },
      "message": "Refactor FindClass code in class linker\n\nExtract the code searching the current class loader classpath in a new\nmethod (FindClassInClassLoaderClassPath). This will make things easier\nwhen adding support for DelegateLastClassLoader.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I742cd614f12e8a7b6ccd0a23a99d1f6653afaf73\n"
    },
    {
      "commit": "0656044bf8b1d5053cdea6615f4d0aebad5b64b8",
      "tree": "3842f5694a0a98b275b8ec38cf7962979d5f45ee",
      "parents": [
        "8054c1d7da8ced97e5371d5a18dcf5ddd388835d",
        "ba17dbd5f23d6f6acf3fb60b6dd65dc34bd833de"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 06 18:42:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 18:42:00 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fixed Literal String intern mismatch.\"\"\""
    },
    {
      "commit": "631827d9b200c93f24816c6869d72426f9fed8e3",
      "tree": "9d5d768df39e21a2678d4b9148c5ec4d1c016911",
      "parents": [
        "d64fbfa3471c47d6628d6014bc4a3ac780abd26a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 10 14:53:47 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 04 11:57:13 2017 +0100"
      },
      "message": "Fixes for constant method handles\n\nAdd support for constant direct and interface method handles in the\nDEX file.\n\nAdd error handling for field and method resolution failures in\nClassLinker::ResolveMethodHandle().\n\nBug: 36957105\nTest: art/test/run-test --host 952-invoke-custom-kinds\nChange-Id: I91a2a23ba3365310eccb8cadd193b62f57e5811c\n"
    },
    {
      "commit": "5ef7020490126d868b10e8d40cdd2963c51eaa6c",
      "tree": "a0bf3d5800708843e4e492fd24b58e0db1fe9103",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 29 10:45:10 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 29 10:50:10 2017 -0700"
      },
      "message": "Handle spurious wakeups in VerifyClass\n\nSpurious wakeups in VerifyClass can cause the class status to be\nthe same as the old status. Relax the check to be \u003e\u003d to handle this.\n\nAdding a regression test is infeasible since it is a hard to get a\nthread in the \"somebody else verifying\" loop.\n\nTest: test-art-host\nBug: 62912904\nChange-Id: I308a395220507a875bb2fbf0800a14fabb434fda\n"
    },
    {
      "commit": "ba17dbd5f23d6f6acf3fb60b6dd65dc34bd833de",
      "tree": "f4edd3f059665f0ed7fe2e9506c7f9508f727be3",
      "parents": [
        "3dc94c4763ecab28c0053d5d07e332c61a3f781b"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jun 28 21:27:56 2017 +0000"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jun 28 16:43:51 2017 -0700"
      },
      "message": "Revert \"Revert \"Fixed Literal String intern mismatch.\"\"\n\nThis reverts commit f7ab8348b88b7ce63c5fa112f5a71756da541763.\n\nTest: make test-ar-host -j64\n\nChange-Id: I688b7c7905c8be575959fa78ad594ac1c782af9a\n"
    },
    {
      "commit": "271c1e19c16609b966e0ceb67d4532e2772e73b5",
      "tree": "4120b60989fc8122cce17c9c8a721f60ee2bfa9f",
      "parents": [
        "9d7fd996bb79d28c86ae4e31e0f3c05c779e27dd"
      ],
      "author": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Tue Jun 27 11:14:49 2017 -0700"
      },
      "committer": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Tue Jun 27 11:23:40 2017 -0700"
      },
      "message": "Adding additional logging to Class Verbose Log\n\nThe additional logging is so that every class that is verified is logged\n(even if there are no failures). Additionally, logging was added to see\nwhich classes are being re-verified.\n\nBug: 37754950\nTest: m -j test-art-host\nChange-Id: I946a5a35558666a81a11a1a2825a4731f47857ef\n"
    },
    {
      "commit": "991725acacae61a884042bcfe8d782c346c4a274",
      "tree": "dfd2771e0607a6108eb1ef8466766588062e218e",
      "parents": [
        "19921b70fef519c644d56a6aeb7f82491ba1850c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 20:41:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 22:11:28 2017 -0700"
      },
      "message": "Revert \"ART: Simple structural class check\"\n\nThis reverts commit fd9eb3923dcf417afcf5ed4ebb13867fd10f2de3.\n\nRemove the simple structural check. Its naive expectations for\nresolution have been wrong since we introduced compiling APKs with\na classpath for shared libraries and have never been updated.\n\nBug: 62857870\nTest: m test-art-host\nChange-Id: I4a91e9b80b035b493294d0cac029dbac2d9d3bbe\n"
    },
    {
      "commit": "e17cf243978ca7f5356e746ee460f0fcf04e04a6",
      "tree": "e8ad423bf1dee5756fec451ba22db749ed4f5472",
      "parents": [
        "2bc159ebd1115f71d80639e47fc38663aa84ba4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:05:51 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:11:12 2017 -0700"
      },
      "message": "Add field/method skipping helper functions to DexFile\n\nSpecifically added SkipStaticFields, SkipInstanceFields,\nSkipAllFields, SkipStaticMethods, and SkipVirtualMethods.\n\nAlso applied the helpers to the code base.\n\nTest: test-art-host\nChange-Id: Idda77f9a6e2564c2e588d2bbe11cc320063fdb32\n"
    },
    {
      "commit": "0eb882bfc5d260e8014c26adfda11602065aa5d8",
      "tree": "e66dbebfb1e9a254c20954a2f2f98541aebfd5af",
      "parents": [
        "b5f5d746ac3f2c3088292395603cb1470e7749d2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 15 13:39:18 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 07 15:39:24 2017 +0100"
      },
      "message": "Use ArtMethod* .bss entries for HInvokeStaticOrDirect.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target\nTest: Nexus 6P boots.\nTest: Build aosp_mips64-userdebug.\nBug: 30627598\nChange-Id: I0e54fdd2e91e983d475b7a04d40815ba89ae3d4f\n"
    },
    {
      "commit": "f7ab8348b88b7ce63c5fa112f5a71756da541763",
      "tree": "83d2be3bd3255a99024b3cb32f07eec9b1ce7ce8",
      "parents": [
        "bc1c6b6da9df82ebb17bd5dcd16c025ac6429b48"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 08:14:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 07 09:20:25 2017 +0100"
      },
      "message": "Revert \"Fixed Literal String intern mismatch.\"\n\nbug: 62337922\n\nThis reverts commit 762ef842d78b6f8a76f2b119504f075728540077.\n\nChange-Id: Idfa3a9271e3dfb92dc849f68b97c8eeeb2732abc\n"
    },
    {
      "commit": "9116d5ad10fc699c5f1c8fa2d223e14ed725a48c",
      "tree": "7b8c59f8898100a7dc2a806bd7f95419b50ad00c",
      "parents": [
        "c3e822bde47305d178a8014f51ff9fba59d70d1e",
        "201e297b81d66c27be5f84a7d5f326f926573225"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 06 18:22:01 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 06 18:22:03 2017 +0000"
      },
      "message": "Merge \"Don\u0027t treat proxy methods as compilable\""
    },
    {
      "commit": "2ff3b97500b717f69415ae474d5cfb1613cd15ee",
      "tree": "a6bd76eeda26ad85173e23a14f69ec8ed3440570",
      "parents": [
        "5d08fcc21a14190c4dba3028a3e35d281afdd016"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 18:14:53 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 20:28:20 2017 -0700"
      },
      "message": "ART: More header cleanups\n\nClean up some more includes. Move some -inls from object-inl to\nobject-refvisitor-inl. Fix up transitives.\n\nTest: m test-art-host\nChange-Id: I0e3e268d95a1c71b0a80fc963d13d191a97b2283\n"
    },
    {
      "commit": "201e297b81d66c27be5f84a7d5f326f926573225",
      "tree": "154f6aac8e4f9b96da284fed9a0e7386b5e76653",
      "parents": [
        "4f101e5b6ae214a73bdd912374f5dc565d336e47"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 05 18:34:53 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 05 19:46:58 2017 -0700"
      },
      "message": "Don\u0027t treat proxy methods as compilable\n\nIf they are compilable it will add JIT samples and cause CHECK\nfailures in the profile saver.\n\nBug: 62349349\nTest: test-art-host\nChange-Id: I64055a4568ab704fa5b8ccfaf80687e9ff7b8e5b\n"
    },
    {
      "commit": "81c769436a89b25c781eb2da882f11fd8d11f84d",
      "tree": "eb7d10728981bf0ee5f16502ce949d823030504d",
      "parents": [
        "8c4fd14f714900190bd2024aa07495e874520da6",
        "07f0621463e7b480c86ddba3e72d3fb9f0ae820f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 05 18:03:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 05 18:03:24 2017 +0000"
      },
      "message": "Merge \"Fix redefinition related use-after-free bug\""
    },
    {
      "commit": "07f0621463e7b480c86ddba3e72d3fb9f0ae820f",
      "tree": "130691a38d30d788306ca546f3e7b4d17c808a53",
      "parents": [
        "596c58b3dc73a4017d49af6c5037bbd7109fd31e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 01 14:01:43 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 02 11:30:01 2017 -0700"
      },
      "message": "Fix redefinition related use-after-free bug\n\nA redefinition that failed with JVMTI_ERROR_FAILS_VERIFICATION could\ncause a use-after-free of java DexCache objects if a art::DexFile* that\naliases the one created for the failed redefinition is created.\n\nBug: 62237378\nTest: ./test.py --host -j40\n\nChange-Id: Ia080dfa6c702b2e3a735c4c3cd80ca3974386934\n"
    },
    {
      "commit": "ea650f3bc4f54eb2c647cf0f7134398ef5038792",
      "tree": "cdddde74424cf9fbeb2ef62e6bebca619c5ed989",
      "parents": [
        "6559ba1cfb9d24fdca4b1b1ec9e0b8dc31679982"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 24 12:04:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 02 18:25:09 2017 +0000"
      },
      "message": "Move profiles to use bitmaps for startup methods\n\nThis CL enables changes like compiling only hot methods while still\ndoing layout for hot and startup methods.  The bitmaps are also a\nbit smaller for post-launch use cases.\n\nNo change in compilation strategy yet.\n\nFixed some bugs in dexlayout test like using a profile with the wrong\ndex location. This meant the second invocation of dexlayout didn\u0027t\nhave any profile data.\n\nAdded profman support for dump-classes-and-methods,\ncreate-profile-from, and related test.\n\nProfile sizes (bytes) post launch:\nGmail: 7290 -\u003e 6136\nMaps: 22896 -\u003e 18984\nMusic: 8582 -\u003e 7050\nYouTube: 16733 -\u003e 14592\n\nTest: test-art-host\n\nBug: 62040831\n\nChange-Id: I9915b81a2ff2c47464acbbdeb55ce30a33d5483f\n"
    },
    {
      "commit": "08556886a16ff2bb9fc3f184ac699de21c0369cd",
      "tree": "c90ddce83ac98252ced0a4181b0c4b1e0e34c1f8",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 26 16:40:45 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 01 06:54:11 2017 -0700"
      },
      "message": "Handle gracefully profiles with invalid classes or methods\n\nBug: 38410980\nTest: m test-art-host-run-test-707\nChange-Id: I8c1b0a00c113c0faf0cc5d141e67e4183322520f\n"
    },
    {
      "commit": "854461a4cd5e4a38debe3616e12b52fe7f160782",
      "tree": "55a7399b859787403f1e032b611a889a99b3a7de",
      "parents": [
        "85b82e35d810a21257fec9d850d95f8abc900670",
        "762ef842d78b6f8a76f2b119504f075728540077"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 21:07:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 31 21:07:30 2017 +0000"
      },
      "message": "Merge \"Fixed Literal String intern mismatch.\""
    }
  ],
  "next": "762ef842d78b6f8a76f2b119504f075728540077"
}
