)]}'
{
  "log": [
    {
      "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": "01b47b046b01ec68696f8ff61b5326cdd3af348e",
      "tree": "e526306fc89bf6fb04ff914e24343dde0369e98c",
      "parents": [
        "dcab11d06860ae1e23d03926adb6c31f75404032"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Feb 03 12:09:57 2017 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 08 10:15:06 2017 -0800"
      },
      "message": "Inlining a few small methods based on profiling dex2oat with perf.\n\nTest: m test-art-host\nChange-Id: I6313158e59592d8d132154523be9c82dda3c7eb8\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": "c420a805fbc0207888a2fa04b4e9a17490621cc3",
      "tree": "c2f2e1f7b574e3de0c5dc7d4d44bcffd0b96a4bb",
      "parents": [
        "aff5505d85612621bd112d9af1ba4cc31a4619d1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 14 15:16:19 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 14 15:36:39 2017 -0800"
      },
      "message": "Address some comments for aog/333864\n\nMostly comment changes.\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I95f77651d47a8d0c71d580778d1126ab4aa1d751\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": "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": "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": "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": "3ceedc0c3e89e5a1bb44ac9bb0eb1ea2e8f4675a",
      "tree": "80cdb6ff5c1fe8370d4b6ca5bca4035350f3803b",
      "parents": [
        "f34077c96af3389e8eae65252d4c5d51cf630039"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 25 11:11:02 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 25 11:37:27 2017 -0800"
      },
      "message": "Refactor and optimize memory region bit functions\n\nMove optimized bit reading from FieldEncoding to MemoryRegion,\nadded optimized StoreBits to MemoryRegion.\n\nCompilation of a large app on host:\nBefore:\nTime -j1: 31.897s\n2.00% art::MemoryRegion::StoreBits(unsigned long, unsigned int, unsigned long)\n\nAfter:\nTime -j1: 29.620s\n0.39% art::MemoryRegion::StoreBits(unsigned long, unsigned int, unsigned long)\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I0509613da83cc5741d5cfada3f8a8af503784e9e\n"
    },
    {
      "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": "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": "ccfa88550333980efd5991602c9557b363474a39",
      "tree": "993d9baa85c04fac5df8a252efe1c36d301e2fa5",
      "parents": [
        "a7e64f00df89dfd984a8798548af46c7d0657511"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jan 18 14:51:59 2017 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jan 18 17:02:39 2017 -0800"
      },
      "message": "Always inline some methods related to StackMap.\n\nThis significantly speeds up stack walking on Pmd in Dacapo (10-30%).\n\nTest: test-art-host\nChange-Id: I79513b0b3d611e591c44e252062abf6a4f902797\n"
    },
    {
      "commit": "5d37c152f21a0807459c6f53bc25e2d84f56d259",
      "tree": "7d8cbce0a55f258150a047def70244f79afc866d",
      "parents": [
        "aa89a4c6fca095904521842c018399f1e3501a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 12 13:25:19 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 16 22:56:56 2017 +0000"
      },
      "message": "Put inlined ArtMethod pointer in stack maps.\n\nCurrently done for JIT. Can be extended for AOT and inlined boot\nimage methods.\n\nAlso refactor the lookup of a inlined method at runtime to not\nrely on the dex cache, but look at the class loader tables.\n\nbug: 30933338\ntest: test-art-host, test-art-target\nChange-Id: I58bd4d763b82ab8ca3023742835ac388671d1794\n"
    },
    {
      "commit": "01c78147d3e2f6eedba8b13dbfc46dc4ed61cb5d",
      "tree": "be1050f692a7fccdbbcfc86dc28749fdb82e2bf2",
      "parents": [
        "001cd47ddd81e5bdd6cc2051beced4799124315a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 05 10:17:55 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 05 14:08:18 2017 -0800"
      },
      "message": "Add some code info checking in GetCalleeSaveMethodCaller\n\nWill print info if the memory region is too small for the stack maps.\n\nTest: test-art-host\n\nBug: 33924573\n\nChange-Id: I03e0151724d3a0933f3bef004e0d16ba1c6134c4\n"
    },
    {
      "commit": "7cbd27fe778f2c348136540d52b5473e28f5769d",
      "tree": "80c0fa4ff2a223c061245c6799d992cd4d863fa0",
      "parents": [
        "3d1d18d74dfac5039b6093ddf04f74eee4f157a3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 11 23:53:33 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 12 13:19:51 2016 +0100"
      },
      "message": "Adjust spacing before NOLINT comments in ART.\n\nNote that neither clang-tidy nor cpplint.py complain about\nthese style \"issues\", precisely because of the NOLINT\ncomments.\n\nTest: WITH_TIDY\u003d1 WITH_TIDY_CHECKS\u003d\u0027-*,misc-macro-parentheses\u0027 mmma art\nChange-Id: Id692fd394ffbd4fe208cbbe4407b4d5e208462bb\n"
    },
    {
      "commit": "87f3fcbd0db352157fc59148e94647ef21b73bce",
      "tree": "5bdeabb246f5de86704333b3fcbccc6e9146d246",
      "parents": [
        "b94b5706f0b8e2e1c7e1db22274f9f4bae0c4b5a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 28 15:52:11 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 15:17:38 2016 +0100"
      },
      "message": "Replace String.charAt() with HIR.\n\nReplace String.charAt() with HArrayLength, HBoundsCheck and\nHArrayGet. This allows GVN on the HArrayLength and BCE on\nthe HBoundsCheck as well as using the infrastructure for\nHArrayGet, i.e. better handling of constant indexes than\nthe old intrinsic and using the HArm64IntermediateAddress.\n\nBug: 28330359\nChange-Id: I32bf1da7eeafe82537a60416abf6ac412baa80dc\n"
    },
    {
      "commit": "61b28a17d9b6e8e998103646e98e4a9772e11927",
      "tree": "438c4a73f72423ddc71e6dca9f082d9e1d533996",
      "parents": [
        "cf0f8560f41467331427418584687830932e66ed"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 21:55:03 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 01 17:01:55 2016 +0100"
      },
      "message": "Use bit-level packing for InlineInfo in stackmaps as well.\n\nUse the same approach as we do for stackmaps to reduce the size.\n\nIt saves 4.0 MB from non-debuggable boot.oat (AOSP).\nIt does not affect debuggable boot.oat.\n\nIt saves 3.6 MB (of 96.6 MB) from /system/framework/arm/ (GOOG).\nIt saves 0.6 MB (of 26.7 MB) from /system/framework/oat/arm/ (GOOG).\n\nField loads from inline-info get around 5% slower.\n(based on the time it takes to load all inline-infos from boot.oat)\n\nChange-Id: I67b0fa5eef74c1fdb013680d0231fd44ea696176\n"
    },
    {
      "commit": "09ed09866da6d8c7448ef297c148bfa577a247c2",
      "tree": "dad6a5dae6ca6131f1eba201eaa371edc6d9929d",
      "parents": [
        "e28ad4b91591c226ed404a2b01104bb99bfeb28f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 12 21:58:43 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 31 22:12:07 2016 +0100"
      },
      "message": "Pack stack map entries on bit level to save space.\n\nUse only the minimum number of bits required to store stack map data.\nFor example, if native_pc needs 5 bits and dex_pc needs 3 bits, they\nwill share the first byte of the stack map entry.\n\nThe header is changed to store bit offsets of the fields rather than\nbyte sizes. Offsets also make it easier to access later fields without\ncalculating sum of all previous sizes.\n\nAll of the header fields are byte sized or encoded as ULEB128 instead\nof the previous fixed size encoding. This shrinks it by about half.\n\nIt saves 3.6 MB from non-debuggable boot.oat (AOSP).\nIt saves 3.1 MB from debuggable boot.oat (AOSP).\n\nIt saves 2.8 MB (of 99.4 MB) from /system/framework/arm/ (GOOG).\nIt saves 1.0 MB (of 27.8 MB) from /system/framework/oat/arm/ (GOOG).\n\nField loads from stackmaps seem to get around 10% faster.\n(based on the time it takes to load all stackmap entries from boot.oat)\n\nBug: 27640410\nChange-Id: I8bf0996b4eb24300c1b0dfc6e9d99fe85d04a1b7\n"
    },
    {
      "commit": "7dc11782ff0a5dffcd8108f256f8975f0b3e8076",
      "tree": "c3f6463fb378775d9b348f8fcfccfcdb410cfcc2",
      "parents": [
        "99da8cd8818e015b21d1c2af73ac40749698c930"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 13:23:56 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 14:07:27 2016 +0000"
      },
      "message": "Implement \u003c\u003c operator for DexRegisterLocation::Kind.\n\nThis makes it comparable in DCHECK_EQ and similar methods.\n\nChange-Id: I6b5b237be89325850ae6860d011fd6741189ab01\n"
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\n"
    },
    {
      "commit": "a83c6758b714e096a9de0851dc788757abbdab68",
      "tree": "17d02f87a6870b52cb1fab0eb2a277184955df01",
      "parents": [
        "6d6d36823d940362e02cdd26a59c9d4b7a68ea2c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 13:08:12 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 13:08:12 2016 +0000"
      },
      "message": "Fix lint error.\n\nChange-Id: I8584d243a1cf55170e1d7bc1570e4ad1218fde5f\n"
    },
    {
      "commit": "012fc4e9d9b66b3ffb7838b0e29dadbb4863ee69",
      "tree": "abba308e56a3d81e5c3fceebc95fb37a0ffe9c7c",
      "parents": [
        "5ee288c9dd99614e3a238f5efceeec6456e3499d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 08 15:58:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 08 17:14:17 2016 +0000"
      },
      "message": "Don\u0027t encode a DexRegisterMap if there is no live register.\n\nChange-Id: I76a291e6a0ac37f0590d16c7f5b866115588bc55\n"
    },
    {
      "commit": "77a48ae01bbc5b05ca009cf09e2fcb53e4c8ff23",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "659562aaf133c41b8d90ec9216c07646f0f14362"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Register allocation and runtime support for try/catch\"\"\n\nThe original CL triggered b/24084144 which has been fixed\nby Ib72e12a018437c404e82f7ad414554c66a4c6f8c.\n\nThis reverts commit 659562aaf133c41b8d90ec9216c07646f0f14362.\n\nChange-Id: Id8980436172457d0fcb276349c4405f7c4110a55\n"
    },
    {
      "commit": "659562aaf133c41b8d90ec9216c07646f0f14362",
      "tree": "be1beae390262bf2f5a17bfa44de93081a849d07",
      "parents": [
        "b022fa1300e6d78639b3b910af0cf85c43df44bb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "message": "Revert \"ART: Register allocation and runtime support for try/catch\"\n\nBreaks libcore test org.apache.harmony.security.tests.java.security.KeyStorePrivateKeyEntryTest#testGetCertificateChain. Need to investigate.\n\nThis reverts commit b022fa1300e6d78639b3b910af0cf85c43df44bb.\n\nChange-Id: Ib24d3a80064d963d273e557a93469c95f37b1f6f\n"
    },
    {
      "commit": "b022fa1300e6d78639b3b910af0cf85c43df44bb",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "e481c006e8b055a31d9c7cff27f4145e57e3c113"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:47:48 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 20:42:58 2015 +0100"
      },
      "message": "ART: Register allocation and runtime support for try/catch\n\nThis patch completes a series of CLs that add support for try/catch\nin the Optimizing compiler. With it, Optimizing can compile all\nmethods containing try/catch, provided they don\u0027t contain catch loops.\nFuture work will focus on improving performance of the generated code.\n\nSsaLivenessAnalysis was updated to propagate liveness information of\ninstructions live at catch blocks, and to keep location information on\ninstructions which may be caught by catch phis.\n\nRegisterAllocator was extended to spill values used after catch, and\nto allocate spill slots for catch phis. Catch phis generated for the\nsame vreg share a spill slot as the raw value must be the same.\n\nLocation builders and slow paths were updated to reflect the fact that\nthrowing an exception may not lead to escaping the method.\n\nInstruction code generators are forbidden from using of implicit null\nchecks in try blocks as live registers need to be saved before handing\nover to the runtime.\n\nCodeGenerator emits a stack map for each catch block, storing locations\nof catch phis. CodeInfo and StackMapStream recognize this new type of\nstack map and store them separate from other stack maps to avoid dex_pc\nconflicts.\n\nAfter having found the target catch block to deliver an exception to,\nQuickExceptionHandler looks up the dex register maps at the throwing\ninstruction and the catch block and copies the values over to their\nrespective locations.\n\nThe runtime-support approach was selected because it allows for the\nbest performance in the normal control-flow path, since no propagation\nof catch phi values is necessary until the exception is thrown. In\naddition, it also greatly simplifies the register allocation phase.\n\nConstantHoisting was removed from LICMTest because it instantiated\n(now abstract) HConstant and was bogus anyway (constants are always in\nthe entry block).\n\nChange-Id: Ie31038ad8e3ee0c13a5bbbbaf5f0b3e532310e4e\n"
    },
    {
      "commit": "d9cb68e3212d31d61445fb7e8446f68991720009",
      "tree": "8738656ba16c292c1f1fd022337817c58ded2136",
      "parents": [
        "9dc601eb65da0cd5f53172699dacd6e5dd38ab44"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 25 13:52:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 25 17:35:16 2015 +0100"
      },
      "message": "ART: Add (Fpu)RegHigh stack map location kinds\n\nWhen running Optimized code on 64-bit, high value of vreg pair may be\nstored in the high 32 bits of a CPU register. This is not reflected in\nstack maps which would encode both the low and high vreg as\nkInRegister with the same register number, making it indistinguishable\nfrom two non-wide vregs with the same value in the lower 32 bits.\n\nDeoptimization deals with this by running the verifier and thus\nobtaining vreg pair information, but this would be too slow for try/\ncatch. This patch therefore adds two new stack map location kinds:\nkInRegisterHigh and kInFpuRegisterHigh to differentiate between the\ntwo cases.\n\nNote that this also applies to floating-point registers on x86.\n\nChange-Id: I15092323e56a661673e77bee1f0fca4261374732\n"
    },
    {
      "commit": "1c1da4398cca9a828dea885ca1be12adf961d3a3",
      "tree": "130af3bb745bc74a9398c2ac482968bf734f9993",
      "parents": [
        "d780c00e554c5b00fc1acf359e4b9c7e761ea0eb"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 11:54:44 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 11:54:44 2015 +0100"
      },
      "message": "Improve documentation of memory layouts in stack_map.h.\n\nAlso shorten NumberOfDexRegisterLocationCatalogEntries to\nNumberOfLocationCatalogEntries.\n\nChange-Id: I55f8ec2960ea67e2eb6871a417bd442d0e2810fb\n"
    },
    {
      "commit": "d780c00e554c5b00fc1acf359e4b9c7e761ea0eb",
      "tree": "08d8e6fbdcdc5876481824777f640d4548758859",
      "parents": [
        "5c03f3698f5e2e0d762e2e15ec00310b6cdab4fe"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 15 14:30:26 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 15 17:48:57 2015 +0100"
      },
      "message": "Use art::MemoryRegion::{Load,Store}Bits more in art::CodeInfo.\n\nChange-Id: Id50fc029e83bf2c16bd991ea82acd3b355c29127\n"
    },
    {
      "commit": "8f1e08af6172781f91a17fce0a5a4183a9f70aa9",
      "tree": "1481075eefed359fcb675379197290b53159e28e",
      "parents": [
        "404ea410c5c1566909ae741582046b7cae2bd681"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 26 12:06:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 13 13:30:13 2015 +0100"
      },
      "message": "ART: Don\u0027t nest indenters in oatdump.\n\nReduces the time taken by the oatdump_test by ~12s (15%)\non host and ~55s (9%) on N5.\n\nChange-Id: I99bb16ff5f3640389815f1fe54379ca64eac071b\n"
    },
    {
      "commit": "f677ebfd832c9c614fea5e6735725fec2f7a3f2a",
      "tree": "051b3ba6343bdbca4929d728dd5c0341e4383a08",
      "parents": [
        "c47908e8c32fd58bc4dc75998a80f706954db1dc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:29:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 04 17:25:02 2015 +0100"
      },
      "message": "Cache stack map encoding\n\nOperations on CodeInfo and StackMap objects repeatedly read encoding\ninformation from the MemoryRegion. Since these are 3-bit-loads of\nvalues that never change, caching them can measurably reduce compile\ntimes.\n\nAccording to benchmarks, this patch saves 1-3% on armv7, 2-4% on x86,\nand 0-1% on x64.\n\nChange-Id: I46b197513601325d8bab562cc80100c00ec28a3b\n"
    },
    {
      "commit": "7922d0f2ef6a9fa7adc3b9417246aabea2474732",
      "tree": "c5c9e9106287694c80d7b262e1d2dbf176d59ae9",
      "parents": [
        "99c2abcb085d254b17a870442ca188fa09ab58de",
        "f2650d1f957b158496de8016bc43fb575e81d6bc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 03 11:00:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 03 11:00:37 2015 +0000"
      },
      "message": "Merge \"Show stack maps and Dex register maps in oatdump\u0027s assembly code.\""
    },
    {
      "commit": "f10a25f961eb8029c01c84fe8eabd405055cca37",
      "tree": "a0fd9dfa459689fa2929a89310ebcd3a45607e5f",
      "parents": [
        "1682e1aa3463c2e6a8e5f4a9d3f4d13a0e31e3da"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 14:29:52 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 14:36:09 2015 +0100"
      },
      "message": "ART: Fast copy stack mask\n\nStackMap::SetStackMask will currently copy a BitVector into a Memory-\nRegion bit by bit. This patch adds a new function for copying the data\nwith memcpy.\n\nThis is resubmission of CL I28d45a590b35a4a854cca2f57db864cf8a081487\nbut with a fix for a broken test which it revealed.\n\nChange-Id: Ib65aa614d3ab7b5c99c6719fdc8e436466a4213d\n"
    },
    {
      "commit": "d84b4384bc14a6bc256ad85955eca0582e6b2364",
      "tree": "c6b4bb107841320abbaa1402484df67c3f4a0a3b",
      "parents": [
        "6b10c9b2c0e62193ab9df4d63aedea1d0798e742"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 12:42:40 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 12:42:40 2015 +0000"
      },
      "message": "Revert \"ART: Fast copy stack mask\"\n\nDCHECK failure, need to investigate\n\nThis reverts commit 6b10c9b2c0e62193ab9df4d63aedea1d0798e742.\n\nChange-Id: Ie1d1cc6fb71367bc5ac5d6a260af8de316a758dd\n"
    },
    {
      "commit": "6b10c9b2c0e62193ab9df4d63aedea1d0798e742",
      "tree": "9930b839777184008b38e5504f1274c4cbfd87e1",
      "parents": [
        "f86808b55b550962c627b50511b98f4de8cd0e60"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:33:09 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 12:30:46 2015 +0100"
      },
      "message": "ART: Fast copy stack mask\n\nStackMap::SetStackMask will currently copy a BitVector into a Memory-\nRegion bit by bit. This patch adds a new function for copying the data\nwith memcpy.\n\nChange-Id: I28d45a590b35a4a854cca2f57db864cf8a081487\n"
    },
    {
      "commit": "f2650d1f957b158496de8016bc43fb575e81d6bc",
      "tree": "37bf1dff25dbd38f6cfdbaace07a50eb92f8c43d",
      "parents": [
        "0028b9d3b7d73ba0a045d50a0fe2797e51a4e6b6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 28 14:53:28 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 29 16:39:18 2015 +0100"
      },
      "message": "Show stack maps and Dex register maps in oatdump\u0027s assembly code.\n\nStack maps and Dex register maps are not longer displayed\nin CodeInfo sections, unless `--dump:code_info_stack_maps\u0027\nis passed to oatdump.\n\nChange-Id: Id82adb406d7e56cda27df8e5a8bd328a88b9ee11\n"
    },
    {
      "commit": "0396ed7d3ad30778cb4af19e7086bea0deace9b9",
      "tree": "cab609c648e04f63bcd52dfa9510d4a88a761997",
      "parents": [
        "6c70104dc3ecd66b46f56cae068a14e12021c9f2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 27 15:12:19 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 27 15:24:30 2015 +0100"
      },
      "message": "Improve art::CodeInfo dumping.\n\n- Refactor existing dumping code into a set of new routines.\n- Use art::Indenter to properly indent in the output.\n- Add an additional argument to art::CodeInfo::Dump to\n  enable or disable the dumping of stack maps and Dex\n  register maps.\n\nChange-Id: I52814095ff465522302d5d69d416726369ca5258\n"
    },
    {
      "commit": "dc31313c4577bb4c00d90774159c84e738ed348d",
      "tree": "5f850028ebc8843cdcaf56c5fc122bd660937603",
      "parents": [
        "03b5a398a96ea29c39ddfe3d810245b868d2871f",
        "80afd02024d20e60b197d3adfbb43cc303cf29e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "message": "Merge \"ART: Clean up arm64 kNumberOfXRegisters usage.\""
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "6530baf76ef7a62f2d76a6735ad461d7d59cf0e4",
      "tree": "663de5d35062e3e6d6c953a2b2da967b8464fb2c",
      "parents": [
        "ce63cf656bb5b25051d580a58086f4bf15fb878b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 26 15:22:58 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 26 15:22:58 2015 +0100"
      },
      "message": "Move the catalog after the stack maps.\n\nFetching a stack map should be cheap, and therefore we should\nnot compute the size of the catalog.\n\nChange-Id: Iff6accb7832bdfa6d209a0928d6088b8b57c1aa4\n"
    },
    {
      "commit": "e12997fbce8e22431be58cac9db2535f7b4a7ac3",
      "tree": "ae167aa833e1ef249d121b179c95827fa4e7ec6c",
      "parents": [
        "aa49c23d47e5fdfcf51380550ee864e9d30d082b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 22 14:01:33 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 22 14:01:33 2015 +0100"
      },
      "message": "Return an invalid StackMap when one cannot be found.\n\nThis avoids aborting when handling a crash.\n\nChange-Id: Ie5b5d48061fa9258b349b0284f7b00c5855d9fbd\n"
    },
    {
      "commit": "b176d7c6c8c01a50317f837a78de5da57ee84fb2",
      "tree": "81ec0c16267c527bdc64923b374be915206e6af9",
      "parents": [
        "713c59e813daa92da3f1678add6c4c7e16dcff11"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 18:48:31 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 21 12:10:00 2015 +0100"
      },
      "message": "Also encode the InvokeType in an InlineInfo.\n\nThis will be needed to recover the call stack.\n\nChange-Id: I2fe10785eb1167939c8cce1862b2d7f4066e16ec\n"
    },
    {
      "commit": "b1d0f3f7e92fdcc92fe2d4c48cbb1262c005583f",
      "tree": "0e3ce752f82ff5d7f10d37d46bda058ca54d7e40",
      "parents": [
        "119b21a6dfdb09d983a9e56a837fbf5c98e57096"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 14 12:41:51 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 18 13:00:29 2015 +0100"
      },
      "message": "Support InlineInfo in StackMap.\n\nChange-Id: I9956091775cedc609fdae7dec1433fcb8858a477\n"
    },
    {
      "commit": "896f8f7fe562f6e59119cb32531da9f0a5f13d18",
      "tree": "9f2b61474702a655ab5e793bac44d89612cf1b80",
      "parents": [
        "7411a69982c055692966c685636b6a226f10215e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 30 15:44:25 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 31 15:32:48 2015 +0100"
      },
      "message": "Use variable encoding for StackMap.\n\ndex_pc, native_pc_offset, dex_register_map_offset, inline_info_offset,\nand register_mask can now be encoded in 1, 2, 3, or 4 bytes.\n\nChange-Id: I15f93e8226ce374204d44c5a80a9fd89bda2687c\n"
    },
    {
      "commit": "a552e1c0584b8ab63150510286478c68cdbce13f",
      "tree": "c9c66b3d6bf001491ddd6a59d16d345d5656db8f",
      "parents": [
        "ba6233527e455368bba02efe963dd1e24d971727"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 26 15:01:03 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 31 12:47:33 2015 +0100"
      },
      "message": "Use unique location catalogs to encode Dex register maps.\n\n- For each CodeInfo object (i.e. for each method), compute a\n  variable index size location catalog  of unique Dex\n  register locations.  In Dex register maps, instead of\n  storing the actual location of a (live) Dex register,\n  store the index of the location catalog entry containing\n  that Dex register location.\n- Adjust art::StackMapStream,\n  art::CheckReferenceMapVisitor::CheckOptimizedMethod,\n  art::StackVisitor::GetVRegFromOptimizedCode, and\n  art::StackVisitor::SetVRegFromOptimizedCode.\n- Add LoadBits and StoreBits methods to art::MemoryRegion\n  to load and store a block of adjacent bits in a memory\n  region.\n- Update compiler/optimizing/stack_map_test.cc.\n- Remove the default value for parameter EmptyFn of\n  art::HashMap.  This default value did not seem to make\n  sense, as it would create an \"empty function\" for type Key\n  by default, whereas art::HashMap expects an \"empty\n  function\" for type std::pair\u003cKey, Value\u003e.\n\nChange-Id: Id9e49d7756c253ce41c36630cd832208d06c2e28\n"
    },
    {
      "commit": "bdba92d48a01ab9c2d95159166ba12918df8d980",
      "tree": "50f8917d8e89191ab253857991319eb108b07afe",
      "parents": [
        "fcee9d4ad44b70cb85aafa9056c08a194c5582e6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 31 12:27:44 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 31 12:27:44 2015 +0100"
      },
      "message": "Ensure MemoryRegion::Load \u0026 MemoryRegion::Store are word-aligned.\n\nChange-Id: Ib19fb93abec4789a111dfd48fcac6065e2d3ec82\n"
    },
    {
      "commit": "6ae70962089e4af9718cc9b7c2b79a0c501c1844",
      "tree": "3b7cd46ed7c7bab95dc258a29883297738138f6c",
      "parents": [
        "2f5904383a7b7ffb741c8839ec3c60762860bad3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 18 16:31:28 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 25 13:50:23 2015 +0000"
      },
      "message": "Share dex register maps between stack maps when possible.\n\nIf two stack maps have the same dex register map then one of them will\nreference the register map from the other instead of owning an\nindependent copy.\n\nThis saves around 1.5% of space.\n\nChange-Id: Ic2c2c81210c6c45a5c5f650f7ba82a46ff6f45e4\n"
    },
    {
      "commit": "004c230b4cfc856690c61faabc41864061813c88",
      "tree": "40d95445eaa2eb248fa639755689c797a5e0c2ae",
      "parents": [
        "735dc87c92bee338d0638b3290c2b93a122429f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 10:06:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 14:55:15 2015 +0000"
      },
      "message": "Compress the StackMaps.\n\nFirst step towards the compression of the StackMap (not\nthe DexRegisterMap). Next step will be to just use what is\nneeded (instead of byte -\u003e word).\n\nChange-Id: I4f81b2d05bf5cc508585e16fbbed1bafbc850e2e\n"
    },
    {
      "commit": "aec8f930571ce10d6ce9a4249c45866a7f213397",
      "tree": "6514b8af90323a20282f3afe78812cce7535c7df",
      "parents": [
        "696005b00575fa53c91f3baabd4e85d543df4df8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 10:42:22 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 10:43:37 2015 +0000"
      },
      "message": "StackMap: Always load and store unalign.\n\nNow that we can have a mix of Quick and Optimized code in an .oat\nfile, a CodeInfo object is not necessarily word aligned.\n\nChange-Id: Ic6c5d1a2c6e20363436726a0708b0764b5a76caf\n"
    },
    {
      "commit": "fead4e4f397455aa31905b2982d4d861126ab89d",
      "tree": "21e4ccd99472bbf5cf1fac3bc20d0bca6f176022",
      "parents": [
        "cc22e3946baf035c8732e9417ab132bfe663aa45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 14:39:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 18:28:19 2015 +0000"
      },
      "message": "[optimizing] Don\u0027t record None locations in the stack maps.\n\n- moved environment recording from code generator to stack map stream\n- added creation/loading factory methods for the DexRegisterMap (hides\ninternal details)\n- added new tests\n\nChange-Id: Ic8b6d044f0d8255c6759c19a41df332ef37876fe\n"
    },
    {
      "commit": "ede7bf8a5cef965974e7c1edcf46a41fbe50a49d",
      "tree": "7f99657bd4f8591f7cf463c1a197e1a7575abab6",
      "parents": [
        "63346f57e2327894ce6c1e28e3d00342177538a6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 12:23:04 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 12:54:45 2015 +0000"
      },
      "message": "Align CodeInfo regions instead of their inner subregions.\n\nInstead of word-aligning every stack map region, as well as\nthe Dex register maps region of a CodeInfo object, just\nalign the whole CodeInfo region itself.\n\nChange-Id: Ia35d213d2bd184729aa0d048874c76f7bc6da0f6\n"
    },
    {
      "commit": "29ba1b068fc9f5a8011782c147b1f7732928aac7",
      "tree": "5b61289b1e135cce6f01e8c9cbcaa747a39f196c",
      "parents": [
        "d9a59ca8f038a0f93a4e1504e0f7f8f388848719"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 11:45:07 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 13 12:28:43 2015 +0000"
      },
      "message": "Fix the computation of the size of the stack maps region.\n\nIn art::StackMapStream::ComputeStackMapSize, compute the\nsize of a CodeInfo\u0027s stack maps region using the stack\nmask size, not the maximum element of the stack mask.\nAlso, rename this method as\nart::StackMapStream::ComputeStackMapsSize to make it clear\nit that it covers all the stack maps of the CodeInfo item,\nnot just one stack map.\n\nChange-Id: Icad21946dbca6e1ade2b82c9c2c535fdfed110a9\n"
    },
    {
      "commit": "9ac0e4d4ed1b45cf8767ef1d339afcdd205bf55a",
      "tree": "f5a53e3e10a138b4b301d60f9abc1011e945bda5",
      "parents": [
        "4054413950cbee5d304a7c29f08c21fb33d33d08"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 18:33:05 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 18:33:19 2015 +0000"
      },
      "message": "Force word alignment of Dex register maps.\n\nPlus some cosmetic changes.\n\nChange-Id: I45e805aa87c2ef8fe8907eaae726cd2188b54897\n"
    },
    {
      "commit": "a2d8ec6876325e89e5d82f5dbeca59f96ced3ec1",
      "tree": "65bf174b669ff3cd9694dc5a1124fb9f2225ade1",
      "parents": [
        "39d9fe2eb3552a002c53ed41701c6faffe3cd75a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 15:25:29 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 12 15:25:29 2015 +0000"
      },
      "message": "Compress the Dex register maps built by the optimizing compiler.\n\n- Replace the current list-based (fixed-size) Dex register\n  encoding in stack maps emitted by the optimizing compiler\n  with another list-based variable-size Dex register\n  encoding compressing short locations on 1 byte (3 bits for\n  the location kind, 5 bits for the value); other (large)\n  values remain encoded on 5 bytes.\n- In addition, use slot offsets instead of byte offsets to\n  encode the location of Dex registers placed in stack\n  slots at small offsets, as it enables more values to use\n  the short (1-byte wide) encoding instead of the large\n  (5-byte wide) one.\n- Rename art::DexRegisterMap::LocationKind as\n  art::DexRegisterLocation::Kind, turn it into a\n  strongly-typed enum based on a uint8_t, and extend it to\n  support new kinds (kInStackLargeOffset and\n  kConstantLargeValue).\n- Move art::DexRegisterEntry from\n  compiler/optimizing/stack_map_stream.h to\n  runtime/stack_map.h and rename it as\n  art::DexRegisterLocation.\n- Adjust art::StackMapStream,\n  art::CodeGenerator::RecordPcInfo,\n  art::CheckReferenceMapVisitor::CheckOptimizedMethod,\n  art::StackVisitor::GetVRegFromOptimizedCode, and\n  art::StackVisitor::SetVRegFromOptimizedCode.\n- Implement unaligned memory accesses in art::MemoryRegion.\n- Use them to manipulate data in Dex register maps.\n- Adjust oatdump to support the new Dex register encoding.\n- Update compiler/optimizing/stack_map_test.cc.\n\nChange-Id: Icefaa2e2b36b3c80bb1b882fe7ea2f77ba85c505\n"
    },
    {
      "commit": "b341b70b2418922d9b792cdba96d22bece87c55a",
      "tree": "143fcb9aa30dfd6f709c4b1d38f8506c164f6cb2",
      "parents": [
        "b265262780ef7384bdcd1413cde2a59f7594cec9",
        "12baf476389359d54ae04d7898190ef6f81ab0b2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 06 11:47:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 06 11:47:03 2015 +0000"
      },
      "message": "Merge \"Extend compiler/optimizing/stack_map_test.cc.\""
    },
    {
      "commit": "12baf476389359d54ae04d7898190ef6f81ab0b2",
      "tree": "08978200d483aed50c0128e9fa241d254facb50b",
      "parents": [
        "442b46a087c389a91a0b51547ac9205058432364"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 05 12:41:42 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 05 14:44:46 2015 +0000"
      },
      "message": "Extend compiler/optimizing/stack_map_test.cc.\n\nChange-Id: I6f8c3186683210a5162cbf4f15361a4c494495c9\n"
    },
    {
      "commit": "7cde48c56df5b57aed524cce44c902bc720f2d6c",
      "tree": "b9b9e33b29f46bfe0c2da89c7e3e87c8ee419ccc",
      "parents": [
        "4b39eeea67b0fecf21588d7b00e92eb844014c24"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jan 20 16:06:43 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 11:22:00 2015 +0000"
      },
      "message": "Stack support for Optimizing compiler\n\nAllows to read/write DEX registers from physical register or stack\nlocation when the method is compiled with the Optimizing compiler.\n\nRequired fixing arm and arm64 JNI compiler by saving floating\npoint registers.\n\nBug: 18547544\nChange-Id: I401579f251d1c0a130f6cf4a93a960cdcd7518f5\n"
    },
    {
      "commit": "442b46a087c389a91a0b51547ac9205058432364",
      "tree": "4efa4b4da919dd7b9aa18996a5316febcf1c8989",
      "parents": [
        "aa9b7c48069699e2aabedc6c0f62cb131fee0c73"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 18 16:54:21 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 19 12:13:09 2015 +0000"
      },
      "message": "Display optimizing compiler\u0027s CodeInfo objects in oatdump.\n\nA few elements are not displayed yet (stack mask, inline info) though.\n\nChange-Id: I5e51a801c580169abc5d1ef43ad581aadc110754\n"
    },
    {
      "commit": "376b2bbf7c39108223a7a01568a7b4b04d84eeac",
      "tree": "f6fdbe6180c3d330bc24aa35a7d9fa51f3eb1c55",
      "parents": [
        "b1a38e246cfbfb21100d9c9e57f33970e824f075"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 09 14:26:32 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 09 14:49:02 2014 +0000"
      },
      "message": "Ensure stack maps are 4 byte aligned.\n\nWith the recent move to gcc 4.9, we are hitting alignment\nSIGBUS on ARM. The reason is that gcc will optimize two consecutive\n32bits loads into one 64bits load, and the instruction (ldrd)\nwill fail if the data is not aligned.\n\nAlso removed the emission of mapping table when a method is optimized.\nThe information can be found in the StackMap itself.\n\nChange-Id: Icf79406c18a3f4db3c05d52fc2c0dd2e35bf0f8f\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "102cbed1e52b7c5f09458b44903fe97bb3e14d5f",
      "tree": "cb0a433c8f284021298c8a0c4dd0da97ca9d198a",
      "parents": [
        "07f5c5edb7ef24ac35364e6ef9a8107a44e6564e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 15 18:31:05 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 21 16:03:51 2014 +0100"
      },
      "message": "Implement register allocator for floating point registers.\n\nAlso:\n- Fix misuses of emitting the rex prefix in the x86_64 assembler.\n- Fix movaps code generation in the x86_64 assembler.\n\nChange-Id: Ib6dcf6e7c4a9c43368cfc46b02ba50f69ae69cbe\n"
    },
    {
      "commit": "3946844c34ad965515f677084b07d663d70ad1b8",
      "tree": "0d85bfba2ff69c34a2897351d1e50a1464509305",
      "parents": [
        "e2c23739c6395a83b30ece38f8a2e9e1bf7cf3ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 02 15:17:15 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 08 12:15:07 2014 +0100"
      },
      "message": "Runtime support for the new stack maps for the opt compiler.\n\nNow most of the methods supported by the compiler can be optimized,\ninstead of using the baseline.\n\nChange-Id: I80ab36a34913fa4e7dd576c7bf55af63594dc1fa\n"
    },
    {
      "commit": "99ea58cc68b51837c065f4a2a54efbf208dd76fa",
      "tree": "065c1335213b0bff5c3fb7a0dc79785f77441c9f",
      "parents": [
        "b5a214105d4c9b6c14de1649764950dd35bd620f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 02 15:08:17 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 21 12:47:27 2014 +0100"
      },
      "message": "Add a new stack map scheme that encodes compilation info per pc.\n\nEncodes stack mask, register mask, dex register values, and inlining\ninfo. The encoding is currently very straightforward: there is no\nclever encoding, nor compression.\n\nChange-Id: I5fd9ae28189a5513cd9e3c8d52c648463207643d\n"
    }
  ]
}
