)]}'
{
  "log": [
    {
      "commit": "c17b7d80652765750fa7f2baf236061014b23f93",
      "tree": "1be2a3330aab9d6b216bd90685e0133ce5bd597e",
      "parents": [
        "2a66809d28c9ee1cbabe52991dbf526095c96c04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 14 14:00:04 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 15 09:27:08 2018 -0700"
      },
      "message": "Add owned section for CompactDex\n\nThe owned section is the part of the shared data section owned by\na given dex file. This enables efficiently attributing an offset to\na dex file.\n\nBug: 74443371\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I2de9a281e18b02a20c3dcf5f484eacb591220cdc\n"
    },
    {
      "commit": "5e3cfa295a44d4f1a0eb26134c6f866b27245a9f",
      "tree": "fa079fd6d865b1270a88248cd9919902ab387f46",
      "parents": [
        "1efb431b478bbae9d959fad6a58863a4c1b0b47f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 16:53:37 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 18:17:21 2018 -0800"
      },
      "message": "Generalize CompactDexDebugInfo offset table\n\nRenamed the class to CompactOffsetTable.\n\nMotivation: Use this table for quicken info offsets too.\n\nBug: 72608794\nBug: 63756964\nTest: test-art-host-gtest\nChange-Id: Idcb5355d8a5e4354bc3694152a7270047bed9d0a\n"
    },
    {
      "commit": "05f90d133d288b524eaa9deacdc56e7d29ea9f99",
      "tree": "89153d3bccc0aba04423f5712fee09e768d5aa2c",
      "parents": [
        "0efe3243d4f1878e8220ff8bc469beee9ac90518"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 13:47:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 14:56:50 2018 -0800"
      },
      "message": "Avoid generating cdex for dex files with duplicate methods\n\nFor the cases where two different method have the same code item or\ndebug info, avoid generating cdex and write the input dex into the\noat file isntead.\n\nTest: test-art-host-gtest\nBug: 72997076\nBug: 72100771\nBug: 72100668\nBug: 63756964\n\nChange-Id: I5dfe2b47b2c908921c8421367536c2d950186ac6\n"
    },
    {
      "commit": "83784ca898f823e6f02c86996626b5e48e328d85",
      "tree": "6e49bf5bdc66c959d820f02dc8c3908725ecdec8",
      "parents": [
        "540d4be4514b3d02e046d5faebd3cb55a8ea9eff",
        "a27af08ee0c5f307366be73363369cc1d95d6d4c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 06 01:16:13 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 06 01:16:13 2018 +0000"
      },
      "message": "Merge \"Handle code item overruns in cdex code item write\""
    },
    {
      "commit": "a27af08ee0c5f307366be73363369cc1d95d6d4c",
      "tree": "b419ec0515085f2a362da9e123f6531b4d1162b0",
      "parents": [
        "ca6f1c0cb7655e90237583c1b6b771d3c8aae95d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Feb 03 16:12:23 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 05 14:30:15 2018 -0800"
      },
      "message": "Handle code item overruns in cdex code item write\n\nFor the case where code items overrun, use a safe iterator to not\ncrash.\n\nBug: 72315996\nBug: 63756964\nTest: test-art-host-gtest\n\nChange-Id: I2aa8d127aad09ed3c8e6c9f9cc71c4b5646a5307\n"
    },
    {
      "commit": "279e3a3499d208daf467a1690b111dfb06f3e96e",
      "tree": "74c7d6d860bea25aabae47dc0ca95bafb0571f8e",
      "parents": [
        "ca6f1c0cb7655e90237583c1b6b771d3c8aae95d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 24 18:17:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 05 13:38:20 2018 -0800"
      },
      "message": "Enable code item deduping\n\nDedupe code items if they have the same contents, this is safe\nbecause of the fixed quickening logic.\n\nRemoved duplicate code items in ManyMethods that caused the startup\nmethods section to be empty in dex2oat_test.\n\nTo avoid errors related to quickening and compilation of shared code\nitems, quickening is currently disabled for shared code items.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I7c62eb746785d787c5269effd396f7be4859d3a6\n"
    },
    {
      "commit": "807b21b2364eee0770d1e24e5f34d71014afbac2",
      "tree": "5b505e6ae4a4cd67b3a4684f9cb7c2803440f6ca",
      "parents": [
        "7a5a3036f9d8f08871c1c6e03dfa25d3641593e2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 29 05:18:24 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 29 06:06:49 2018 -0800"
      },
      "message": "Clean up some compact dex comments\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: If8748db7a9e68b6a82656fd9ec8fd8072e92af97\n"
    },
    {
      "commit": "44720c6fb84f85bd7628a020ed1097e744f0b660",
      "tree": "e6a2d4af4dc64e45b1847ea3656894fad7c42e6c",
      "parents": [
        "3288ac58275f77d9b530bf21c0f4290540d3e831",
        "9b302bf57c9966dcac51582d83ea7606666c500b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 21:29:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 25 21:29:39 2018 +0000"
      },
      "message": "Merge \"Fix method handles using wrong section\""
    },
    {
      "commit": "9b302bf57c9966dcac51582d83ea7606666c500b",
      "tree": "032beea38c2c75dddec0fb19399791c8d3f25953",
      "parents": [
        "816ca4d083ae9c439be587a0192906fe1510a123"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 13:08:08 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 13:09:19 2018 -0800"
      },
      "message": "Fix method handles using wrong section\n\nFor compact dex, the method handles were using offsets relative to\ndata section instead of main section. Fixed this code and the map\nlist offset logic in InitializeSectionsFromMapList.\n\nTest: test/run-test  --always-clean --dex2oat-jobs 4 --host --prebuild --compact-dex-level fast --optimizing --no-relocate --runtime-option -Xcheck:jni 979-const-method-handle\nBug: 63756964\nChange-Id: I9e6ddfd77da99ae1aedef7591536be190ff60904\n"
    },
    {
      "commit": "b81ecadb57557ed8e3225ae6765e2c7537ce0dda",
      "tree": "9999e0bf45072ba1445619ec6d54b9e0a9b52e85",
      "parents": [
        "b7b2957f79a33fc15ee48ff6709e9b080a266b07"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 23 22:08:26 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 17:27:35 2018 +0000"
      },
      "message": "Add deduping for string data and debug infos\n\nAdd multidex deduping of string data and debug info data.\nCode items are still not deduped since they do not work well with\ndex2oat unloading.\n\nReduces dex size by average of 2.96% on golem compile benchmarks.\n\nTest: test-art-host\nBug: 63756964\n\nChange-Id: I3f358779820adcedebf72c2ad28c367926b72ceb\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": "e6b6ff89e3cac4e443e731fbcdd957e32c7bc189",
      "tree": "64a48abd2a97b1ece83b014fa02cd5c40b580eb4",
      "parents": [
        "49971eb50c0213b7506bdd29954a6a4423e6426a"
      ],
      "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": "Tue Jan 23 12:08:13 2018 -0800"
      },
      "message": "Revamp dexlayout writing functions\n\nAdded some stream abstractions to make it easier to split apart\nthe main part of the dex file compared to the data one.\n\nMoved to using a vector based stream instead of a mem_map one.\n\nMotivations:\nMake it easy to separate data into a separate stream for multidex data\ndeduping.\nRemove upper bounds on dex expansion that would SIGSEGV if the writer\nwent over the limit.\n\nBug: 72051652\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic622a4142b161566d149166a1767434ff4cc7fec\n"
    },
    {
      "commit": "66c9df1ed77f9da986dcf87f6b9bc1a2e86c3385",
      "tree": "b4dbd3e9be729b7dc2e305d44d608379dddc701b",
      "parents": [
        "34554c9a6aadd66845a25d1b23a64759f6692e32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 14:45:20 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 16:24:41 2018 -0800"
      },
      "message": "Add logic for deduplicating in dexlayout\n\nAdded logic for dedeplicating blobs, this is only used for code items\nin compact dex for now. This currently provides 0.74% code size\nreduction on golem\n\nDisabled for now since quickening is fragile and does not play well\nwith deduped code items currently.\n\nFuture work is to fix quickening and dedupe after quickening to get\nthe most code size savings.\n\nTest: test-art-host-gtest\nBug: 63756964\n\nChange-Id: Iec770d9c1f5171288aca8329a6ca6992375101bc\n"
    },
    {
      "commit": "8740c66cbfbeb3b7f306279c843650c3b18f2dca",
      "tree": "f6c095c184fdf3e5fb2f243acdc818ce20e928a5",
      "parents": [
        "dcbe96b23b8be48d4cce799caf5a9a207b137f06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 14:50:02 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 11:24:02 2018 -0800"
      },
      "message": "Use efficient encoding for compact dex code item fields\n\nUse a compact format for compact dex code items. In the common case,\nthere are only 4 bytes worth of fields.\n\nThis is accomplished by shrining the fields and adding an optional\npreheader before each code item that describes fields that don\u0027t fit\nin the fast path case. The preheader may use up to 12 extra bytes.\nExperiments showed that the preheader is only non empty for ~1% of\ncode items.\n\nCompactDex code item:\n0-12 bytes: Optional preheader\n\u003cCode item pointer\u003e\n4 bits: register size\n4 bits: ins size\n4 bits: outs size\n4 bits: tries size\n11 bits: num code item units\n5 bits: preheader flags\n[Dex Instructions]\n\nStandard dex code item:\nSee: https://source.android.com/devices/tech/dalvik/dex-format\n\u003cCode item pointer\u003e\n16 bits: register size\n16 bits: ins size\n16 bits: outs size\n16 bits: tries size\n32 bits: num code item units\n[Dex Instructions]\n\nAlso change code item alignment to be 2 byte aligned for code items\nthat don\u0027t have payload instructions that require 4 byte alignments.\n\nResults (on golem).\nThe CL reduces vdex size by an average of 4.3%. Interpreter performance\nis 0.3-1% slower, but may be noise.\n\nTest: test-art-host\n\nBug: 63756964\n\nChange-Id: I836fd098063dd1573a3dfb6ac465a6d33d2cb2c9\n"
    },
    {
      "commit": "8892c6bd9235e7ae697039c901aaeea1597a7473",
      "tree": "fa10893a270bad91d3503a761f140cbe9c97a74c",
      "parents": [
        "210531f8775c89feb90d430cd5b6026b4cf8ef89"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 09 15:10:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:47 2018 +0000"
      },
      "message": "Move debug info offsets into a side table\n\nAdd a compact side table for figuring out the debug info offsets\nfor a given method index. This reduces dex size by ~1.2%.\n\nThe debug table is keyed by method index and has leb encoded\noffsets for the offsets. This means the table is smaller if debug\ninfos are encoded by method index order.\n\nTo prevent expansion for method indicies without debug info, there\nis a bitmap that specifies if a method index has a debug info offset.\n\nMotivation: Reduce code item size and allow more deduping in the\nfuture.\n\nTest: test-art-host\nBug: 63756964\n\nChange-Id: Ib983e85c1727f58c97676bde275f4a9756314da0\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\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": "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": "f95a75e83782eb2bd6d778db516ad66388542517",
      "tree": "a4c9d4628a05284699990bbd374497e7b0f01da7",
      "parents": [
        "f404dda8a48f2fac24ca3525257db7bc9157ba61"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 03 15:25:52 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 06 11:51:45 2017 -0800"
      },
      "message": "Refactor compact dex writing\n\nRefactor compact dex writing into compact_dex_writer.cc, change\ndexlayout writing logic to use the header structs instead of having\nan array with indicies.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I58879aefc1672c965789ee539450986c9d830c82\n"
    }
  ]
}
