)]}'
{
  "log": [
    {
      "commit": "436f6c1e53b735ace36fbfe48c337ece07d76e62",
      "tree": "77cadf8842b3d33f0491441c4c2e0d873a391f40",
      "parents": [
        "9a292a1d28c11eba629f6bd62d475af83b155f9e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 13:28:42 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 24 17:55:27 2019 +0000"
      },
      "message": "Switch-interpreter: Add helpers to get opcode arguments.\n\nAdd trivial helpers to get opcodes arguments (A/B/C).\n\nEnsure the generic getters in Instruction can take\nadvantage of knowing the format at compile-time.\n\nAs the first step, I have simplified the code only where\nthe argument is used as index for SetVReg/GetVReg calls.\n\nTest: ART_USE_CXX_INTERPRETER\u003dtrue ./art/test.py -b --host\nTest: ART_USE_CXX_INTERPRETER\u003dtrue ./art/tools/run-jdwp-tests.sh \\\n      --mode\u003dhost --variant\u003dX32 --debug --no-jit\nChange-Id: I765c0eb16438806c3624fabe3aade040c7bb3387\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "f82eb6e0309a138ea11e309ad125675efc44125b",
      "tree": "6a66d8dc3262e963ac5559721a231df4ea1103d7",
      "parents": [
        "dc0156dd2e76d518bf1432ae95785ddff9144b78",
        "20c765f645fa9be77e045463c5064d41211a2815"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 10:02:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 10:02:20 2018 +0000"
      },
      "message": "Merge \"Revert^4: Add dex item for hiddenapi flags\""
    },
    {
      "commit": "c57c680b16eb4857eef16134a811f4c2ff9d95f0",
      "tree": "9527328cb8738878e1b727a48620769224dddb2c",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Oct 29 14:28:56 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Oct 29 14:39:24 2018 -0700"
      },
      "message": "Modernise code to use std::make_unique\n\nGenerated by clang-tidy.\n\nTest: m checkbuild\nChange-Id: Idb24960d9326c0d94ab5d04b18deb0894d23da9f\n"
    },
    {
      "commit": "20c765f645fa9be77e045463c5064d41211a2815",
      "tree": "dcb9dfb6bf5363d1e933589f22339dc999b96703",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Oct 27 21:45:15 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sun Oct 28 20:00:03 2018 +0000"
      },
      "message": "Revert^4: Add dex item for hiddenapi flags\n\nMove hiddenapi access flags to own data section so as to:\n(a) increase amount of information stored per method/field\n(b) use encoding which can be supported long-term.\n\nThe dex item is implemented as:\n - array of offsets indexed by class def index\n - streams of uleb-128 encoded flags.\nOffsets in array point to the beginning of the flags stream\nfor the given class def. Flags are encoded in the same order\nas fields and methods are encoded in class data. Zero offset\nmeans that the class either does not have class data, or all\nof its flags are zero.\n\nThe patch updates:\n(a) libdexfile with data structure declarations and accessor\n    methods,\n(b) hiddenapi tool to create the new item from hiddenapi lists\n    and insert it into the given dex file,\n(c) dexlayout to copy the flags into compact dex,\n(d) dex file verifier to verify the item.\nIt also removes skipping of verification for boot class path\ndex files as those now pass DexFileVerifier, and removes the\nneed for removing the flags for JVMTI.\n\nThe size increase is 450 KB.\n\nThis reverts commit d33d318685ec4a1c9e7995c914c104ab6487513b.\n\nChange-Id: Id00e0efb38ee1eab8d7ed5c645a7778b6b94b849\nTest: phone boots\nTest: m test-art\n"
    },
    {
      "commit": "d33d318685ec4a1c9e7995c914c104ab6487513b",
      "tree": "3bb8a93f499ac537d445e90533598571f3d2d120",
      "parents": [
        "fe3a979f6214e2ea94a9aed4c573c6a6f64c7096"
      ],
      "author": {
        "name": "Luman Qu",
        "email": "quluman@google.com",
        "time": "Fri Oct 26 16:53:25 2018 +0000"
      },
      "committer": {
        "name": "Luman Qu",
        "email": "quluman@google.com",
        "time": "Fri Oct 26 16:53:25 2018 +0000"
      },
      "message": "Revert \"Revert^2: Add dex item for hiddenapi flags\"\n\nThis reverts commit fe3a979f6214e2ea94a9aed4c573c6a6f64c7096.\n\nReason for revert: Caught by droidcop https://b.corp.google.com/issues/118481351\n\nChange-Id: I17cc3586c9ae3b49839633d9543edce2937c388d\n"
    },
    {
      "commit": "fe3a979f6214e2ea94a9aed4c573c6a6f64c7096",
      "tree": "b31c1748dcd30a5bf76c2186b4c0124fb18b9dd6",
      "parents": [
        "d9a0437b0d6cb1438bf21284a2502cbfe293db06"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 25 17:24:38 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 25 17:25:17 2018 +0000"
      },
      "message": "Revert^2: Add dex item for hiddenapi flags\n\nMove hiddenapi access flags to own data section so as to:\n(a) increase amount of information stored per method/field\n(b) use encoding which can be supported long-term.\n\nThe dex item is implemented as:\n - array of offsets indexed by class def index\n - streams of uleb-128 encoded flags.\nOffsets in array point to the beginning of the flags stream\nfor the given class def. Flags are encoded in the same order\nas fields and methods are encoded in class data. Zero offset\nmeans that the class either does not have class data, or all\nof its flags are zero.\n\nThe patch updates:\n(a) libdexfile with data structure declarations and accessor\n    methods,\n(b) hiddenapi tool to create the new item from hiddenapi lists\n    and insert it into the given dex file,\n(c) dexlayout to copy the flags into compact dex,\n(d) dex file verifier to verify the item.\nIt also removes skipping of verification for boot class path\ndex files as those now pass DexFileVerifier, and removes the\nneed for removing the flags for JVMTI.\n\nThe size increase is 450 KB.\n\nThis reverts commit d9a0437b0d6cb1438bf21284a2502cbfe293db06.\n\nTest: phone boots\nTest: m test-art\nChange-Id: I224bf1b587529f36ea00a666680c4e4c8ca16a42\n"
    },
    {
      "commit": "d9a0437b0d6cb1438bf21284a2502cbfe293db06",
      "tree": "3bb8a93f499ac537d445e90533598571f3d2d120",
      "parents": [
        "fd2aa2bf72563870c9261f248f992a20ac4837a8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 24 12:34:06 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 24 12:37:49 2018 +0000"
      },
      "message": "Revert \"Add dex item for hiddenapi flags\"\n\nThis reverts commit 0dbc363f32d075017e1c4fb5e17715e3f12d0157.\n\nReason for revert: marlin running out of space\n\nChange-Id: I80218af6408812b639b7c807bf8cb2a1d5239d94\n"
    },
    {
      "commit": "0dbc363f32d075017e1c4fb5e17715e3f12d0157",
      "tree": "950dfed748f63863db6b95d7b854940171b544c6",
      "parents": [
        "62ada4cd2c9a7ef5d1ab4c538d660f8a6a7f7571"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 10 09:14:30 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 23 14:51:01 2018 +0100"
      },
      "message": "Add dex item for hiddenapi flags\n\nMove hiddenapi access flags to own data section so as to:\n(a) increase amount of information stored per method/field\n(b) use encoding which can be supported long-term.\n\nThe dex item is implemented as:\n - array of offsets indexed by class def index\n - streams of uleb-128 encoded flags.\nOffsets in array point to the beginning of the flags stream\nfor the given class def. Flags are encoded in the same order\nas fields and methods are encoded in class data. Zero offset\nmeans that the class either does not have class data, or all\nof its flags are zero.\n\nThe patch updates:\n(a) libdexfile with data structure declarations and accessor\n    methods,\n(b) hiddenapi tool to create the new item from hiddenapi lists\n    and insert it into the given dex file,\n(c) dexlayout to copy the flags into compact dex,\n(d) dex file verifier to verify the item.\nIt also removes skipping of verification for boot class path\ndex files as those now pass DexFileVerifier, and removes the\nneed for removing the flags for JVMTI.\n\nThe size increase is 450 KB.\n\nTest: phone boots\nTest: m test-art\nChange-Id: Idec301db540cf164fccc97136d1df4abb8f758bd\n"
    },
    {
      "commit": "693eee9c7c9fe66ac709613f2480b92c25811f8e",
      "tree": "935ce6304cdcddfe0911d74f93ace10147047e83",
      "parents": [
        "e080222ba63946f57423df8ddc9dc33a3346f29b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 19:51:10 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 09:07:45 2018 -0700"
      },
      "message": "ART: Add Size() to CollectionMap\n\nAdd a Size() override. Make base function pure to avoid future errors.\nFixes clang-tidy\u0027s bugprone-virtual-near-miss.\n\nBug: 32619234\nTest: mmma art\nChange-Id: I4112ea4d652a39a6b18712fb649823f086dd5b38\n"
    },
    {
      "commit": "f73cacaae3d8f89327d8886b37792a849cabd9ac",
      "tree": "79047e31d512d065db47af7e68fa155c1f638f11",
      "parents": [
        "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 17:19:07 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:09:40 2018 +0100"
      },
      "message": "Remove superfluous \u0027virtual\u0027 specifiers in ART.\n\nRemove \u0027virtual\u0027 specifier on methods already bearing the \u0027override\u0027\nspecifier.\n\nTest: mmma art\nChange-Id: I114930969a5ca048d88de9ecd18e2c6403593e31\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "a34812c0801b8b991b5b5b1d0d5e5a4ccf2bf0ac",
      "tree": "7a45987265ef96b06bfb8d7761f7a83a16c340b5",
      "parents": [
        "605339045d347074b9149c0185fe2ca7fafe470d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 17:10:43 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 18:03:24 2018 -0700"
      },
      "message": "Move dex_file_verifier_test and dexlayout to ClassAccessor\n\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I01d53eaf45d28fd762800c2716d6bf2dd3c9ad9e\n"
    },
    {
      "commit": "2b5a38f8fbdecf9c82f06ec108c7ee7463bd8093",
      "tree": "51e3648106f2f74196f9476209a7a649e7885dcb",
      "parents": [
        "5f7c6a1fc35e04b75e1154620c5fd0ab8758e62c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jun 14 15:13:04 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jun 15 10:55:56 2018 -0700"
      },
      "message": "Refactor ownership in dex_ir\n\nRemove some unnecessary generality, consolidating and simplifying the\ninterface to Header and moving all the construction code out of dex_ir.\nThis makes item ownership exclusively controlled by the collections\nthemselves, preparing for in-place construction.\n\nBug: 33017139\nTest: make -j 40 test-art-host-gtest\nChange-Id: Ice461ae89ef9f8bed3350780e8dd6283bc6eca1b\n"
    },
    {
      "commit": "d83437cba0eaac9797def3c09f7812e25fdcd6ac",
      "tree": "e29156febe965efb57099b232d9b85342db39a41",
      "parents": [
        "a316f9129a698ccb995b035f8781f93c58981893"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jun 11 14:06:23 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jun 13 11:08:05 2018 -0700"
      },
      "message": "Use factory pattern for dex_ir objects\n\nIn preparation for memory improvements, make dex_ir API more friendly to\npre-allocated or in-place type allocation.\n\nBug: 33017139\nTest: make -j 50 test-art-host\nChange-Id: I09b67e279a04535b175433287ce98ecbdc37f7a3\n"
    },
    {
      "commit": "7517555480074dcbd5c6d9472d5a394ce0e88023",
      "tree": "8b9f74989f3e94d810ed99590e8c207a5dc551c4",
      "parents": [
        "bf9eedaac5a9723f022150d0f5fd58cb91779497"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 11:23:01 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 26 14:33:40 2018 -0800"
      },
      "message": "Add dexlayout class filtering\n\nFor fixed_up_dexfile, the returned dex only needs to contain a single\nclass. This CL adds filtering during IR creation to only contain that\nclass. This speeds up wifi tests from 25s to 15s on marlin.\n\nBug: 63756964\nBug: 72064989\nTest: mm test-art-host-gtest-dexlayout_test -j64\nChange-Id: I3648ac886b377d95e33e5b40a63a34c2a9dbde58\n"
    },
    {
      "commit": "c3a22aa19bbe35ff8447460b29e07d42937a39de",
      "tree": "9f795deb249eebcf573dfe07a98d70c1d52ce898",
      "parents": [
        "d3233abdf14f173bb99e3905e8543ffff845230e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 19 18:58:34 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 24 19:53:20 2018 -0800"
      },
      "message": "Add shared separate data section for compact dex\n\nAdded a shared dex data buffer for compact dex files, this buffer\nis referenced by all compact dex files in a vdex file. Repurposed\nthe existing data_off / data_size fields in the header.\n\nAfter the shared buffer is filled up, it is placed after the dex\nfiles in the oat writer and the dex file headers are fixed up to have\nthe correct offsets / sizes to the shared buffer.\n\nMotivation:\nMake it easy to deduplicate data across dexes.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I17855a0c78b20be3d323d12dedb9c695962be3ed\n"
    },
    {
      "commit": "f6e31474096a3c25b2d0c872fc120d7479b62367",
      "tree": "72d8cee843375af8b8c8c7919ae930c9e5df2bfd",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 28 13:32:08 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 11:41:47 2018 -0800"
      },
      "message": "Fix default method verifier check for compact dex\n\nAdd a feature flag and mark if the compact dex file was\ngenerated from a dex file that supported default methods or not. This\nis done to maintain the existing verifier behavior differences for\ndex files that do and don\u0027t support default methods.\n\nFixed callers to use a virtual function instead of always checking\nthe dex file version.\n\nRe-enabled run-test 975.\n\nBug: 70930171\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I46ac5d3cde0d0c9f41cbc68cccaf954b531e0edf\n"
    },
    {
      "commit": "2f36d2fdf277e2579e55cd3f54c1683c1b1a84bf",
      "tree": "58bfa3f06e9ab607dd542c83ec0e2088154097a0",
      "parents": [
        "e6779fde5a3c0a8bb484a61398da439a37d25b92"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 15:45:25 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 17:10:00 2017 -0800"
      },
      "message": "Write link data for dexlayout\n\nInstead of not writing out the link data and leaving an invalid\nlink_offset, write it out. Fixes dex verifier failures for a few\nAPKs.\n\nAdded test.\n\nTest: test-art-host\nBug: 69561363\n\nChange-Id: Iec1c331f74f9fd58658d4c13465a3bcb6295ce24\n"
    },
    {
      "commit": "3e0c5170c87b39c88c7f3b5fbd7b07e60547bfd7",
      "tree": "cbb52ff88b9a643d0a08a2c890a15f3442db13d5",
      "parents": [
        "cb90e3a29041ea55c4b5eb3d1477aa360381a1f1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Nov 12 12:58:40 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 13:34:53 2017 -0800"
      },
      "message": "Add logic for calculating offsets during writing\n\nDelete all the offset related layout logic, move the logic to\nwriting. Layout is now controlled by changing the order of the data\nvectors.\n\nCalculate all offsets during writing instead of reading. This allows\nmore flexible layout optimizations without needing to be as careful\nabout offsets in other sections changing.\n\nMaintained logic for using existing offsets in the case where\nchanging the layout is not required.\n\nAreas to improve:\nHow to size the memmap, do we want 2 passes? Currently the algorithm\nreserves 10% extra space in case required. This is sufficient for top\n1000 apps in the play store. Will consider a two pass approach later.\n\nBug: 63756964\nBug: 68948395\nBug: 68867570\nBug: 68864106\nBug: 68864168\n\nTest: test/testrunner/testrunner.py --host -j40\nTest: test-art-host-gtest\nTest: Dexlayout speed profile top 1000 apps\n\nChange-Id: I7dee869da3a010559547f8cfdf93e9aa4c3f47ff\n"
    },
    {
      "commit": "24066ec509949f777a4c6e61ef631de33bfdc28a",
      "tree": "5620a9f0ef3f476ada8b1763a1854877d136f022",
      "parents": [
        "31275df5ea1b91ed668618d6ec64a76d67cee73c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Oct 21 16:01:08 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 26 09:35:02 2017 -0700"
      },
      "message": "Re-enable dex verifier after dexlayout\n\nDisabled class def ordering since it violates the spec regarding\nsuperclasses occurring before subclasses. This fixes a dex verifier\nfailure.\n\nAdjust the data section size based on string data and code item\ndiff. This fixes dex2oat_image_test failing dex file verification.\n\nFixed handling of unreference annotations. Previously, these would\nnot get written back out. This resulted the dex file verifier\nprematurely ending for annotations during CheckIntraSectionIterate\nand then complaining about non zero padding (that was actually an\nannotation).\n\nTest: test-art-host\nBug: 63756964\nBug: 68208404\n\nChange-Id: Id2b9b360640c360ac562826e9193971f7bb30eea\n"
    },
    {
      "commit": "5daee90642aa44ac67e7e0c200204c86fa5425a8",
      "tree": "d520c12b41177244b4e0c0b3099be96ac6f91647",
      "parents": [
        "acac09dad3d5aa3922e6cdf54ff2e4fa6f176484"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 27 18:00:38 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 04 14:34:29 2017 -0700"
      },
      "message": "Add dexlayout support for call sites and method handles.\n\nTested that it works with Orion\u0027s test dex files. Can generate output\nfiles that match the test input files.\n\nUnit tests to follow.\n\nBug: 37732062\nTest: mm test-art-host\nChange-Id: Icb76cf858d29e52022f98ac625bd35c3bd763e9f\n"
    },
    {
      "commit": "ea7c62983beec6a5a2a6676cc910a436b20ae92c",
      "tree": "cc41732efa47b2301f463f2f9fcabe957ed89c0c",
      "parents": [
        "b46782abf6752ccf688b0d9f5b4bb83e5d33793b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 14 18:10:16 2016 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 22 09:12:14 2016 -0800"
      },
      "message": "Dexlayout cleanup and refactoring.\n\nCreated option to output to a mem map in preparation of hooking\ndexlayout into dex2oat.\n\nTest: mm test-art-host-gtest-dexlayout_test\nBug: 29921113\nChange-Id: Id42ef15cb8f83cc8d05b025b7647a4338e9b96b0\n"
    },
    {
      "commit": "a86210038524cecd0d96d6ba6f8f116da348a25c",
      "tree": "3c5c243a9530f3cd64ca12b94ea2e2a4ada34260",
      "parents": [
        "b4f0076e7faca1382e0b2f68557b71b11ac34a9d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 04 18:13:44 2016 +0000"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 04 14:21:13 2016 -0700"
      },
      "message": "Revert \"Revert \"Add dex file writer to dexlayout tool.\"\"\n\nThis reverts commit fd1a6c2a08ca3e2476b7424b9b0fa58e73b29e87.\n\nFixed output being clobbered during DexLayoutTest.DexFileOutput.\nOption added to put dex output file in scratch directory.\n\nBug: 29921113\nTest: mm test-art-host-gtest-dexlayout_test\n\nChange-Id: I9e6b139cf06aaa39c83ad1e74329db266464a8e4\n"
    },
    {
      "commit": "cdcfde74ccd72c60dc9456013e32d8b00fefdee6",
      "tree": "1c29e986405c23285771a31250c5f26857f41046",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Sep 26 07:44:04 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 04 10:47:24 2016 -0700"
      },
      "message": "Option to gnuplot dex layout\n\nDisplay the portions of the dex file that are accessed by the classes in\nthe dex file.  Optionally limit the display to only those classes that\nare present in a runtime profile.\n\nBug: 29921113\nChange-Id: I2a998fba448fec6c23941d3b4358531b1336e1b3\nTest: dexlayout test\n"
    },
    {
      "commit": "fd1a6c2a08ca3e2476b7424b9b0fa58e73b29e87",
      "tree": "1f3e846a8cf6eef30683dcad63c4dc3ce39c7058",
      "parents": [
        "69b58cf399c3507ca3debf9ec9b2db3c5a0fe7f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 04 11:01:17 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 04 11:01:17 2016 +0000"
      },
      "message": "Revert \"Add dex file writer to dexlayout tool.\"\n\nBug: 29921113\n\nThis reverts commit 69b58cf399c3507ca3debf9ec9b2db3c5a0fe7f2.\n\nChange-Id: I8bf9b1222d99489059e45f47d220396a853170a4\n"
    },
    {
      "commit": "69b58cf399c3507ca3debf9ec9b2db3c5a0fe7f2",
      "tree": "eeea96181b252426bc7d9363c62cf22c9aac100a",
      "parents": [
        "d295618ac764b334424b0bc7a592337edef19783"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 22 18:02:49 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Oct 03 14:33:25 2016 -0700"
      },
      "message": "Add dex file writer to dexlayout tool.\n\nAll sections are being written out properly.\nThere is one small difference:\n  - unindexed string data is not written out\n\nBug: 29921113\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: I3872327526a350f33f0f851516a389622c1a54ae\n"
    },
    {
      "commit": "3ab96b460684781af58b3f9c5b9fb0e370de6b50",
      "tree": "8165154e9ec5d6977ec3b2405f6b4ba0a6731b7e",
      "parents": [
        "6a40fc9bbb9421f78ffd7a9cce7f9acff3aa7d0d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Sep 09 18:35:01 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Sep 19 18:42:34 2016 -0700"
      },
      "message": "Dexlayout changes to support offset/size output of items.\n\n- Created offset \u0026 size fields for items, initially populated with\n  values from original dex file.\n- Created index field for indexed items in header.\n- Created Item objects for StringData and TypeList.\n- Created Collections container to hold unique_ptrs for all objects\n- Reorganized EncodedArrayItems to make it easier to collect them\n- Added relevant annotations-related items to Collections\n- Some size calculations and section offsets left as TODO\n\nBug: 29921113\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: Id812f104c1930a3ee381e885f353a9a49f29ac9b\n"
    },
    {
      "commit": "72359225691975281f0bd5a0a19b07a0b2e6b498",
      "tree": "228df961b259fa72be55950a52ad7b357546e369",
      "parents": [
        "ef858c25d043074fe572c5d578e08af12e055733"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 07 13:04:01 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 07 15:56:40 2016 -0700"
      },
      "message": "Fix some memory leaks found by valgrind.\n\nBug: 29921113\nChange-Id: If70d475a3317751d206658c5794a32d78bc33e47\nTest: valgrind-test-art-host-gtest (with --trace-children\u003dyes)\n"
    },
    {
      "commit": "853a8e10844b9b9e791c6d40e5d332cd38af97d6",
      "tree": "7339753d96f5e346c28a5c57a561a9464d83e719",
      "parents": [
        "3e65825978056adf7cbad646d4ab92c161a60e09"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Sep 01 13:03:50 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 06 14:06:23 2016 -0700"
      },
      "message": "Separate DexIr building from constructors.\n\nMove all the construction from DexFile out of the constructors of the\nbasic IR.\n\nBug: 29921113\nChange-Id: I3f79c104ce7183ddde73f143c047061416009a54\nTest: test-art-host-gtest\n"
    }
  ]
}
