)]}'
{
  "log": [
    {
      "commit": "208f67072283be64da231b51f9c195aff403dceb",
      "tree": "97748c71e6c16ae110ccdbb13f50a78e5a21cd33",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 12:00:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 16:50:21 2017 +0000"
      },
      "message": "Change ArtField::ProxyFindSystemClass() to lookup the class.\n\nAs the function is called from ArtField::LookupType(),\nwe should avoid calls that appear to allow type resolution\nrather than plain lookup. The lookup should always succeed.\n\nAlso rename ArtField::LookupType() to LookupResolvedType()\nto align with naming used in ClassLinker and ArtMethod.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I0a87347b5341575e47e0fdba6d58ade2543387c8\n"
    },
    {
      "commit": "83e2668a9dc19d0d7fa957b41265b7b564142e4d",
      "tree": "fa4534aceb190b5499d9038bf412478dff5f8464",
      "parents": [
        "f81cd8101067c71b67fe4ee265742aab83055aa5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 05 17:58:57 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 05 17:58:57 2017 +0000"
      },
      "message": "ART: Fix dependencies of dump-oat-core-target .\n\nThis was probably broken by\n    https://android-review.googlesource.com/209369\nwhich removed the \"default\" compiler type but didn\u0027t\nuptate the variable names to those introduced in\n    https://android-review.googlesource.com/337923 .\n\nTest: m dump-oat-core-target\nChange-Id: I0fad9a78fea13bf9c7da24d69bb217a2bc57257e\n"
    },
    {
      "commit": "f3c52b42a035902245d00a619fed0275afb063d2",
      "tree": "c46dab07826be55e9ca92ab301eed586c2f307ca",
      "parents": [
        "b360bff818ad0bf59668cd2bebaaeeaa8a3b5dfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 17 17:32:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 21 17:09:44 2017 +0000"
      },
      "message": "Fill Class and String .bss slots in runtime.\n\nShift the responsibility for filling Class and String .bss\nslots from compiled code to runtime. This reduces the size\nof the compiled code.\n\nMake oatdump list .bss slot mappings (ArtMethod, Class and\nString) for each dex file.\n\naosp_taimen-userdebug boot image size:\n  - before:\n    arm boot*.oat: 36534524\n    arm64 boot*.oat: 42723256\n  - after:\n    arm boot*.oat: 36431448 (-101KiB, -0.3%)\n    arm64 boot*.oat: 42645016 (-76KiB, -0.2%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nTest: m dump-oat, manually inspect output.\nBug: 65737953\nChange-Id: I1330d070307410107e12c309d4c7f8121baba83c\n"
    },
    {
      "commit": "8eaa8e59c95aac26cc072cdbaaccd8f3976f113d",
      "tree": "613ebe58b921780913a417f09b0f2a0f686c89d8",
      "parents": [
        "5552e535951f2feb10bfd492b8abb54bd41a9f4b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 13 17:47:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 14 09:48:17 2017 +0000"
      },
      "message": "Remove kIsVdexEnabled.\n\nIt is now always assumed there is one.\n\nTest: test.py\nChange-Id: I8f3f5c722fb8c4a0f9ad8ea685d1a956bd0ac9ae\n"
    },
    {
      "commit": "5552e535951f2feb10bfd492b8abb54bd41a9f4b",
      "tree": "8765da5ff3881dbbae9542058cdea2df1c1b7038",
      "parents": [
        "7959dc8e63075aa41cfef1db0800f48d5c08c47d",
        "b7c273cb44fcbdab3c17ec69124fe4bbea2696b1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 13 17:07:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 13 17:07:04 2017 +0000"
      },
      "message": "Merge \"Add ClassDataItemIterator::HasNextMethod\""
    },
    {
      "commit": "b7c273cb44fcbdab3c17ec69124fe4bbea2696b1",
      "tree": "11242e0bd24427183dd630780825214737ccbda1",
      "parents": [
        "27f5fefeb4a7e87e9537fbdd0ed392d5c1de59df"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 18:07:56 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 18:07:56 2017 -0800"
      },
      "message": "Add ClassDataItemIterator::HasNextMethod\n\nReturns true if there are either static of virtual methods remaining,\nchanged most places to use this where possible.\n\nSlight behavioral change for duplicate method checking, we not\npersist the method index across the static method / virtual method\nboundary.\n\nMotivation: Generic cleanup to remove copy paste.\n\nTest: test-art-host\nChange-Id: I7a1b507e681b2c40452f8a9913b53a96b181e171\n"
    },
    {
      "commit": "d5c0a0a7f911d8954ad58cc35eedd330a95a6eb3",
      "tree": "24e21c0d16383577487c4857bd402713981c7a4c",
      "parents": [
        "27f5fefeb4a7e87e9537fbdd0ed392d5c1de59df"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 14:16:34 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 17:23:13 2017 -0800"
      },
      "message": "Move oatdump to use code item accessor\n\nBug: 63756964\nTest: test-art-host\nTest: clean-oat-host \u0026\u0026 dump-oat-boot\n\nChange-Id: I26dae94761ae38d44ccaa372a468013a9a13ce3d\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": "5f317039d87d74f25d3b0a442072557086742d17",
      "tree": "6beae56f543d234b49a2f973dcbeb5f6f0bd2b90",
      "parents": [
        "72627a5f675b1c664beb2ad33d60a1c8dca80826",
        "2b2bef245d5b2c6faa2d6f36da14866b2d8f5e4f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 03 15:56:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 03 15:56:22 2017 +0000"
      },
      "message": "Merge \"Refactor DexInstructionIterator\""
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "2b2bef245d5b2c6faa2d6f36da14866b2d8f5e4f",
      "tree": "7948ee1d32e211198a595bb7ed35558d22838da8",
      "parents": [
        "f199f1d3a9816edf9282766a8874d894d7bf87c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 26 17:10:19 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 01 15:36:21 2017 -0700"
      },
      "message": "Refactor DexInstructionIterator\n\nAdd a way to get the dex PC for the \"for each\" use case.\n\nBug: 67104794\nTest: test-art-host\nChange-Id: I144c459c9a2a03ec8d56842280338d1f7ce1caf0\n"
    },
    {
      "commit": "891a50e9dc0f02ee34bd7348f80b621249153af5",
      "tree": "6af57b3aa8961ed8e6cd39fdf5a0ac335905b4c6",
      "parents": [
        "13e6f2935d67742e9eec14b412d33bf71b20697b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Oct 27 17:01:07 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Nov 01 11:39:19 2017 -0700"
      },
      "message": "Separate file utilities from utils.cc\n\nReduce the dependencies from utils.cc to arch/ subdirectories, etc.\n\nBug: 22322814\nTest: make test-art-host\nChange-Id: I4decd15ff4ec460735bfb58cebb1c6a1bf32b68f\n"
    },
    {
      "commit": "2b51edd7918d6a70fd335cdc5af50e9513aab1cf",
      "tree": "e2e57953d38318df3b7d32ca707fa07093fb16d7",
      "parents": [
        "d6947136eab2fcefb1a9195110b9195aabaf469e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 13:15:02 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 13:27:12 2017 -0700"
      },
      "message": "ART: Fix includes\n\nAdd missing libnativehelper dependencies. Remove superfluous\nScopedLocalRef includes.\n\nTest: mmma art\nChange-Id: Ic2ecbcc1d205500307f0ef5b2859c60d3fc336f3\n"
    },
    {
      "commit": "a1f56a8dddb88f5377a7dd4ec79640103c713d30",
      "tree": "ae1df3adacfcd82dd0b960cfd4cabcfb44fe6536",
      "parents": [
        "e4c00b3af3ccf460e4b0332a04dc9eaeffee5c7a"
      ],
      "author": {
        "name": "Anestis Bechtsoudis",
        "email": "anestis@census-labs.com",
        "time": "Sun Oct 08 23:37:10 2017 +0300"
      },
      "committer": {
        "name": "Anestis Bechtsoudis",
        "email": "anestis@census-labs.com",
        "time": "Mon Oct 16 23:36:16 2017 +0300"
      },
      "message": "Unquicken dex files before exporting from oatdump\n\nBenefit from the vdex unquicken method when exporting dex files from\noatdump (--export-dex-to). Currently oatdump exports the quickened dex\nfiles as generated by the dex compiler (dex-to-dex transformations).\nWith this commit the dex files associated with the input oat file are\nunquickened before exporting.\n\nIn contrast to the other VdexFile::Unquicken() calls, in this case it\nis useful to decompile a RETURN_VOID_NO_BARRIER into a RETURN_VOID. As\nsuch, the required changes around the decompile_return_instruction flag\nwere made since it was hardcoded to false.\n\nThis feature is mostly useful when inspecting oat files that have the\noriginal bytecode being stripped from the matching APK. If unquicken\nis successful, the old checksum is expected to match.\n\nTest: test-art-host\n\nChange-Id: I9133d5f488ee3451c8f361ae90d1e12857529b1e\nSigned-off-by: Anestis Bechtsoudis \u003canestis@census-labs.com\u003e\n"
    },
    {
      "commit": "5b6e881153143a0c7b613fc7129a11d285c8df26",
      "tree": "df8f1ac551ca14151633252e930f4c7f8912bb21",
      "parents": [
        "822cf6a4d02e45050e117e2e6d15059ca09976df"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 03 17:57:36 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 03 17:57:36 2017 -0700"
      },
      "message": "Remove dump-oat-Calculator\n\n$(TARGET_OUT_APPS)/Calculator.odex doesn\u0027t exist.\n\nTest: none\nChange-Id: I16c39c35f5a72fefa7f2fa1730d16b68cdec63a2\n"
    },
    {
      "commit": "1d2d4ff8570bb88d9d2d4633706fd7f6fb18d75e",
      "tree": "cbe67e8e9214828656314117121e8ce906a762ab",
      "parents": [
        "e5b35ed787fbfb388d162361310bae5b0e7682a7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Sep 23 16:11:06 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 27 11:51:53 2017 -0700"
      },
      "message": "Add DexInstructionIterator and use it a few places\n\nMotivation:\nWant to start abstracting away dex specific functionality to enable\nCompactDex. Adding an iterator will enable CompactDex iteration to\nwork differently than normal dex iteration.\n\nWill eventually replace CodeItemIterator.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I90e67c1a994b7698aaac0523a82816b0a003fbdc\n"
    },
    {
      "commit": "d8dbc8da0e5cc6b5c2176ce2d3877e6194d72c0c",
      "tree": "af6e9fb02471d75ebdea46190a0aa3e9dbdb892d",
      "parents": [
        "93780a60090356921b844dbefdc13442c9f18b52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 13:37:47 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 15:55:10 2017 +0100"
      },
      "message": "Refactor compiled_method.h .\n\nMove LinkerPatch to compiler/linker/linker_patch.h .\nMove SrcMapElem to compiler/debug/src_map_elem.h .\nIntroduce compiled_method-inl.h to reduce the number\nof `#include`s in compiled_method.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Id211cdf94a63ad265bf4709f1a5e06dffbe30f64\n"
    },
    {
      "commit": "7452797678c4345d4a9e65b03e00af703c2c5fe0",
      "tree": "fd23d118a6317737a692402a648217418c3d7b99",
      "parents": [
        "3c683150bcf2f1cabbe2e5f9d10d8c670b67fb7e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 15:57:32 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 10:58:42 2017 +0100"
      },
      "message": "Refactor linker files from compiler/ to dex2oat/.\n\nThis shifts some code from the libart-compiler.so to dex2oat\nand reduces memory needed for JIT. We also avoid loading the\nlibart-dexlayout.so for JIT but the memory savings are\nminimal (one shared clean page, two shared dirty pages and\nsome per-app kernel mmap data) as the code has never been\nneeded in memory by JIT.\n\naosp_angler-userdebug file sizes (stripped):\n  lib64/libart-compiler.so: 2989112 -\u003e 2671888 (-310KiB)\n  lib/libart-compiler.so: 2160816 -\u003e 1939276 (-216KiB)\n  bin/dex2oat: 141868 -\u003e 368808 (+222KiB)\nLOAD/executable elf mapping sizes:\n  lib64/libart-compiler.so: 2866308 -\u003e 2555500 (-304KiB)\n  lib/libart-compiler.so: 2050960 -\u003e 1834836 (-211KiB)\n  bin/dex2oat: 129316 -\u003e 345916 (+212KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: cd art/; mma; cd -\nChange-Id: If62f02847a6cbb208eaf7e1f3e91af4663fa4a5f\n"
    },
    {
      "commit": "fc8b422c286501346b5b797420fb616aaa5e952a",
      "tree": "61c857a895cdad9ce387a899f92824701259df32",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Sep 17 13:44:24 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 18 10:57:06 2017 -0700"
      },
      "message": "Clean up AtomicDexRefMap\n\nMake ClassReference, TypeReference, and MethodReference extend\nDexFileReference. This enables using all of these types as the key\nfor AtomicDexRefMap.\n\nTest: test-art-host\nBug: 63851220\nBug: 63756964\n\nChange-Id: Ida3c94cadb53272cb5057e5cebc5971c1ab4d366\n"
    },
    {
      "commit": "1b404a8b34f6fa80342955cb0a61673503328b51",
      "tree": "df0d83903e77c55dcb476a19961ea9cccc13e616",
      "parents": [
        "fe712a8b9c247d66df013f2b4b6faa6009d745bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 01 13:35:26 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 18 16:53:30 2017 +0100"
      },
      "message": "Add debug info for link-time generated thunks.\n\nAdd debug info for method call thunks (currently unused) and\nBaker read barrier thunks. Refactor debug info generation\nfor trampolines and record their sizes; change their names\nto start with upper-case letters, so that they can be easily\ngenerated as `#fn_name`.\n\nThis improved debug info must be generated by `dex2oat -g`,\nthe debug info generated by `oatdump --symbolize` remains\nthe same as before, except for the renamed trampolines and\nan adjustment for \"code delta\", i.e. the Thumb mode bit.\n\nCortex-A53 erratum 843419 workaround thunks are not covered\nby this CL.\n\nTest: Manual; run-test --gdb -Xcompiler-option -g 160, pull\n      symbols for gdbclient, break in the introspection\n      entrypoint, check that gdb knows the new symbols\n      (and disassembles them) and `backtrace` works when\n      setting $pc to an address in the thunk.\nBug: 36141117\nChange-Id: Id224b72cfa7a0628799c7db65e66e24c8517aabf\n"
    },
    {
      "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": "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": "2c30e4a2a2bd73c3e9d327d4b5d059b75cc0f798",
      "tree": "698286ee61f457069b5a53ca6869319b8d9e5acb",
      "parents": [
        "3157fc26d96951ff4acfb4feb4597e74a92da2a7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 23 11:31:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 23 16:06:00 2017 -0700"
      },
      "message": "ART: Remove art and art/runtime include_dir directives\n\nRemove some overly broad or unnecessary include directives. Fix up\ncode.\n\nTest: mmma art\nChange-Id: Ic2da319f39102d59566e780f3e15fe007a3c36d6\n"
    },
    {
      "commit": "3157fc26d96951ff4acfb4feb4597e74a92da2a7",
      "tree": "93c3a03a8eae4fc9f430531f25d8be3d4d8b5af7",
      "parents": [
        "27bd4dd81962b0e59df9318ae8efc83df99ebe0a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 23 09:43:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 23 16:06:00 2017 -0700"
      },
      "message": "ART: Move cmdline parser to header library\n\nExpress the cmdline parser as a header library.\n\nTODO: Express the libart dependency correctly.\n\nTest: m\nChange-Id: I9e90029d047ab0d75a455a2361d5213a8fa6f361\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": "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": "c73753f70ab4fc9a166637bee514b292f0fa0109",
      "tree": "a464e300d44b5a3eca10cb00cc42be7c1ab9da96",
      "parents": [
        "530a6b6902b50db43659757a6270b7d111d93a2c",
        "07bfbace6f835e6c748fd68ec7624992478b16c1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "message": "Merge \"Hash-based DexCache methods array.\""
    },
    {
      "commit": "07bfbace6f835e6c748fd68ec7624992478b16c1",
      "tree": "5d094a00fbc90455bd9b53e042cf8b4fe8433462",
      "parents": [
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 14:55:02 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 16:33:00 2017 +0100"
      },
      "message": "Hash-based DexCache methods array.\n\nTotal boot*.art size for aosp_angler-userdebug:\n  - arm64:\n    - before: 11603968\n    - after: 10129408 (-1.4MiB, -12.7%)\n  - arm:\n    - before: 8626176\n    - after: 7888896 (-0.7MiB, -8.5%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nTest: Build aosp_mips64-eng\nBug: 30627598\nChange-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f\n"
    },
    {
      "commit": "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": "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": "4f1c9e6a2bbf48a4c917dfc36bb028eaa03549ae",
      "tree": "2ef8521c947b92f636cf6cb2634b7fedd030169e",
      "parents": [
        "ebd4def76f4e60e442edb8d48f43a931bc3c773e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 28 16:44:30 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 28 16:44:30 2017 +0100"
      },
      "message": "oatdump: Improve documentation of option `--app-image`.\n\nMake it more clear what extra options must be passed to\noatdump in order to use option `--app-image`.\n\nTest: mmma art\nChange-Id: I51c4879963e55093be67e24598b67ab884a18360\n"
    },
    {
      "commit": "36a296ff674e0aea16b29db965f84f81866b1375",
      "tree": "9d940463852089016a0d0932368923d04da2c3fe",
      "parents": [
        "77c7d1093281bec76d3055541fe41145cdc5f807"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 13 14:11:11 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 19 16:21:58 2017 -0700"
      },
      "message": "ART: Refactor stack.h\n\nFactor out LockCountData, ShadowFrame and JavaFrameRootInfo and leave\nstack.h for the StackVisitor. Move single-use function to user to remove\nDexFile dependency.\n\nTest: m test-art-host\nChange-Id: I53d2880917bdf6782856fd2b16f38a0293f3aefc\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": "8bdda5a106b256865ce39f4a843452f45ad97599",
      "tree": "a9b148609ab1be9067b69a39e9862e1d7a8d68c3",
      "parents": [
        "58794c5c23f46a7476a58e5a10dbeebb6321aa90"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 15:30:36 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 09 11:14:49 2017 -0700"
      },
      "message": "ART: Update stl_util.h\n\nReplace MakeUnique with std::make_unique. Remove unused functions.\n\nTest: m\nChange-Id: I3afdc0529cd6fb9d1797e5294a3d5ea2f6b38fc7\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": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "1352f13e76aec57c522f9323cbe04d1368273a94",
      "tree": "757c7d9c055f4dadfff5814d702d17d938630763",
      "parents": [
        "3f5f85d9382416b053359c3c1f11ab824843f3b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 28 15:28:29 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 02 17:48:53 2017 +0100"
      },
      "message": "Split image_test and oatdump_test.\n\nWith sufficient -j, splitting the oatdump_test makes gtests\nfinish faster, splitting image_test makes valgring tests\nfinish faster.\n\nmake -j 48 valgrind-test-art-host-gtest\n  - before: #### make completed successfully (05:20:16 (hh:mm:ss)) ####\n  - after: #### make completed successfully (03:05:43 (hh:mm:ss)) ####\nNote that the new image_*test variants are still running\nlong after the rest of the tests is finished. Further\nsplitting may still be beneficial for host tests. Target\ntests with lower -j parameter do not benefit that much.\n\nTest: make -j 48 valgrind-test-art-host-gtest\nBug: 36849303\nChange-Id: I2b887e6b3266f9d3efd7b4d71dde0fcf012829d2\n"
    },
    {
      "commit": "08c277cec19565ddeb53527c6e20f665ec23cb07",
      "tree": "acb2fb8df5204a1d1dbf4bc8226a604f2a978125",
      "parents": [
        "08ae77f1159ad92d83ed4d955eb3a0a1a04f2058"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 22:22:15 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 22:51:25 2017 -0700"
      },
      "message": "ART: Fix leaks in oat symbolizer\n\nThe FileOutputStream does not take ownership of a File*. The\nsymbolizer does not take ownership of the OatFile*.\n\nBug: 37728530\nTest: m SANITIZE_HOST\u003daddress test-art-host-gtest-oatdump_test\nChange-Id: I1200bd68abbf6be9c60f4fde5dbb72e78a6b0294\n\nChange-Id: Iade01cd5715e45d06d9b6e5937d51b807ef60fb2\n"
    },
    {
      "commit": "cbcedbf9382bc773713cd3552ed96f417bf1daeb",
      "tree": "58eed766a69ddddbc41d21624244e14547fa1dff",
      "parents": [
        "ef62210a1466c133056c4bfdae9f8f5417065eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 12 22:24:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 10:20:34 2017 -0700"
      },
      "message": "Add method info to oat files\n\nThe method info data is stored separately from the code info to\nreduce oat size by improving deduplication of stack maps.\n\nTo reduce code size, this moves the invoke info and inline info\nmethod indices to this table.\n\nOat size for a large app (arm64): 77746816 -\u003e 74023552 (-4.8%)\nAverage oat size reduction for golem (arm64): 2%\n\nRepurposed unused SrcMapElem deduping to be for MethodInfo.\nTODO: Delete SrcMapElem in a follow up CL.\n\nBug: 36124906\n\nTest: clean-oat-host \u0026\u0026 test-art-host-run-test\n\nChange-Id: I2241362e728389030b959f42161ce817cf6e2009\n"
    },
    {
      "commit": "f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b",
      "tree": "324b41485ce6c414c1a006c72cbcc5ed9f466138",
      "parents": [
        "8d6768d47b66a688d35399d524ad5a5450e9d9d4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 14:18:46 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 19:03:20 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based DexCache field array.\"\n\nTest: testrunner.py --host --interpreter\nBug: 30627598\n\nThis reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f.\n\nChange-Id: I275508e288a85d3aa08f7405a1a4f362af43b775\n"
    },
    {
      "commit": "8d6768d47b66a688d35399d524ad5a5450e9d9d4",
      "tree": "0b8733baef378d9e060c8e74319a3846489590b2",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 10:13:21 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 13:55:13 2017 +0000"
      },
      "message": "Revert^6 \"Hash-based dex cache type array.\"\n\nFixed ImageWriter to write class table also if it contains\nonly boot class loader classes. Added a regression test and\nadded extra checks for debug-build to verify that dex cache\ntypes from app image are also in the class table. Removed\nsome unnecessary debug output.\n\nTest: 158-app-image-class-table\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f.\n\nChange-Id: I6a747904940c6ebc297f4946feef99dc0adf930c\n"
    },
    {
      "commit": "0b66d6174bf1f6023f9d36dda8538490b79c2e9f",
      "tree": "1cc4d2ae868745a65fd0489a6fb2f5f2fc9e880f",
      "parents": [
        "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:50:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 16:08:01 2017 +0000"
      },
      "message": "Revert^5 \"Hash-based dex cache type array.\"\n\nFor app images, ImageWriter does not add boot image\nclasses to the app image class table even though it\nkeeps them in the dex caches. The reason for that is\nunknown, the code looks OK.\n\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nAlso reverts \"Improve debugging output for a crash.\"\n\nThis reverts commits\n    bfb80d25eaeb7a604d5dd25a370e3869e96a33ab,\n    8dd56fcb3196f466ecaffd445397cb11ef85f89f.\n\nTest: testrunner.py --host\nChange-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84\n"
    },
    {
      "commit": "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f",
      "tree": "0aacaaf1f193e96b55e0b203b678ae724c0fb6f5",
      "parents": [
        "8f323e09e692ff4f95f40300391fe41fb96a6c49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:51:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:52:17 2017 +0000"
      },
      "message": "Revert \"Hash-based DexCache field array.\"\n\nReverting to allow rebasing the revert\n    https://android-review.googlesource.com/351689\nwithout too many conflicts.\n\nBug: 30627598\n\nThis reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64.\n\nChange-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53\n"
    },
    {
      "commit": "1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64",
      "tree": "94cbab7c3097ce7d3a1feb1a69f28406644af085",
      "parents": [
        "d1d4530ffa97729aa8944932a7ac2009ae51c7e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 11:39:42 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 10 12:59:37 2017 +0000"
      },
      "message": "Hash-based DexCache field array.\n\nTest: m test-art-host, both AOT and interpreter\nTest: m test-art-target, both AOT and interpreter\nTest: m valgrind-test-art-host\nBug: 30627598\nChange-Id: If992f091aadd862d17b09928d21659573dd285a0\n"
    },
    {
      "commit": "078221e529275a5ab576eeabfb9efbc8c038290d",
      "tree": "13b0a8d1d631dab8e377c0630650cc5c5b7529c4",
      "parents": [
        "257ab7fe6885c83f1ab17fe9d4cc4a996ebd3c7e",
        "bb00f8164845cea70921cdf4817646fc3156f62b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 21 08:53:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 21 08:53:29 2017 +0000"
      },
      "message": "Merge \"Remove testing of prebuilt npic boot images.\""
    },
    {
      "commit": "bfb80d25eaeb7a604d5dd25a370e3869e96a33ab",
      "tree": "96068dd9b9b3bc2e1bcc25d38bbd2420d5b0f1bb",
      "parents": [
        "7a49d93ee265b978ab29cae659e46d41da78459a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 14 14:08:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:13:14 2017 +0000"
      },
      "message": "Revert^4 \"Hash-based dex cache type array.\"\n\nAdded extra output to the abort message to collect more data\nwhen we hit the crash. Added extra check when loading an app\nimage to verify that the class table isn\u0027t already broken.\n\nTest: testrunner.py --host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5.\n\nChange-Id: I9bb442a184c236dcb75b3e42a095f39cd6bee59d\n"
    },
    {
      "commit": "f812d8c7cf017c0ccba0eb2e5da9fd302fb27338",
      "tree": "4991529e4bc4362985c2659f179abfbc9def848a",
      "parents": [
        "a7e9bfafeb64b1142433a41b05ddc263cadc61e3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 17 10:19:44 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 17 10:19:44 2017 -0800"
      },
      "message": "ART: Fix oatdump dex export\n\nCheck for start index.\n\nBug: 35459241\nTest: m\nTest: m test-art-host-gtest-oatdump_test\nChange-Id: I655d7be93427fd219ec445187c1d49076883bd3e\n"
    },
    {
      "commit": "bb00f8164845cea70921cdf4817646fc3156f62b",
      "tree": "b64baca0a8bd924091f1896bea9e952c4e2cfcc5",
      "parents": [
        "69ed58348af817176734c5541f41737f00f9a1e9"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Feb 16 14:21:10 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Feb 17 09:36:04 2017 +0000"
      },
      "message": "Remove testing of prebuilt npic boot images.\n\nBecause we always compile prebuilt images pic.\n\nTest: test-art-host, test-art-target.\nBug: 33192586\nChange-Id: I7cd3d3bb7b6cfbf79c2e442f3793a4967f37d84c\n"
    },
    {
      "commit": "d776ff08e07494327716f0d2ea1a774b2ebfbca9",
      "tree": "cedf874dd494d881adc572a10a9d14bca852add6",
      "parents": [
        "3fb852a88d2a8ffaa87089752f4b1d5f9d6ce3c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 17 09:32:18 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 15 14:46:15 2017 -0800"
      },
      "message": "Add invoke infos to stack maps\n\nInvoke info records the invoke type and dex method index for invokes\nthat may reach artQuickResolutionTrampoline. Having this information\nrecorded allows the runtime to avoid reading the dex code and pulling\nin extra pages.\n\nCode size increase for a large app:\n93886360 -\u003e 95811480 (2.05% increase)\n\n1/2 of the code size increase is from making less stack maps deduped.\nI suspect there is less deduping because of the invoke info method\nindex.\n\nMerged disabled until we measure the RAM savings.\n\nTest: test-art-host, N6P boots\n\nBug: 34109702\n\nChange-Id: I6c5e4a60675a1d7c76dee0561a12909e4ab6d5d9\n"
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5",
      "tree": "be0e9fdeb90bcbad76b17b3aae4e746d977d80ee",
      "parents": [
        "518f373324f355f8e58440dfbc3f5a1f2244bde7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 18:32:04 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 19:34:54 2017 -0800"
      },
      "message": "Revert^3 \"Hash-based dex cache type array.\"\n\nAssert failing for \"earchbox:search\":\nF zygote64: class_linker.cc:4612] Check failed: handle_scope_iface.Get() !\u003d nullptr\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 85c0f2ac03417f5125bc2ff1dab8109859c67d5c.\n\nChange-Id: I39846c20295af5875b0f945be7035c73ded23135\n"
    },
    {
      "commit": "71953d82e802d8e8e1619562aea26ed3204bafd7",
      "tree": "2e06989273e3a8e98ccf6c3a40b431d5e05f20f8",
      "parents": [
        "ab58a629d6cfe75f0ed34326c2ca6364b2203885",
        "85c0f2ac03417f5125bc2ff1dab8109859c67d5c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 13 16:53:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 13 16:53:04 2017 +0000"
      },
      "message": "Merge \"Revert^2 \"Hash-based dex cache type array.\"\""
    },
    {
      "commit": "85c0f2ac03417f5125bc2ff1dab8109859c67d5c",
      "tree": "844952d237e35faa5c5a2357ab037366c8397115",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 02 16:42:38 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 10 11:23:11 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based dex cache type array.\"\n\nThe reason for the revert was fixed by\n    https://android-review.googlesource.com/332666 .\nWe now enable clearing dex cache types in test 155 from that\nCL. Also avoid an unnecessary store in LookupResolvedTypes()\nand prevent verifier from messing up the dex cache types.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit d16363a93053de0f32252c7897d839a46aff14ae.\n\nChange-Id: Ie8603cfa772e78e648d005b0b6eae59062ae729d\n"
    },
    {
      "commit": "e4530079672682ff3900d84c08b666a6a899d973",
      "tree": "89515676fc9882d04e317a1c7cf8f719a16804dc",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf",
        "697dc66994958573411e54474bd2034377e89769"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 09 17:30:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 09 17:30:21 2017 +0000"
      },
      "message": "Merge \"A bit of oatdump clean up\""
    },
    {
      "commit": "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf",
      "tree": "a16a1efaaadcb51001554a1ab829fbc456b104ae",
      "parents": [
        "e6dddf0f4f31db42c67661adc3845165c64d4c3d",
        "cd556b003adbb53739d4b3f43135e6a0ae69509a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 09 12:30:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 09 12:30:42 2017 +0000"
      },
      "message": "Merge \"Fix dex cache resolved types and class table mismatch.\""
    },
    {
      "commit": "cd556b003adbb53739d4b3f43135e6a0ae69509a",
      "tree": "a30c9f03071d87e1f75a0d0b8c2961d113ea767d",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 03 11:47:34 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 09 10:10:29 2017 +0000"
      },
      "message": "Fix dex cache resolved types and class table mismatch.\n\nRecord class table in ClassLinker::DexCacheData and use\nit in DexCache.setResolvedType() to store the type also\nin the initiating loader\u0027s class table if the dex file\nhas been registered.\n\nAlso throw InternalError when trying to register the\nsame DexFile with multiple class loaders. (Different\nDexFile instances referencing the same file are OK.)\n\nTest: 155-java-set-resolved-type\nTest: m test-art-host\nBug: 30627598\nBug: 34193123\nBug: 34839984\nChange-Id: Ia48acb300337c45880ea1459d2d32789546d67f4\n"
    },
    {
      "commit": "697dc66994958573411e54474bd2034377e89769",
      "tree": "b2402aeded2900e412d709ab45c0b38bd0ddd24c",
      "parents": [
        "e6dddf0f4f31db42c67661adc3845165c64d4c3d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 08 16:56:48 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 08 16:59:45 2017 -0800"
      },
      "message": "A bit of oatdump clean up\n\nFix typo, remove unused byte category.\n\nTest: test-art-host-gtest-oatdump_test\n\nChange-Id: Ia6f58d5dd17930fbea7fd9cb05edc014c190f080\n"
    },
    {
      "commit": "1e083796bec387bb398024e25219b1a82c3dcc96",
      "tree": "3cd828575052871dbab050337ee0cc9c23da6fe0",
      "parents": [
        "ef0a38085c4b5a22f866e771c33c6535e472795d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 08 13:30:04 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 08 13:37:13 2017 -0800"
      },
      "message": "Update oatdump to have inline info breakdown\n\nAdd a breakdown of where bytes are used for inline infos.\n\nBug: 34621054\n\nTest: test-art-host-gtest-oat_dump_test\n\nChange-Id: I5e44d17d631ff418a1c5baba166b1456211e9a33\n"
    },
    {
      "commit": "575d3e60c68b5cf481b615dde4a16283507b19ed",
      "tree": "4718f2747233e74268de21d804df9bfe0b7e4362",
      "parents": [
        "857acf51fbc5a931939c20e9e299c69676baf654"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 06 11:00:40 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 08 09:51:27 2017 -0800"
      },
      "message": "Clean up code info table layout\n\nPreviously:\nTable layout was computed multiple places like stack_map_stream,\nand getters. This made it difficult to add new stack map tables and\nmade the code hard to understand.\n\nThis change makes the table layout specified all inside of the code\ninfo. Updating the layout only requires changing ComputeTableOffsets.\n\nChanged the stack map inline info offset to be an index, so that it is\nnot require the inline infos are directly after the dex register table.\n\nOat file size for a large app: 94459576 -\u003e 93882040 (-0.61%)\n\nUpdated oatdump and fixed a bug that was incorrectly computing the\nregister mask bytes.\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I3a7f141e09d5a18bce2bc6c9439835244a22016e\n"
    },
    {
      "commit": "97c381e3ce34cd327c2ec35fa850bd0eaa9b697f",
      "tree": "4a21b2db89c578cdb2908547547e0546748eec7f",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:09:58 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:51:42 2017 -0800"
      },
      "message": "Separate art::Exec from utils\n\nThe rest of utils.cc does not depend on art::Runtime. This separates\nthe part dependent on that class, so that including utils.cc in the\nbuild does not require the entire Runtime. Another preparatory cleanup\nto getting tools to build on Windows.\n\nBug: 22322814\nTest: test-art\nChange-Id: I194ff363fc2ab87e5311ecea6973a2d0fad2621d\n"
    },
    {
      "commit": "1a20b6801f2432a42b906f0de01e7e9586526aec",
      "tree": "ae3faaf42a2b560601fc024ae16898a5dfa42261",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 31 14:25:16 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 12:46:43 2017 -0800"
      },
      "message": "Deduplicate register masks\n\nData is commonly shared between different stack maps. The register\nmasks are stored after the stack masks.\n\nOat size for a large app:\n96722288 -\u003e 94485872 (-2.31%)\n\nAverage oat size reduction according to golem -3.193%.\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I5eacf668992e866d11ddba0c01675038a16cdfb4\n"
    },
    {
      "commit": "d16363a93053de0f32252c7897d839a46aff14ae",
      "tree": "8823c6dd4641eae333aa7001203460757a515010",
      "parents": [
        "ac240396125911b52437a460a400c8b38be43a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 14:09:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 15:27:37 2017 +0000"
      },
      "message": "Revert \"Hash-based dex cache type array.\"\n\nReverting to work around some programs crashing with\n    Check failed: handle_scope_iface.Get() !\u003d nullptr.\nthough the reason for the failure not yet understood.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\nBug: 30419309\n\nThis reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8.\n\nChange-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82\n"
    },
    {
      "commit": "45aa598cd1773f5eb1705dec13bea059238e054d",
      "tree": "f5a6fd7445a74218547cd6c4e28dc835821c355e",
      "parents": [
        "f2042db1b41cc21cc540c5ad7d353cbe1e3a32df"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 18 02:15:09 2016 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 31 10:15:26 2017 -0800"
      },
      "message": "Deduplicate stack masks\n\nThe stack masks repeat often enough so that it is worth deduplicating\nthem.\n\nOat size for a large app:\n98143600 -\u003e 96722288 (-1.44%)\n\nBug: 34621054\n\nTest: test-art-host\nChange-Id: If73d51e46066357049d5be2e406ae9a32b7ff1f4\n"
    },
    {
      "commit": "ec7862283dd49f5a58d0ac45960ce27c2f7671b8",
      "tree": "26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6",
      "parents": [
        "c01d49091f4588777db5bf45345f388058caa99f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 20 16:24:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 10:21:16 2017 +0000"
      },
      "message": "Hash-based dex cache type array.\n\nTest: m test-art-host (Interpreter, Optimizing, JIT)\nTest: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT)\nTest: Nexus 6P boots\nTest: m valgrind-test-art-host\nBug: 30627598\nBug: 34659969\nBug: 30419309\nChange-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1\n"
    },
    {
      "commit": "12f1b99775bbf7dd82d0a897587ab6ed0e75ee22",
      "tree": "f8cb3a7334652e59577b7ff97a1805d1bf4ddd94",
      "parents": [
        "d8f6e6430b26bf199f4a52f0624becb7c29f3c19"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 19 18:00:45 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 27 10:04:05 2017 -0800"
      },
      "message": "Remove alignment bits in between stack maps\n\nSaves 0.65% of boot.oat size, probably similar on apps. Added\nBitMemoryRegion to avoid requiring adding state to StackMap. Added\ntest to memory_region_test.\n\nTest: clean-oat-host \u0026\u0026 test-art-host\n\nBug: 34621054\n\nChange-Id: I40279c59e262bd5e3c6a9135f83e22b5b6900d68\n"
    },
    {
      "commit": "bc5153409bd17453ccb0a9da15512177e2ff12bb",
      "tree": "bc570c39090028577738f81a596b929cec7c76dd",
      "parents": [
        "67edcfdb2151af66cdacf61e44c618c41601d0c8",
        "5e7c6a9223ddd11f800ea9b26fa72bece5c7d26c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 24 01:02:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 24 01:02:49 2017 +0000"
      },
      "message": "Merge \"Add more code info size dumping to oatdump\""
    },
    {
      "commit": "5e7c6a9223ddd11f800ea9b26fa72bece5c7d26c",
      "tree": "3f34f313b7b7a97eddda4ebab1e2f8c38864c3ff",
      "parents": [
        "c51842b8dd2ad57a1b05f31ab20ad01123443c50"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 17 16:38:30 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 23 15:13:10 2017 -0800"
      },
      "message": "Add more code info size dumping to oatdump\n\nHelps break down where oat bytes are being used, example output on\na large app:\n\nOAT FILE STATS:\nDumping cumulative use of 95784720 accounted bytes\nCode                            \u003d 68894196 (72% of total)\nQuickMethodHeader               \u003d  3071080 ( 3% of total)\nCodeInfoEncoding                \u003d  1226080 ( 1% of total)\nCodeInfoLocationCatalog         \u003d  1005716 ( 1% of total)\nCodeInfoDexRegisterMap          \u003d  5813389 ( 6% of total)\nCodeInfoInlineInfo              \u003d  2391251 ( 2% of total)\nCodeInfoStackMap                \u003d 13383008 (14% of total)\n  StackMapNativePc              \u003d  1607888 (12% of stack map)\n  StackMapDexPcEncoding         \u003d  1116724 ( 8% of stack map)\n  StackMapDexRegisterMap        \u003d  1277680 (10% of stack map)\n  StackMapInlineInfo            \u003d  1082720 ( 8% of stack map)\n  StackMapRegisterMaskEncoding  \u003d  5104960 (38% of stack map)\n  StackMapMask                  \u003d  3193034 (24% of stack map)\n  StackMapOther                 \u003d        0 ( 0% of stack map)\n\nTest: test-art-host, oatdump\n\nBug: 34621054\n\nChange-Id: I5daf0f1308d126b6a30928f523c6051585f1491f\n"
    },
    {
      "commit": "5e8d5f01b0fe87a6c649bd3a9f1534228b93423d",
      "tree": "a1441acc0021d170f412542ae2a1ae62794e7846",
      "parents": [
        "b0dde4397fa5b0756312b46bd18477a2c1f6a7da"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 18 18:03:43 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 23 15:50:01 2017 +0000"
      },
      "message": "Fix some typos in ART.\n\nTest: m build-art-host\nTest: m cpplint-art\nChange-Id: Ifc6ce3d0d645c4a8dca72dd483fc03fc05077130\n"
    },
    {
      "commit": "a2f526f889be06f96ea59624c9dfb1223b3839f3",
      "tree": "769f517e6664de0e89abeadf07a39d5410fcee42",
      "parents": [
        "64e50021845b1ad9d8851596e8aaddf18be217c2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 19 14:48:48 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 20 15:47:06 2017 -0800"
      },
      "message": "Compressed native PC for stack maps\n\nCompress native PC based on instruction alignment. This reduces the\nsize of stack maps, boot.oat is 0.4% smaller for arm64.\n\nTest: test-art-host, test-art-target, N6P booting\n\nChange-Id: I2b70eecabda88b06fa80a85688fd992070d54278\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "eca3eda2ccc121b13ce0e6d8c8c6c4040f7147b6",
      "tree": "4ff1300f5b66346f7c05d4f689161f2d7278b7fb",
      "parents": [
        "3f92bdea524fb1f1c70dab07bba082b4b1ac4699"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 09 16:26:44 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 14 13:07:09 2016 +0000"
      },
      "message": "Add ClassLoader to app-image roots.\n\nPreviously we were looking for class loaders by going\nthrough the dex cache type array. When we change the array\nto be hash-based, we may not actually find the class loader\nthat way.\n\nBug: 30627598\nTest: m test-art-host\nChange-Id: Ic91a81853fec9946e26bb8272d2a9120393a43bf\n"
    },
    {
      "commit": "9186ced255f2e7402646b5b286deebb540640734",
      "tree": "833c25fd3bbb47749265947705b4fc0f0c1ba796",
      "parents": [
        "aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 14:28:21 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 11:43:48 2016 -0800"
      },
      "message": "ART: Clean up utils.h\n\nRemove functionality provided by libbase. Move some single-use\nfunctions to their respective users.\n\nTest: m test-art-host\nChange-Id: I75594035fa975200d638cc29bb9f31bc6e6cb29f\n"
    },
    {
      "commit": "cc1b5357f83f0b787d51fbfde3fe870c8a2fa050",
      "tree": "253d23dba63e1003dc8e953002b994d01c97f181",
      "parents": [
        "5d0c3009fc56afdb4aeae5ee6dd98c3d1d2e7711"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 01 16:58:38 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 02 14:00:22 2016 -0800"
      },
      "message": "ART: Clean up ClassLinker\n\nTry to clean up and simplify ClassLinker.\n\nMove dex_lock to Locks. Remove dead code. Move single-use\ncode to user. Hide implementation details from header.\n\nTest: m test-art-host\nChange-Id: I58150fa9c2a9524f8304370270c2197d655cb3a8\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "7f07f5528be20b11f9bfc4010477ebf8bdfa33ab",
      "tree": "40645c302325982c0fc1e699e2bda6667734cbe0",
      "parents": [
        "da2d78ba97d177b80e0e9528362bcebc1fd31f0f"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 22 17:20:46 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 22 17:20:46 2016 +0000"
      },
      "message": "Fix build rules for statically linked oatdump on host.\n\nTest: m build-art-host\nTest: m test-art-host-gtest-oatdump_test\nBug: 29530992\nChange-Id: Iaa1ff13f0d42e5bc9670fc87da5b6e291482f626\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "6beced4c017826f7c449f12fac7fa42403657f2b",
      "tree": "f53614eeeaa92be9a7398e262d9440f59e3384a5",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 10:41:40 2016 -0800"
      },
      "message": "Change iftable to never be null\n\nSimplifies code generation by removing a null check. The null case\nis rare.\n\nRitzperf code size: 13107624 -\u003e 13095336\n\nAlso addressed comments from previous CL.\n\nBug: 32577579\n\nTest: test-art-host, run ritzperf both with CC\n\nChange-Id: I2b31e800867112869d7f0643e16c08826296979e\n"
    },
    {
      "commit": "e70dd560154ea38af87ce8b783ab6e382eb49d4b",
      "tree": "04b48b84f1c0efa59de9622182a6ebe671cf69b6",
      "parents": [
        "bda454e9a09018cde1ea2ee10f0fdd5bf2ad756b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Oct 30 21:03:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 01 13:27:57 2016 +0000"
      },
      "message": "Dump VerifierDeps in oatdump.\n\nbug:30937355\ntest: oatdump_test\nChange-Id: I344726a20f21a6c6986047c21278c753b9e24575\n"
    },
    {
      "commit": "0415b4e2169272f94f4aba9f3d56ec8105831f8b",
      "tree": "7caf8fce823d3b3ebe00cca06ce3f874786cae55",
      "parents": [
        "75dccb7238714358fca9e5e993e4daabe24af085"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 06 15:17:07 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 26 08:44:55 2016 -0700"
      },
      "message": "ART: Change InstructionSetFeatures to return unique_ptr\n\nThis makes clear the ownership of the object.\n\nTest: m test-art-host\nChange-Id: I55fa734f04bc3046d370f4dcf98ce6b17c59e234\n"
    },
    {
      "commit": "4acefd33064d37b41ca55c3c9355345a20e5f9c2",
      "tree": "31b31e531286108bc904b6c9a499f0607f355030",
      "parents": [
        "3667e26de4856cccf24bcbab54ad3349a05267c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 24 13:14:58 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 24 20:22:12 2016 +0100"
      },
      "message": "Encode quickening info in .vdex.\n\nWe quicken vdex files for performance reasons, but when taking an OTA,\nwe need to revert the quickening to the original instructions. As vdex\nshould be independent of the oat file and oat file versions, we encode\nthe quickening data in the vdex.\n\ntest: m test-art-host-jit m test-art-host-gtest\nbug:30937355\n\nChange-Id: I9a543a161b70aa1cff99f8fe6f5b5cab7a6c4d31\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "a1ff30fcb3c23b855872ef83b87e6ee19f03cb8e",
      "tree": "43d6533d594bc898ffeb016bc8895bd8da3efe1e",
      "parents": [
        "5065b09332328477d489b8ce26c3a1381e6f8d49"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 27 12:19:45 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 10 14:29:26 2016 -0700"
      },
      "message": "ART: Switch to name-based IMT hashing\n\nUse a hash scheme based on the name. This keeps IMT slots stable\nwhen dex tables change.\n\nThis incurs a severe performance penalty for computing the slot.\nMeasurements on host degraded from 30ns to an average of 85mus.\nHowever, calls in compiled code will not incur this overhead.\n\nAdded a test comparing similar interfaces in similar dex files.\n\nBug: 31594153\nTest: test-art-host\nChange-Id: Ibb86679ee94bec561984ea25826e56b1a7964cd0\n"
    },
    {
      "commit": "c4f3925490a73da8dc74884a1deb965d4ecaf14e",
      "tree": "7fe566827f8ab903af1acb5697c86a6efe3187b3",
      "parents": [
        "18f7de841fee3ca6f0c04e7caa57c3ce76b36231"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 18:32:08 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 06 13:55:58 2016 -0700"
      },
      "message": "Move remaining jobject related functions to use ObjPtr\n\nAlso added ObjPtr::DownCast.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I59c253211dc435579ffdfd49f856861ab13d262c\n"
    },
    {
      "commit": "556c9a2f182c4fcb9eba9dc4937095665f314a2b",
      "tree": "ffe6d3711b565330fb883953144ddd7603356804",
      "parents": [
        "e793bbb4a8a832423e7d6150b6a8fad75d63d36e",
        "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 00:39:07 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 00:39:08 2016 +0000"
      },
      "message": "Merge \"Rename ObjPtr::Decode to ObjPtr::Ptr\""
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "aad75c6d5bfab2dc8e30fc99fafe8cd2dc8b74d8",
      "tree": "c1b9e1eabcf35c5cbb5b4f46313a4e062f2d5d51",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 03 08:46:48 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 04 17:51:46 2016 +0100"
      },
      "message": "Revert \"Revert \"Store resolved Strings for AOT code in .bss.\"\"\n\nFixed oat_test to keep dex files alive. Fixed mips build.\nRewritten the .bss GC root visiting and added write barrier\nto the artResolveStringFromCode().\n\nTest: build aosp_mips-eng\nTest: m ART_DEFAULT_GC_TYPE\u003dSS test-art-target-host-gtest-oat_test\nTest: Run ART test suite on host and Nexus 9.\nBug: 20323084\nBug: 30627598\n\nThis reverts commit 5f926055cb88089d8ca27243f35a9dfd89d981f0.\n\nChange-Id: I07fa2278d82b8eb64964c9a4b66cb93726ccda6b\n"
    },
    {
      "commit": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\n"
    },
    {
      "commit": "6fa67a0261ba920614b3b262b2fa6173a885e6ef",
      "tree": "c91ccb903fa5df1e37426dbb29a6a6fbca50cb4a",
      "parents": [
        "dd26fef65a4640c77978c49d52eddcba632db7f4",
        "ebfc1ac6070eed23a392c1922ed8652e0dae268f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 30 22:20:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 30 22:20:10 2016 +0000"
      },
      "message": "Merge \"ART: Add odex IMT dumping to oatdump\""
    },
    {
      "commit": "5f926055cb88089d8ca27243f35a9dfd89d981f0",
      "tree": "8d87d400e36301eb648e19bcd225f13c469648ad",
      "parents": [
        "9e5739aaa690a8529c104f4c05035a657616c310"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 30 17:04:49 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 30 18:08:09 2016 +0100"
      },
      "message": "Revert \"Store resolved Strings for AOT code in .bss.\"\n\nThere are some issues with oat_test64 on host and aosp_mips-eng.\n\nAlso reverts \"compiler_driver: Fix build.\"\n\nBug: 20323084\nBug: 30627598\n\nThis reverts commit 63dccbbefef3014c99c22748d18befcc7bcb3b41.\nThis reverts commit 04a44135ace10123f059373691594ae0f270a8a4.\n\nChange-Id: I568ba3e58cf103987fdd63c8a21521010a9f27c4\n"
    },
    {
      "commit": "ebfc1ac6070eed23a392c1922ed8652e0dae268f",
      "tree": "bf6d6bc0bd1dde36b1adf254572fb5d8d1e0c9e6",
      "parents": [
        "93acbaca3b49f1c46216c0af74e21820918415fb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 29 19:50:27 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 30 09:43:38 2016 -0700"
      },
      "message": "ART: Add odex IMT dumping to oatdump\n\nSupport scanning oat files besides the boot image.\n\nBug: 31594153\nTest: m test-art-host\nChange-Id: I672d0534b8a8274a4430217656b68c55e4b31cc4\n"
    },
    {
      "commit": "428792553e59452d0b6fdbf2460072d697c966db",
      "tree": "c4d3c14944e772cd98f2fd76e4f41c2fbc3f6acf",
      "parents": [
        "ce157a6864bd346152bef1b66d050cfb144f56b5",
        "63dccbbefef3014c99c22748d18befcc7bcb3b41"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 30 14:10:21 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 30 14:10:21 2016 +0000"
      },
      "message": "Merge \"Store resolved Strings for AOT code in .bss.\""
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "63dccbbefef3014c99c22748d18befcc7bcb3b41",
      "tree": "60a498041bebff43bc1f43d438e3bc34a30887f7",
      "parents": [
        "6bee25976782a063d6b44f7718a6302761bf6403"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 21 13:51:10 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 29 15:58:43 2016 +0100"
      },
      "message": "Store resolved Strings for AOT code in .bss.\n\nAnd do some related refactorings.\n\nBug: 20323084\nBug: 30627598\nTest: Run ART test suite including gcstress on host and Nexus 9.\nTest: Run ART test suite including gcstress with baker CC on host and Nexus 9.\nTest: Build aosp_mips64-eng.\nChange-Id: I1b12c1570fee8e5da490b47f231050142afcbd1e\n"
    },
    {
      "commit": "9fded878f3dac316d5f6ef94f35e2b37b39c37b7",
      "tree": "2dd30094cf318072b75cc7dbba043f7d89a3255f",
      "parents": [
        "1c3ca75e63c67c1ab080ede937f21eb1f1184076"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Sep 25 16:08:35 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 28 13:30:01 2016 -0700"
      },
      "message": "ART: Add IMT stats and dumping to oatdump\n\nAdd stats and IMT dumping to oatdump to help in the derivation\nof a better hash.\n\nBug: 31594153\nTest: m test-art-host\nChange-Id: Ie0803860b53de8d3d68a1a596bf8771a9b96c7ff\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "d2c20805396fa6f424ed85546602bb84659fcca8",
      "tree": "5921893a12174d8a47289681ee3e0b3e88ab6a95",
      "parents": [
        "3174b68876642ac7f928440493dbf81ea90d43ea"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 19 12:57:18 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 19 15:04:12 2016 -0700"
      },
      "message": "Disable oatdumps device build\n\noatdumps is only supposed to build for the host.\n\nTest: mmma -j art\nChange-Id: Ie3ce9dd8340bfc226e7f3125491875f9c18b388a\n"
    }
  ],
  "next": "904614f008fa03b4443f1a0abdac1a1966805696"
}
