)]}'
{
  "log": [
    {
      "commit": "250a378d5a2152662e0fa820f2b38f794ddd3596",
      "tree": "51896bf755c3f7afd1e0616a9a54071bda6dccc0",
      "parents": [
        "a584db5460a31198bf621cdacf5bc304a984efa4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 20 16:27:53 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 25 09:29:21 2016 +0100"
      },
      "message": "Add flag to ArtMethod to skip compilation.\n\nTo ensure even the JIT will not try to compile methods with\nsoft failures a runtime_throw.\n\nbug:28293819\nbug:28313047\n\nChange-Id: Ie3fd71ded0b77de8dab1c3c825b867cb321b8873\n"
    },
    {
      "commit": "93205e395f777c1dd81d3f164cf9a4aec4bde45f",
      "tree": "1d08efd9b7bca9fe23df9ae9489c5dd575d3c6df",
      "parents": [
        "6990775e323cd9164d6cc10955a047b9d9f15f32"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 11:59:46 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 17:50:16 2016 +0100"
      },
      "message": "Move Assemblers to the Arena.\n\nAnd clean up some APIs to return std::unique_ptr\u003c\u003e instead\nof raw pointers that don\u0027t communicate ownership.\n\nChange-Id: I3017302307a0253d661240750298802fb0d9585e\n"
    },
    {
      "commit": "dee58d6bb6d567fcd0c4f39d8d690c3acaf0e432",
      "tree": "5a2f20546ca3c1544c44bee560062580e22dc79c",
      "parents": [
        "391e155a6936a05bd39b171031ec21d2dee62133"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 09:54:26 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 16:03:16 2016 +0000"
      },
      "message": "Revert \"Revert \"Refactor HGraphBuilder and SsaBuilder to remove HLocals\"\"\n\nThis patch merges the instruction-building phases from HGraphBuilder\nand SsaBuilder into a single HInstructionBuilder class. As a result,\nit is not necessary to generate HLocal, HLoadLocal and HStoreLocal\ninstructions any more, as the builder produces SSA form directly.\n\nSaves 5-15% of arena-allocated memory (see bug for more data):\n  GMS      20.46MB  \u003d\u003e  19.26MB  (-5.86%)\n  Maps     24.12MB  \u003d\u003e  21.47MB  (-10.98%)\n  YouTube  28.60MB  \u003d\u003e  26.01MB  (-9.05%)\n\nThis CL fixed an issue with parsing quickened instructions.\n\nBug: 27894376\nBug: 27998571\nBug: 27995065\n\nChange-Id: I20dbe1bf2d0fe296377478db98cb86cba695e694\n"
    },
    {
      "commit": "75563e34a4e64a8e805e6810b13e07f1cafec137",
      "tree": "30bc7341b8b2c49e0fc56f783de86777abada138",
      "parents": [
        "a07be75830af60ce50aba357e8de066e849aa21c",
        "9d07e3d128ccfa0ef7670feadd424a825e447d1d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 05 09:23:52 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 05 09:23:53 2016 +0000"
      },
      "message": "Merge \"Clean up OatQuickMethodHeader after Quick removal.\""
    },
    {
      "commit": "60328910cad396589474f8513391ba733d19390b",
      "tree": "01702f6df5c39925b354a3152dd04289e7d97062",
      "parents": [
        "e3ff7b293be2a6791fe9d135d660c0cffe4bd73f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 17:47:42 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 17:47:42 2016 +0000"
      },
      "message": "Revert \"Refactor HGraphBuilder and SsaBuilder to remove HLocals\"\n\nBug: 27995065\nThis reverts commit e3ff7b293be2a6791fe9d135d660c0cffe4bd73f.\n\nChange-Id: I5363c7ce18f47fd422c15eed5423a345a57249d8\n"
    },
    {
      "commit": "9d07e3d128ccfa0ef7670feadd424a825e447d1d",
      "tree": "dfb677fd75f0f297fef9bc49311cf1d22c770f56",
      "parents": [
        "eb98c0ded592cfca8187c744393c82efd1020b2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 31 12:02:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 04 17:50:20 2016 +0100"
      },
      "message": "Clean up OatQuickMethodHeader after Quick removal.\n\nThis reduces the size of the pre-header by 8 bytes, reducing\noat file size and mmapped .text section size. The memory\nneeded to store a CompiledMethod by dex2oat is also reduced,\nfor 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The\naosp_flounder-userdebug 32-bit and 64-bit boot.oat are each\nabout 1.1MiB smaller.\n\nDisable the broken StubTest.IMT, b/27991555 .\n\nChange-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039\n"
    },
    {
      "commit": "e3ff7b293be2a6791fe9d135d660c0cffe4bd73f",
      "tree": "d578d27cb78e6d2caef683cd8ac94c9a9752b192",
      "parents": [
        "86ea7eeabe30c98bbe1651a51d03cb89776724e7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 02 16:48:20 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 11:21:30 2016 +0100"
      },
      "message": "Refactor HGraphBuilder and SsaBuilder to remove HLocals\n\nThis patch merges the instruction-building phases from HGraphBuilder\nand SsaBuilder into a single HInstructionBuilder class. As a result,\nit is not necessary to generate HLocal, HLoadLocal and HStoreLocal\ninstructions any more, as the builder produces SSA form directly.\n\nSaves 5-15% of arena-allocated memory (see bug for more data):\n  GMS      20.46MB  \u003d\u003e  19.26MB  (-5.86%)\n  Maps     24.12MB  \u003d\u003e  21.47MB  (-10.98%)\n  YouTube  28.60MB  \u003d\u003e  26.01MB  (-9.05%)\n\nBug: 27894376\nChange-Id: Iefe28d40600c169c5d306fd2c77034ae19476d90\n"
    },
    {
      "commit": "86ea7eeabe30c98bbe1651a51d03cb89776724e7",
      "tree": "01702f6df5c39925b354a3152dd04289e7d97062",
      "parents": [
        "0cb5c86b7021e70cbf584c1455aad1ef383af786"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 16 09:26:07 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 11:21:20 2016 +0100"
      },
      "message": "Build dominator tree before generating HInstructions\n\nSecond CL in the series of merging HGraphBuilder and SsaBuilder. This\npatch refactors the builders so that dominator tree can be built\nbefore any HInstructions are generated. This puts the SsaBuilder\nremoval of HLoadLocals/HStoreLocals straight after HGraphBuilder\u0027s\nHInstruction generation phase. Next CL will therefore be able to\nmerge them.\n\nThis patch also adds util classes for iterating bytecode and switch\ntables which allowed to simplify the code.\n\nBug: 27894376\nChange-Id: Ic425d298b2e6e7980481ed697230b1a0b7904526\n"
    },
    {
      "commit": "2e384346d93a747e19fb74f32eba2d1e9403721f",
      "tree": "1aa4a05a06298a5c3c741414e859b0d37143c84e",
      "parents": [
        "a872368b065af7cd42a1be02742a60877e096bae",
        "df739841b781dbd49c247e3795696389c4799020"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 24 13:35:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 24 13:35:08 2016 +0000"
      },
      "message": "Merge \"Post-Quick cleanup: Remove CompilationUnit.\""
    },
    {
      "commit": "df739841b781dbd49c247e3795696389c4799020",
      "tree": "0e7dfce8d23f22aac9bf2b2849a087f36d5f58c3",
      "parents": [
        "f8a3dea642fe638f54d181b7ca280b79ee519398"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 23 16:59:07 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 24 09:29:18 2016 +0000"
      },
      "message": "Post-Quick cleanup: Remove CompilationUnit.\n\nChange-Id: I309411b0fffaaed1e218e2c34394bdf6e2f75b48\n"
    },
    {
      "commit": "29d38e77c553c6cf71fc4dafe2d22b4e3f814872",
      "tree": "92f34f589af205af56189d221ded293234935c26",
      "parents": [
        "2e89e901b9f303549f3ba64e45d87292e9c986c8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 23 15:31:51 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 23 11:30:29 2016 -0700"
      },
      "message": "Revert \"Revert \"Use compiler filter to determine oat file status.\"\"\n\nThis reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d.\n\nAdd an option to change what OatFileManager considers up-to-date.\nIn our tests we\u0027re allowed to write to the dalvik-cache, so it\ncannot be kSpeed.\n\nBug: 27689078\nChange-Id: I0c578705a9921114ed1fb00d360cc7448addc93a\n"
    },
    {
      "commit": "845e5064580bd37ad5014f7aa0d078be7265464d",
      "tree": "1e621756ba6a1fd345f2fb468eed88cdc81886e7",
      "parents": [
        "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "message": "Revert \"Use compiler filter to determine oat file status.\"\n\nBots are red. Tentative reverting as this is likely the offender.\n\nBug: 27689078\n\nThis reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931.\n\nChange-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a\n"
    },
    {
      "commit": "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931",
      "tree": "d8624bb85016a3301b473b6503324db4d4cf24a3",
      "parents": [
        "48e722432bb6e19df7bba02427e4a707e671af06"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Mar 18 15:05:30 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 22 15:38:36 2016 -0700"
      },
      "message": "Use compiler filter to determine oat file status.\n\nRecord the compiler filter in the oat header. Use that to determine\nwhen the oat file is up-to-date with respect to a target compiler\nfilter level.\n\nNew xxx-profile filter levels are added to specify if a profile should\nbe used instead of testing for the presence of a profile file.\n\nThis change should allow for different compiler-filters to be set for\ndifferent package manager use cases.\n\nBug: 27689078\nChange-Id: Id6706d0ed91b45f307142692ea4316aa9713b023\n"
    },
    {
      "commit": "3a40bf2fc1b9823e3bc8fcf96d5242668b5c088b",
      "tree": "7dab31da65fc38c0b05cb236aa7722169a7d4210",
      "parents": [
        "0339bee5b1be39669606c4ba57edd42a0bacf0ff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 22 16:26:33 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 22 16:26:33 2016 +0000"
      },
      "message": "ART: Clean up arena allocation memory tracking.\n\nRemove unused allocation types, mostly from removed Quick.\nMove logging one level up to capture memory used by stack\nmaps during AOT compilation. Raise the reporting threshold\nto 8MiB to limit the output to the worst offenders.\n\nChange-Id: I8c7a01bfa90bc8ec5eab66187eb6850a022f3543\n"
    },
    {
      "commit": "914d71ead70bb6f2084b2ed39a9fd58fd014f67d",
      "tree": "50f30d6e47d18aa6c3ccec9f05727b4898268b20",
      "parents": [
        "1583e624d4c970d8e571b265b9a8f08402d91f82",
        "2ae48182573da7087bffc2873730bc758ec29696"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 16 14:40:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 16 14:40:08 2016 +0000"
      },
      "message": "Merge \"Clean up NullCheck generation and record stats about it.\""
    },
    {
      "commit": "933330a192d43d7c7304120999907857a89c2f96",
      "tree": "a413b4df2a4b9fdb804983204168ee23cd9c9eb7",
      "parents": [
        "f808e8a0cc218c2b98023ef0e91f3c5b74ad2962"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:06 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:26 2016 +0000"
      },
      "message": "Add more statistics for memory use of the JIT.\n\nCollect data for stack maps, profiling info, and compiled code.\n\nbug:27520994\n\nChange-Id: Ic87361230c96ce0090027a37d750e948d806c597\n"
    },
    {
      "commit": "2ae48182573da7087bffc2873730bc758ec29696",
      "tree": "d6955329ad876aefd477f7ef8905b070b9ab95dd",
      "parents": [
        "6915898b28cea6c9836ca1be6814d87e89cc6d76"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 16 14:05:09 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 16 14:10:27 2016 +0000"
      },
      "message": "Clean up NullCheck generation and record stats about it.\n\nThis removes redundant code from the generators and allows for easier\nstat recording.\n\nChange-Id: Iccd4368f9e9d87a6fecb863dee4e2145c97851c4\n"
    },
    {
      "commit": "a4f81546373f4cb5fa6dfc135307ee0a1d930872",
      "tree": "bfc592fc0ec418ac8bbc270a31c6e741849c3276",
      "parents": [
        "e70cda6147e2e49384a219b167a6c734a8db28f5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 08 16:57:48 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 11:16:49 2016 +0000"
      },
      "message": "Collect memory use for the JIT.\n\nbug:27520994\n\nChange-Id: I67b0c5b822001bfde8738a988c1ade69f1a26e3f\n"
    },
    {
      "commit": "09c2a6be63337ee060e2d54bd01cf18be7301d29",
      "tree": "c623c5352bc908410f03b20b772c3dad47df207c",
      "parents": [
        "fdaa583e785383cca68df63c7ef53fcaf667b8e2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 17:11:44 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 17:35:19 2016 +0000"
      },
      "message": "Add trampoline symbols to native debug info.\n\nThe debugger needs them to unwind through the trampolines and to\nunderstand what is happening in the call stack.\n\nChange-Id: Ia554058c3796788adcd7336d620a7734eb366905\n"
    },
    {
      "commit": "cc22d41d4de2514cc3cb4ed569764a35f15da48d",
      "tree": "49809c99b991eece44dad9ca26c89bdcf0f9d911",
      "parents": [
        "1a008a127730710f8f56c1ca66385e1b062a2dcb",
        "fe736b775c7774bb2f7072e022099ca47dd21a3c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:25:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 14:25:57 2016 +0000"
      },
      "message": "Merge \"Allow generation of native debug info for multiple methods.\""
    },
    {
      "commit": "1a008a127730710f8f56c1ca66385e1b062a2dcb",
      "tree": "b3d33325c5e5ef2f34aa9a497c83863cf2481abb",
      "parents": [
        "2af7213a4e0d395fe22dcdce6ec10a3bd131023d",
        "197160d47f34238cb5e7444fa4c2de300db8e2c6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:25:40 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 14:25:41 2016 +0000"
      },
      "message": "Merge \"Refactor MethodDebugInfo (input of DWARF writer).\""
    },
    {
      "commit": "d1c4045fb4d4703642f3f79985727b9a12cf5c49",
      "tree": "5fda881ed412b71013e1f2445ed5ddd1a7b37470",
      "parents": [
        "2048b01dfec8877d672a4da41a158f68b12b5337"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Mar 02 16:06:13 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Mar 10 09:22:49 2016 -0800"
      },
      "message": "Avoid generating dead code on frame enter/exit.\nThis includes stack operations and, on x86, call/pop to read PC.\n\nbug\u003d26997690\n\nRationale:\n(1) If method is fully intrinsified, and makes no calls in slow\n    path or uses special input, no need to require current method.\n(2) Invoke instructions with HasPcRelativeDexCache() generate code\n    that reads the PC (call/pop) on x86. However, if the invoke is\n    an intrinsic that is later replaced with actual code, this PC\n    reading code may be dead.\n\nExample X86 (before/after):\n\n0x0000108c: 83EC0C      sub esp, 12\n0x0000108f: 890424      mov [esp], eax       \u003c-- not needed\n0x00001092: E800000000  call +0 (0x00001097)\n0x00001097: 58          pop eax              \u003c-- dead code to read PC\n0x00001098: F30FB8C1    popcnt eax, ecx\n0x0000109c: F30FB8DA    popcnt ebx, edx\n0x000010a0: 03D8        add ebx, eax\n0x000010a2: 89D8        mov eax, ebx\n0x000010a4: 83C40C      add esp, 12          \u003c-- not needed\n0x000010a7: C3          ret\n\n0x0000103c: F30FB8C1    popcnt eax, ecx\n0x00001040: F30FB8DA    popcnt ebx, edx\n0x00001044: 03D8        add ebx, eax\n0x00001046: 89D8        mov eax, ebx\n0x00001048: C3          ret\n\nExample ARM64 (before/after):\n\n0x0000103c: f81e0fe0      str x0, [sp, #-32]!\n0x00001040: f9000ffe      str lr, [sp, #24]\n0x00001044: dac01020      clz x0, x1\n0x00001048: f9400ffe      ldr lr, [sp, #24]\n0x0000104c: 910083ff      add sp, sp, #0x20 (32)\n0x00001050: d65f03c0      ret\n\n0x0000103c: dac01020      clz x0, x1\n0x00001040: d65f03c0      ret\n\nChange-Id: I8377db80c9a901a08fff4624927cf4a6e585da0c\n"
    },
    {
      "commit": "fe736b775c7774bb2f7072e022099ca47dd21a3c",
      "tree": "92a7850c812dc0373738c6c5cfdff5a32d5e489c",
      "parents": [
        "197160d47f34238cb5e7444fa4c2de300db8e2c6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 09 11:44:44 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 10 10:29:27 2016 +0000"
      },
      "message": "Allow generation of native debug info for multiple methods.\n\nSlight tweak in the API which I will need in the near future.\n\nChange-Id: I45954ae16710bc941a9a06a3a17c70798315ca53\n"
    },
    {
      "commit": "197160d47f34238cb5e7444fa4c2de300db8e2c6",
      "tree": "4c07b9e97e8ffaffb274d03b63701780baf0b72f",
      "parents": [
        "ef0119a0f329906ba1e8cbd8e53ce5a759fd4f99"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 07 17:33:57 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 10 10:11:31 2016 +0000"
      },
      "message": "Refactor MethodDebugInfo (input of DWARF writer).\n\nDo not pass CompiledMethod pointer through since it is only available\nduring AOT compile but not during JIT compile or at runtime. Creating\nmock CompiledMethod just pass data is proving increasingly tricky, so\ncopy the fields that we need to MethodDebugInfo instead.\n\nChange-Id: I820297b41e769fcac488c0ff2d2ea0492bb13ed8\n"
    },
    {
      "commit": "91cc06c1814bd1d0fd6635bc3d7632a2bb7b0e7c",
      "tree": "7c57374bd28d245fd0f071ec66d9aad8501a878a",
      "parents": [
        "5d8112029d0e085c5a0099257daa4c7e29c12310"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 07 16:13:58 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 08 15:48:02 2016 +0000"
      },
      "message": "Mark DWARF lines in non-debuggable methods as \"not a statement\".\n\nThis is a hint to the debugger that breakpoints and stepping\nmight not function as intended (since we have limited information).\n\nChange-Id: I23c4a816182cc7548fcd69fbd00112225e7b1710\n"
    },
    {
      "commit": "5d8112029d0e085c5a0099257daa4c7e29c12310",
      "tree": "b98a1b83095ebd34feb3140e6910ec7e830bce0a",
      "parents": [
        "8a8c84114b16b8971bc2d3c5c7e0e31470d1a68b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 08 13:21:22 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 08 13:46:37 2016 +0000"
      },
      "message": "Propagate InstructionSetFeatures to ElfBuilder.\n\nThis is subset of CL171665 and it separates it into two.\nIt will be needed to generate .MIPS.abiflags ELF section.\n\nChange-Id: I5557e7cb98d0fa1dc57c85cf6161e119c6d50a1a\n"
    },
    {
      "commit": "700347e9bc6c2ed29046e0c13122a5ad57d2fc51",
      "tree": "e27ba6800f58515a3b19b12b32a6ee414faa35bf",
      "parents": [
        "a71ec6419d9e80b354de721003c8b7929d224a49"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 02 14:59:32 2016 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 02 14:59:32 2016 -0800"
      },
      "message": "Add a PassScope for PrepareForRegisterAllocation\n\nThis pass does transform the graph so make it part of cfg-dumping.\n\nChange-Id: I42e361382c85c97b974faad8bb0fcf2cb0750355\n"
    },
    {
      "commit": "25e0456b6ea13eba290b63ea88b6b7120ed89413",
      "tree": "212c7433997a9e498ce68136ab511ae366e983e9",
      "parents": [
        "47bce25b3eaf5c0e1d46f0555eaf4676f958a7a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 13:17:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 13:17:58 2016 +0000"
      },
      "message": "Give the JIT its own arena pool to avoid lock contentions.\n\nSharing it with the verifier and the class loader is not ideal,\nespecially at startup time.\n\nbug:27398183\nbug:23128949\nChange-Id: I1b91663a13f6c5b33ad3b4be780d93eb7fe445b4\n"
    },
    {
      "commit": "4a0dad67867f389e01a5a6c0fe381d210f687c0d",
      "tree": "91f1e70f4a2d0bd32aa7eb51e546f5330d72f772",
      "parents": [
        "d15ede2df7d157ea5480614fd18c2bf0d37a6c2a"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Tue Jan 26 12:28:31 2016 +0300"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 10:14:30 2016 +0000"
      },
      "message": "Revert \"Revert \"ARM/ARM64: Extend support of instruction combining.\"\"\n\nThis reverts commit 6b5afdd144d2bb3bf994240797834b5666b2cf98.\n\nChange-Id: Ic27a10f02e21109503edd64e6d73d1bb0c6a8ac6\n"
    },
    {
      "commit": "219830939ac94af8bbf019cbf4fdb65f05992713",
      "tree": "5d29487608f838f5651fcb0edebbf2968569a58b",
      "parents": [
        "05d77c2673082b371129f8d854439688533cfff2",
        "5b82d339955d1a0dc23eeb8d2d5659459ff987ba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 19 16:01:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 19 16:01:49 2016 +0000"
      },
      "message": "Merge \"The JIT does not need VerifedMethod nor CompilerCallbacks.\""
    },
    {
      "commit": "38e9e8046ea2196284bdb4638771c31108a30a4a",
      "tree": "a2fecce9af616bebd73ce17d9f5954f84f291817",
      "parents": [
        "eda4dfae59eec2db945cf032aee3a9aeaa2eb494"
      ],
      "author": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Thu Feb 18 16:42:03 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 18 16:15:27 2016 +0000"
      },
      "message": "Add statistics support for some optimizations\n\nThis patch adds support for the --dump-stats facility with some\noptimizations\nand fixes all build issues introduced by the patch:\nI68751b119a030952a11057cb651a3c63e87e73ea (which got reverted)\n\nChange-Id: I5af1f2a8cced0a1a55c2bb4d8c88e6f0a24ec879\nSigned-off-by: Jean-Philippe Halimi \u003cjean-philippe.halimi@intel.com\u003e\n"
    },
    {
      "commit": "5b82d339955d1a0dc23eeb8d2d5659459ff987ba",
      "tree": "79540d831ec7ac82f5520dc6bc53ac8c39f47972",
      "parents": [
        "d9c05309e8fab26a6087abd5773859f112cdefe9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 14:22:32 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 14:33:13 2016 +0000"
      },
      "message": "The JIT does not need VerifedMethod nor CompilerCallbacks.\n\nbug:27173201\n\nChange-Id: I971659f9ff6a8b780c94a7bed84de90fa9fc3456\n"
    },
    {
      "commit": "badd826664896d4a9628a5a89b78016894aa414b",
      "tree": "a30e8b3e62126ae1e1df1152ac643cfc5f2b074a",
      "parents": [
        "47a2a45a6673ddf3322115ff5058763f82a9368f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:28:56 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 10:21:07 2016 +0000"
      },
      "message": "ART: Run SsaBuilder from HGraphBuilder\n\nFirst step towards merging the two passes, which will later result in\nHGraphBuilder directly producing SSA form. This CL mostly just updates\ntests broken by not being able to inspect the pre-SSA form.\n\nUsing HLocals outside the HGraphBuilder is now deprecated.\n\nBug: 27150508\nChange-Id: I00fb6050580f409dcc5aa5b5aa3a536d6e8d759e\n"
    },
    {
      "commit": "c5bfa97c47d656b76f297af8abcd5f7502987399",
      "tree": "84da9d0f39096d8b857760a0848c0231aff0ed6d",
      "parents": [
        "a0f2bc5b09cdaf8a8ff5cec3c40a9f18885e8796"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 05 15:49:10 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 08 12:47:07 2016 +0000"
      },
      "message": "Split elf_writer_debug.cc to several files.\n\nRefactoring only. The file has grown significantly over time,\nand it is time to split it so it can be better managed.\n\nChange-Id: Idce0231718add722292f4701df353d5baf31de5f\n"
    },
    {
      "commit": "a0f2bc5b09cdaf8a8ff5cec3c40a9f18885e8796",
      "tree": "f7be0f7f42b3a79eef3f1f97f39ad73f5b269b72",
      "parents": [
        "e003beb849386236c1fe6e5edea6aaf5f58b7919",
        "4fda4eb799c95be266f52aaf3461a440ea86b841"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 08 12:46:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 08 12:46:10 2016 +0000"
      },
      "message": "Merge \"Move code related to debug info generation to its own directory.\""
    },
    {
      "commit": "4fda4eb799c95be266f52aaf3461a440ea86b841",
      "tree": "54a7e56b5633caf2b868f6028010b488eb1923ce",
      "parents": [
        "3c258f4d7a6492af733a9351ba430d876a3e5ccf"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 05 13:34:46 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 08 11:33:50 2016 +0000"
      },
      "message": "Move code related to debug info generation to its own directory.\n\ndebug/dwarf/ contains helper classes which hide the details\nof the DWARF file format. It acts as independent DWARF library.\n\ndebug/ contains ART-specific code which generates ELF debug\nsections (which includes non-DWARF sections like .symtab).\n\nChange-Id: Id351f604e4e64be2ca395a78324ea02e30481497\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": "74eb1b264691c4eb399d0858015a7fc13c476ac6",
      "tree": "0b6fc4f3003d50bf6c388601013cdfc606e53859",
      "parents": [
        "75fd2a8ab9b4aff59308034da26eb4986d10fa9e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 11:44:01 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 28 15:50:27 2016 +0000"
      },
      "message": "ART: Implement HSelect\n\nThis patch adds a new HIR instruction to Optimizing. HSelect returns\none of two inputs based on the outcome of a condition.\n\nThis is only initial implementation which:\n - defines the new instruction,\n - repurposes BooleanSimplifier to emit it,\n - extends InstructionSimplifier to statically resolve it,\n - updates existing code and tests accordingly.\n\nCode generators currently emit fallback if/then/else code and will be\nupdated in follow-up CLs to use platform-specific conditional moves\nwhen possible.\n\nChange-Id: Ib61b17146487ebe6b55350c2b589f0b971dcaaee\n"
    },
    {
      "commit": "5b1c2ca30dad519be285f0a1e839c23cc4e3a51d",
      "tree": "330ebac2bd2592ccced6a17b069516afd45fa220",
      "parents": [
        "d112827911122ba6412fd90b8d8b9a9d6db9d513"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 25 17:32:41 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 26 12:50:23 2016 +0000"
      },
      "message": "Revert \"Revert \"Add option to generate compressed backtrace info.\"\"\n\nThis reverts commit 8546cc9aeb05e866e1fb6a9e4130d53ea330baa8.\n\nChange-Id: I676fdf9af27fa3b16fa8921778ff8832ab8c437d\n"
    },
    {
      "commit": "8546cc9aeb05e866e1fb6a9e4130d53ea330baa8",
      "tree": "580a02752d8e447f6dce7cce01386c7e2a9a87f4",
      "parents": [
        "5fdcc3c931b70204fd8c491afa66f57f8428490f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 25 17:31:49 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 25 17:31:49 2016 +0000"
      },
      "message": "Revert \"Add option to generate compressed backtrace info.\"\n\nThis reverts commit 5fdcc3c931b70204fd8c491afa66f57f8428490f.\n\nChange-Id: I9c1f5aad6933a46af6717e3a90a51f76111f9c8a\n"
    },
    {
      "commit": "5fdcc3c931b70204fd8c491afa66f57f8428490f",
      "tree": "729f1433c75dda8a1f0e578a1c5297eed31f7852",
      "parents": [
        "95005291d8ebdd1d2ac58ffc5181fef4fbbf2383"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 19 14:33:43 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 22 18:10:37 2016 +0000"
      },
      "message": "Add option to generate compressed backtrace info.\n\nAdd flag --generate-mini-debug-info which generates\nLZMA compressed .symtab and .debug_frame, which are\nsufficient to print java backtraces in libunwind.\n\nIf enabled, it increases the size of boot.oat by about 3.5%.\n\nChange-Id: Ic3c2ef7704c05fa328720c6781ca2a9b8e3935a3\n"
    },
    {
      "commit": "6b5afdd144d2bb3bf994240797834b5666b2cf98",
      "tree": "d536cd7b3aaf55c563e82c2c522521a91b2bb953",
      "parents": [
        "debeb98aaa8950caf1a19df490f2ac9bf563075b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 09:31:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 09:31:52 2016 +0000"
      },
      "message": "Revert \"ARM/ARM64: Extend support of instruction combining.\"\n\nThe test fails its checker parts.\n\nThis reverts commit debeb98aaa8950caf1a19df490f2ac9bf563075b.\n\nChange-Id: I49929e15950c7814da6c411ecd2b640d12de80df\n"
    },
    {
      "commit": "debeb98aaa8950caf1a19df490f2ac9bf563075b",
      "tree": "b2a7a7cc6fb2f56d4bcc6cecaa80035668f38dc4",
      "parents": [
        "6aadaef35ea52506db61e463910c2520b702ca5e"
      ],
      "author": {
        "name": "Ilmir Usmanov",
        "email": "i.usmanov@samsung.com",
        "time": "Fri Dec 11 11:39:44 2015 +0300"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jan 21 11:07:38 2016 +0300"
      },
      "message": "ARM/ARM64: Extend support of instruction combining.\n\nCombine multiply instructions in the following way:\nARM64:\nMUL/NEG -\u003e MNEG\nARM32 (32-bit integers only):\nMUL/ADD -\u003e MLA\nMUL/SUB -\u003e MLS\n\nChange-Id: If20f2d8fb060145ab6fbceeb5a8f1a3d02e0ecdb\n"
    },
    {
      "commit": "955d24c4221aa514067dc13d8a40c8b5071f467d",
      "tree": "67a527b7e8360579d233ece14b1bb6718b39777a",
      "parents": [
        "ae9f99e2973edd24302b893d109224e8b05dbdf6",
        "58282f4510961317b8d5a364a6f740a78926716f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 18 17:13:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 18 17:13:14 2016 +0000"
      },
      "message": "Merge \"ART: Remove Baseline compiler\""
    },
    {
      "commit": "58282f4510961317b8d5a364a6f740a78926716f",
      "tree": "5d97c0db9fe01dd6e8df2357ef11f614abb853e8",
      "parents": [
        "b8bb9f6d0b59be125066f604f134155f8998f5ae"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 14 12:45:10 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 18 16:39:30 2016 +0000"
      },
      "message": "ART: Remove Baseline compiler\n\nWe don\u0027t need Baseline any more and it hasn\u0027t been maintained for\na while anyway. Let\u0027s remove it.\n\nChange-Id: I442ed26855527be2df3c79935403a25b1ee55df6\n"
    },
    {
      "commit": "c903b6af634927479915eaa9516d493eea23f911",
      "tree": "d14d0e2f323516ffac38baba7be4dce320fd772b",
      "parents": [
        "b8bb9f6d0b59be125066f604f134155f8998f5ae"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 18 12:56:06 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 18 12:56:06 2016 +0000"
      },
      "message": "Move --dump-cfg and dump-cfg-append to CompilerOptions.\n\nIt simplifies passing the option to the JIT.\n\nChange-Id: Iee1b722362899e5809ef97be90961e3dda1e16cc\n"
    },
    {
      "commit": "947cb4f5582d1f57270b48d3c47ea95e7f9085b5",
      "tree": "6f6aed8f8cca3177b06521a8db6ca845d18623ad",
      "parents": [
        "7b4199a5fa9f151fbf3af2a34f26d04215a1016c",
        "15bd22849ee6a1ffb3fb3630f686c2870bdf1bbc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 21:25:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 14 21:25:16 2016 +0000"
      },
      "message": "Merge \"Implement irreducible loop support in optimizing.\""
    },
    {
      "commit": "15bd22849ee6a1ffb3fb3630f686c2870bdf1bbc",
      "tree": "a261601589163faa4538bcf1c9d156e8ec4a42b3",
      "parents": [
        "5b7b5ddb515828c93f0c2aec67aa513c32d0de22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 15:55:41 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 15:00:20 2016 +0000"
      },
      "message": "Implement irreducible loop support in optimizing.\n\nSo we don\u0027t fallback to the interpreter in the presence of\nirreducible loops.\n\nImplications:\n- A loop pre-header does not necessarily dominate a loop header.\n- Non-constant redundant phis will be kept in loop headers, to\n  satisfy our linear scan register allocation algorithm.\n- while-graph optimizations, such as gvn, licm, lse, and dce\n  need to know when they are dealing with irreducible loops.\n\nChange-Id: I2cea8934ce0b40162d215353497c7f77d6c9137e\n"
    },
    {
      "commit": "86e4278d5edc3685465b8846dcb17efa83c86d75",
      "tree": "53c9af36418ed8872be46271a86a481075e78854",
      "parents": [
        "b8a20aafa13d59112dcbf1df858b8d1d61cfb708"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Tue Jan 05 14:29:02 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 13 15:56:52 2016 +0000"
      },
      "message": "Add DWARF type information generation.\n\nEmit native debugging information for types which are used during\ncompilation.\n\nChange-Id: If28d19f60294494b7c6db8400d179494bebe9e61\n"
    },
    {
      "commit": "5cc349f3dd578e974f78314c50b6a0267c23e591",
      "tree": "7d8bf706fd6aba6f298bfe212f75db0f66e94b81",
      "parents": [
        "a38e418fb2d9b817309c54b54ca85039907c2bbb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 18 15:04:48 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 13 15:39:12 2016 +0000"
      },
      "message": "Report DWARF debug information for JITed code.\n\nChange-Id: Ia5b2133c54386932c76c22774cf3d2ae61e0925f\n"
    },
    {
      "commit": "15693bfdf9fa3ec79327a77b7e10315614d716cc",
      "tree": "918208d60ec2a5595a2b5e42791865fefdbf9692",
      "parents": [
        "87bafaf563d35616804dd0cc0dbde176aac87817"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 16 10:30:45 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 06 12:44:42 2016 +0000"
      },
      "message": "ART: Resolve ambiguous ArraySets\n\nJust like aget(-wide), the value operand of aput(-wide) bytecode\ninstructions can be both int/long and float/double. This patch builds\non the previous mechanism for resolving type of ArrayGets to type the\nvalues of ArraySets based on the reference type of the array.\n\nBug: 22538329\n\nChange-Id: Ic86abbb58de146692de04476b555010b6fcdd8b6\n"
    },
    {
      "commit": "5949fa0cb9a8d26ac20b9b02065a63b4b20443be",
      "tree": "7e4760bac3073fdae84e850637aa35dd8c4c519c",
      "parents": [
        "b7371a5517f78f61759f7e6124f2d957d974d9cd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 18 10:57:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 04 12:53:06 2016 +0000"
      },
      "message": "Revert \"Revert \"Tweak inlining heuristics.\"\"\n\nThis reverts commit b17d1ccff0ac26fc22df671907ba2b4f4c656ce4.\n\nChange-Id: I26f6f8702a448c3da12662cbc6bc0f6e562bc40b\n"
    },
    {
      "commit": "4833f5a1990c76bc2be89504225fb13cca22bedf",
      "tree": "8e096f222368f30bf821b154bc78bac12d5cd2e5",
      "parents": [
        "bb41b250153308ef51664d7a6cc26c6a2e588fb7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 16 10:37:39 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 31 09:58:33 2015 +0000"
      },
      "message": "ART: Refactor SsaBuilder for more precise typing info\n\nThis reverts commit 68289a531484d26214e09f1eadd9833531a3bc3c.\n\nNow uses Primitive::Is64BitType instead of Primitive::ComponentSize\nbecause it was incorrectly optimized by GCC.\n\nBug: 26208284\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: Ib39f3da2b92bc5be5d76f4240a77567d82c6bebe\n"
    },
    {
      "commit": "dcdc85bbd569f0ee66c331b4219c19304a616214",
      "tree": "b5ab789248e279318f6c1e3f6c511703d7294476",
      "parents": [
        "48944c760b196188b968b7af81439466cf987a75"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 04 14:06:18 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 23 21:14:23 2015 -0800"
      },
      "message": "Dex2oat support for multiple oat file and image file outputs.\n\nMultiple changes to dex2oat and the runtime to support a --multi-image\noption. This generates a separate oat file and image file output for\neach dex file input.\n\nChange-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129\n"
    },
    {
      "commit": "8e006762917a2ee193e12c74ba24e69a5e1b9144",
      "tree": "c5a7099c24ab7ac7782e7bbf64f26c75b2350216",
      "parents": [
        "0ac7a8e505e14e65ff989c483a40348a3d4b6a86",
        "b17d1ccff0ac26fc22df671907ba2b4f4c656ce4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 15:26:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 17 15:26:44 2015 +0000"
      },
      "message": "Merge \"Revert \"Tweak inlining heuristics.\"\""
    },
    {
      "commit": "b17d1ccff0ac26fc22df671907ba2b4f4c656ce4",
      "tree": "cf202a0e783e523c9a0e4d8b25f0dc7a1d4df118",
      "parents": [
        "fcb7613d3aaa9a6802800b6e957aaad51cedf6dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 15:26:21 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 15:26:21 2015 +0000"
      },
      "message": "Revert \"Tweak inlining heuristics.\"\n\nThis reverts commit fcb7613d3aaa9a6802800b6e957aaad51cedf6dc.\n\nChange-Id: Idc0df6a2f68e8b5aa740bb1259f19c2953811510\n"
    },
    {
      "commit": "ff6ab45547a629b1e237a1bf4b8530a5c99377e5",
      "tree": "65f58353143515441c2097edee5d68bc8d677cd4",
      "parents": [
        "2dbab9548b538cdb647e5819f7f93d43ae67116a",
        "fcb7613d3aaa9a6802800b6e957aaad51cedf6dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 13:59:47 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 17 13:59:47 2015 +0000"
      },
      "message": "Merge \"Tweak inlining heuristics.\""
    },
    {
      "commit": "fcb7613d3aaa9a6802800b6e957aaad51cedf6dc",
      "tree": "9ae15e4bfb0b3d90d69bc8538ba351c5ce9311bf",
      "parents": [
        "ad94d64719c2a82cdd312b318b8e50d80e2956c5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 12:43:00 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 12:52:39 2015 +0000"
      },
      "message": "Tweak inlining heuristics.\n\ngo/lem driven:\n\nPerformance:\nRichards +41%\nCaffeineMethod +43%\nReversiBench: +52%\nTowers: +73%\nTak: +85%\n\nMemory use: 7% less memory\nCompileTime: 14% increase\nCodeSize: 8% increase\n\nLast three measures are now more acceptable given we JIT.\n\nChange-Id: Ic4aa6535d2b76cf3545ef00e9b2ae32330f10745\n"
    },
    {
      "commit": "68289a531484d26214e09f1eadd9833531a3bc3c",
      "tree": "6f87852b9d14e479ea2c7ef92de35c3118a0fd1e",
      "parents": [
        "bc90a0538e56f98b8e138cb622e6b9d834244ad9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:30:30 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:40:08 2015 -0800"
      },
      "message": "Revert \"ART: Refactor SsaBuilder for more precise typing info\"\n\nThis reverts commit d9510dfc32349eeb4f2145c801f7ba1d5bccfb12.\n\nBug: 26208284\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I5f491becdf076ff51d437d490405ec4e1586c010\n"
    },
    {
      "commit": "d9510dfc32349eeb4f2145c801f7ba1d5bccfb12",
      "tree": "9f4e4ffb5fae25c4f14059fd1d772726e9d96170",
      "parents": [
        "ceec5a3c81925cf80a18954b2e585316450c575c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 04 23:30:22 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 13:03:19 2015 +0000"
      },
      "message": "ART: Refactor SsaBuilder for more precise typing info\n\nThis patch refactors the SsaBuilder to do the following:\n\n1) All phis are constructed live and marked dead if not used or proved\nto be conflicting.\n\n2) Primitive type propagation, now not a separate pass, identifies\nconflicting types and marks corresponding phis dead.\n\n3) When compiling --debuggable, DeadPhiHandling used to revive phis\nwhich had only environmental uses but did not attempt to resolve\nconflicts. This pass was removed as obsolete and is now superseded\nby primitive type propagation (identifying conflicting phis) and\nSsaDeadPhiEliminiation (keeping phis live if debuggable + env use).\n\n4) Resolving conflicts requires correct primitive type information\non all instructions. This was not the case for ArrayGet instructions\nwhich can have ambiguous types in the bytecode. To this end,\nSsaBuilder now runs reference type propagation and types ArrayGets\nfrom the type of the input array.\n\n5) With RTP being run inside the SsaBuilder, it is not necessary to\nrun it as a separate optimization pass. Optimizations can now assume\nthat all instructions of type kPrimNot have reference type info after\nSsaBuilder (with the exception of NullConstant).\n\n6) Graph now contains a reference type to be assigned to NullConstant.\nAll reference type instructions therefore have RTI, as now enforced\nby the SsaChecker.\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I7a3aee1ff66c82d64b4846611c547af17e91d260\n"
    },
    {
      "commit": "f71b3ade9c99ce2fec2f5049ce9c5968721e1b81",
      "tree": "fcda284846a6a468e39aec2783812d2d1129a35e",
      "parents": [
        "d48015603a54b820d287d92709825765159615f0"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 08 15:05:08 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 16:18:54 2015 +0000"
      },
      "message": "Get source mapping table from stack maps.\n\nStack maps contain pc to dex mapping.\nReuse them instead of maintaining separate map.\n\nChange-Id: Iaaec9a6bd2603eace1dfc8f4344087883d88cce3\n"
    },
    {
      "commit": "8993caf6571863c8e5eec0b2ce4d72f6f1793f31",
      "tree": "2428835f78491fe76e795010ee77c95e0680b842",
      "parents": [
        "e8be90a673feb573d53277f42282955cbf7f58e9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 07 10:04:40 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 08 09:36:20 2015 +0000"
      },
      "message": "ART: Enable all optimizations except LSE under try/catch\n\nDynamic BCE now updates try/catch information during basic block\nmanipulation and can be enabled. The last missing optimization is LSE.\nThis patch removes all special-casing from optimizing_compiler.cc and\nbails inside LSE instead.\n\nChange-Id: Ie0c6fde7295880ea55d35571455a617fce2b7580\n"
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\n"
    },
    {
      "commit": "b5cdc5dfdbc68aa30625a1464c6378d43bb5941d",
      "tree": "2bc81aadb29c1db0f585d9bec45b07c294e30b50",
      "parents": [
        "d585b2c891fbf559cef4b4a7076183f5c7dc6a18",
        "ad543383b5883d6e32993efaefc704eff3225ffe"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Dec 02 12:10:26 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 02 12:10:26 2015 +0000"
      },
      "message": "Merge \"Clean up optimizing compiler stats\""
    },
    {
      "commit": "4a34277c55279ba57ab361f7580db846a201d9b1",
      "tree": "31d775a871a351357ecd5d6c76a3a827e20e6d07",
      "parents": [
        "f4c539395244ccfc14aebaf53fdc1122287f65a6"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Nov 30 10:17:46 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Dec 01 13:26:16 2015 -0800"
      },
      "message": "Dynamic BCE (based on induction range analysis)\n\nRationale:\nA rewritten dynamic BCE that uses induction variable analysis\nto generate the run-time tests before a loop in order to\neliminate bounds-checks from its body. This CL removes now\nobsoleted induction related code inside the BCE module.\nAlso, the dynamic test generation is placed more strategically,\nsince we missed a few cases where static analysis does better.\n\nMost significant performance improvements (filtering noise) is about:\n\nLinpack +20%\nLU    \u003e +10%\n\nChange-Id: I03d7631857154b6a131b132f26a2dc568af1b3a1\n"
    },
    {
      "commit": "ad543383b5883d6e32993efaefc704eff3225ffe",
      "tree": "a90a46d0f6c599c16c9349c6d7eefd6b7ac6a309",
      "parents": [
        "60c4c6ad2b892bb00a6016a147b1cc089ba6bcb5"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Nov 19 17:26:29 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 01 13:08:46 2015 +0000"
      },
      "message": "Clean up optimizing compiler stats\n\n- removed unused stats.\n- add \u0027OptStat\u0027 prefix to the names of the printed\nstats to make them `grep` friendly.\n\nChange-Id: I189e98b5226465c88c4a00247cd0b9b2ddb6d66e\n"
    },
    {
      "commit": "1965328f598854bfdf2d41cea582460d11aeba48",
      "tree": "e4a10de3e17c21d79209dc9adcd3c3f90b2df59d",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af",
        "b4536b7de576b20c74c612406c5d3132998075ef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 12:57:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 12:57:09 2015 +0000"
      },
      "message": "Merge \"Optimizing/ARM: Implement kDexCachePcRelative dispatch.\""
    },
    {
      "commit": "b4536b7de576b20c74c612406c5d3132998075ef",
      "tree": "5265c07b51b4d79b2fd64c63d9b78d38b7601a8f",
      "parents": [
        "883ef45b5d5a2e4005914c7b339881900976b6e7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 24 13:45:23 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 11:38:03 2015 +0000"
      },
      "message": "Optimizing/ARM: Implement kDexCachePcRelative dispatch.\n\nChange-Id: I0fe2da50a30a3f62bec8ea01688dd1fec84b1831\n"
    },
    {
      "commit": "22ccc3a93d32fa6991535eaebb17daf5abaf4ebf",
      "tree": "974af8f7cf41d131234eeb60dc8a7c4831f4a97f",
      "parents": [
        "51a354c747c8a76a4716a49a1f70bfd975d63787"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 24 13:10:05 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 24 13:10:05 2015 +0000"
      },
      "message": "ARM64 read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: Icfb74f67bf23ae80e7723ee6a0c9ff34ba325d48\n"
    },
    {
      "commit": "0d1caa5df8d99320036888600190337bbe540731",
      "tree": "efc9f1c1c52b4aca3871e7122709e83d12cd1e7d",
      "parents": [
        "6d92d59fb0acc1f9fde1d736f80e6cb1a8541da9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 13:02:22 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 23 14:01:55 2015 +0000"
      },
      "message": "Optimizing: Avoid a PrettyMethod() call per compiled method.\n\nPrettyMethod() is expensive so avoid it unless it\u0027s actually\nneeded.\n\nChange-Id: I06ab29cc18e426b7dfb8c53b163757c88b53c27f\n"
    },
    {
      "commit": "e34648dec914453f7e8b6c517dd272823319cd6d",
      "tree": "b192c4698c4889ae90db6abe2652199802213fe6",
      "parents": [
        "06241b1b07fb031b7d2cf55f4b78d3444d07cc2d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 08:59:07 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 08:59:07 2015 +0000"
      },
      "message": "Revert \"Add stats support for existing optimizations\"\n\nBreaks the build. Please ensure your changes build.\n\nThis reverts commit 06241b1b07fb031b7d2cf55f4b78d3444d07cc2d.\n\nChange-Id: I68b18f99a9882719bf6654d3313531a7965b8483\n"
    },
    {
      "commit": "06241b1b07fb031b7d2cf55f4b78d3444d07cc2d",
      "tree": "6ea5ce36c3b1ff575f1f1c380b9cd2c5c73c2e21",
      "parents": [
        "d83b9042d67f2a7d5ca5a1f63819c97940033336"
      ],
      "author": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Thu Sep 03 17:28:38 2015 +0200"
      },
      "committer": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Sun Nov 22 16:33:40 2015 +0100"
      },
      "message": "Add stats support for existing optimizations\n\nThis patch adds support for the --dump-stats facility with existing\noptimizations.\n\nChange-Id: I68751b119a030952a11057cb651a3c63e87e73ea\nSigned-off-by: Jean-Philippe Halimi \u003cjean-philippe.halimi@intel.com\u003e\n"
    },
    {
      "commit": "d59c70627cc42878cc30b46bd29ff497b4483b22",
      "tree": "b0b7013ea78b10f23fae75ef145e53a696ff797c",
      "parents": [
        "0b5849be045c5683d4a6b6b6c306abadba5f0fcc"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Sat Nov 21 05:21:52 2015 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Sat Nov 21 05:21:52 2015 +0000"
      },
      "message": "Revert \"Dynamic BCE (based on induction range analysis)\"\n\nThis reverts commit 0b5849be045c5683d4a6b6b6c306abadba5f0fcc.\n\n\nChange-Id: Id33f5da42bbdfb1aff7e2281417c8a7aa492df05\nRationale: so close :-( but bullhead-userdebug (linux) build in git_mnc-dr-dev-plus-aosp reported a breakage with a type inconsistency (long vs int in probably the codegen of dynamic bce); no time to investigate and fix this fully before my trip, so rolling back for now\n"
    },
    {
      "commit": "0b5849be045c5683d4a6b6b6c306abadba5f0fcc",
      "tree": "87245845c05ddef6fb53ac4c3774607a89fa5db4",
      "parents": [
        "3944f7175dcf60316ba58a42698ccf23c65ac57c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Oct 19 14:59:26 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Nov 20 17:00:04 2015 -0800"
      },
      "message": "Dynamic BCE (based on induction range analysis)\n\nRationale: A rewritten dynamic BCE that uses induction variable analysis\n           to generate the run-time tests before a loop in order to\n           eliminate bounds-checks from its body. This CL removes now\n           obsoleted induction related code inside the BCE module.\n           Also, the dynamic test generation is placed more strategically,\n           since we missed a few cases where static analysis does better.\n\nMost significant performance improvements (after filtering noise) is about:\n  Linpack +20%\n  LU    \u003e +10%\n\nChange-Id: I4e7b8bab0288beff6f98a14856e3536103d32742\n"
    },
    {
      "commit": "3b359c71f2fb784589be113206932e76807787bb",
      "tree": "f50f1b98a2948668d2ffabc42ce0cd9a00cecd0c",
      "parents": [
        "a04f57badca0a9211d45eb7bde44c1d1e8f159ff"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 17 19:35:12 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 17 19:35:12 2015 +0000"
      },
      "message": "ARM read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: I92e8db414d029f952c07f3d3a98069e46dfdbc2a\n"
    },
    {
      "commit": "0d5a281c671444bfa75d63caf1427a8c0e6e1177",
      "tree": "fd9bbe0f1c581bcc7c05bbfb2643ffe0b1fb014e",
      "parents": [
        "dd4cbcc924c8ba2a578914a4a366996693bdcd74"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Nov 13 10:07:31 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Nov 15 12:16:41 2015 +0000"
      },
      "message": "x86/x86-64 read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow (new) runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: I14cd6107233c326389120336f93955b28ffbb329\n"
    },
    {
      "commit": "cff81076cbb4bbe3841942f14326f4401fa3c8df",
      "tree": "f0a85a6059ff289ccb4b6e43b2b9b3924d481a31",
      "parents": [
        "fe0ec35c68d57205bd8fe13bd195ae0b5a3ed180",
        "0f7dca4ca0be8d2f8776794d35edf8b51b5bc997"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 15:20:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 12 15:20:08 2015 +0000"
      },
      "message": "Merge \"Optimizing/X86: PC-relative dex cache array addressing.\""
    },
    {
      "commit": "0f7dca4ca0be8d2f8776794d35edf8b51b5bc997",
      "tree": "cb2d99a0e9b7c50eb853a64b477268baaa77c11b",
      "parents": [
        "ce0f43b97ffb5e4d14c5df6607d8efb46a5dc9d2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 02 14:36:43 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 10:43:47 2015 +0000"
      },
      "message": "Optimizing/X86: PC-relative dex cache array addressing.\n\nAdd PC-relative dex cache array addressing for X86 and use\nit for better invoke-static/-direct dispatch. Also delay\nthe initialization to the PC-relative base until needed.\n\nChange-Id: Ib8634d5edce4920cd70172fd13211809cf6948d1\n"
    },
    {
      "commit": "cdfed3dc422d0e1a9a0a948863308e58c39d01ba",
      "tree": "8c9ff8a3afd88ffb64a70e8c44869a41806661a0",
      "parents": [
        "ea30daef253f4b616ec7c9d4c7e134f33454d19d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 14:05:01 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 11 12:50:15 2015 +0000"
      },
      "message": "Revert \"Revert \"Run type propagation after inliner only when needed.\"\"\n\nThis reverts commit 271743601650308c7ac5c7a3ec35025d8130a298.\n\nChange-Id: I173e27a0a4d7d54f90ca459eb48d280d1d40ab70\n"
    },
    {
      "commit": "8a7c0fe837bb00b02dfcfc678910d81d07fb2136",
      "tree": "9d1a44fa3dd16ed93efb84f5c4e4e5bf1231f5c3",
      "parents": [
        "44612873bb02be8a59e16aa50f61cce9e9cc9547"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 02 20:24:55 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 10 09:38:37 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Update DCE to work with try/catch\"\"\n\nThe previous CL failed because it did not update inputs of catch phis.\nSince phi input indices cannot be easily mapped back to throwing\ninstructions, this new implementation at least removes catch phi uses\nof values defined in the removed blocks to preserve graph consistency.\n\nThis reverts commit fb552d7061746f7a90fdd5002696e255e2e15c35.\n\nChange-Id: I63d95915d1ef50e71d3bcf0cd10aaded554035b4\n"
    },
    {
      "commit": "d28b969c273ab777ca9b147b87fcef671b4f695f",
      "tree": "ca66ecfd809afdcd31443bbe50bf38a836302cc5",
      "parents": [
        "6bf6e438cd4746effce0b26d504c54100191c988"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 14:36:55 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 10:37:48 2015 +0000"
      },
      "message": "Code cleanup to avoid CompilerDriver abstractions in JIT.\n\nAvoids allocating a CompiledMethod.\n\nChange-Id: I35b4aa0d7c74daba68e827a01e71c300fce3b3bf\n"
    },
    {
      "commit": "951779839f0d35ed5336f399c8f521fd9a6b7c27",
      "tree": "eb678f58590287e04585bc92202c45b4120c9a0e",
      "parents": [
        "34e38c43d4728fb1d3a011f8c142bff94927f6fb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Oct 30 12:56:58 2015 -0500"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Oct 30 15:02:37 2015 -0500"
      },
      "message": "ART: Enable inlining under try/catch\n\nThis patch updates the inliner to set try/catch information\nwhen inlining into a method with try/catch. It does not yet\nallow inlining of methods with try/catch because that will\nrequire generating catch stack maps with inline info.\n\nChange-Id: I7d57e1454e7da537d75c5c7eda60b22f3a30fa60\n"
    },
    {
      "commit": "771e5cc519665ce0cc76985bb4803f0dd50c3b40",
      "tree": "2f6934bc6cb0286d327b7a653be410cf8df43c00",
      "parents": [
        "39fabd6bb6fcf7a712b370d3b6fd0ada83e2e5d8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 29 22:47:39 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 29 22:47:39 2015 +0000"
      },
      "message": "Revert \"ART: Enable more passes under try/catch\"\n\nBCE does not set TryCatchInformation when creating new blocks.\nWill be fixed with DynamicBCE CL.\n\nThis reverts commit 39fabd6bb6fcf7a712b370d3b6fd0ada83e2e5d8.\n\nChange-Id: I76ae707ac132bb1a4a9f64f4916ffcd786ef730c\n"
    },
    {
      "commit": "39fabd6bb6fcf7a712b370d3b6fd0ada83e2e5d8",
      "tree": "09d20062204dedd87c7a7a1163bcdf6d549b39a7",
      "parents": [
        "59cc4e8306879ee7066d51dad4cba140e58c7292"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Oct 26 14:34:30 2015 -0500"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 29 12:07:27 2015 -0500"
      },
      "message": "ART: Enable more passes under try/catch\n\nLICM, BCE, LSE are all safe under try/catch. Inliner and DCE\nneed updating and will be enabled in follow-up CLs.\n\nChange-Id: I86db5f811257d5e765fea91666a2a2af0fb24ec3\n"
    },
    {
      "commit": "7a16bdbcce562a39a6a7defde5e191ca74327f3b",
      "tree": "08aa651a9b18ccabe11083ceed413b9ed2cd13f5",
      "parents": [
        "1a7b13394775c363d8f8facf748d188d1c225aac",
        "35831e8bfa1c0944d4c978d99c4c5b9577945170"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 16:08:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 27 16:08:44 2015 +0000"
      },
      "message": "Merge \"Reduce memory used by CompiledMethods.\""
    },
    {
      "commit": "35831e8bfa1c0944d4c978d99c4c5b9577945170",
      "tree": "a347ecaf4265a1713c86d528392e162d5edfaebc",
      "parents": [
        "171b12e8060f63cf900ffc43d6db35125f6b8c83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 11 11:59:18 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 15:13:37 2015 +0000"
      },
      "message": "Reduce memory used by CompiledMethods.\n\nUse LengthPrefixedArray\u003c\u003es instead of SwapVector\u003c\u003es to store\nCompiledMethod data and get rid of the unnecessary members\nof CompiledMethod to reduce dex2oat memory usage. Refactor\nthe deduplication from CompilerDriver to a new class.\n\nUse HashSet\u003c\u003e instead of std::set\u003c\u003e for the DedupeSet\u003c\u003e to\nfurther decrease the memory usage and improve performance.\n\nThis reduces the dex2oat memory usage when compiling boot\nimage on Nexus 5 (with Optimizing, -j1) by ~6.75MiB (5%).\nThis also reduces the compile time by ~2.2% (~1.6% dex2oat\ntime; with Optimizing, without -j).\n\nChange-Id: I974f1f5e58350de2bf487a2bca3907fa05fb80ea\n"
    },
    {
      "commit": "cbf3c0f4e8335b460ce2faba3877d4b24fe492a1",
      "tree": "2118db00ced221b5fe55e5bb37738a8535cfa574",
      "parents": [
        "1af35996afc82bfecb501fc5ecdc0d3350d8a532",
        "dc151b2346bb8a4fdeed0c06e54c2fca21d59b5d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 15:02:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 27 15:02:06 2015 +0000"
      },
      "message": "Merge \"Optimizing: Determine invoke-static/-direct dispatch early.\""
    },
    {
      "commit": "1839d3c7557a48358dcdb78934aac8f62d0916bc",
      "tree": "983e7803dbb3c3362f4bedfb81d2f3fb47744a3b",
      "parents": [
        "605f27d8719c8238679038b452b4665f47a6916a",
        "271743601650308c7ac5c7a3ec35025d8130a298"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 12:39:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 26 12:39:04 2015 +0000"
      },
      "message": "Merge \"Revert \"Run type propagation after inliner only when needed.\"\""
    },
    {
      "commit": "271743601650308c7ac5c7a3ec35025d8130a298",
      "tree": "cd75b95462144f35835a64e442541e778ea24fe7",
      "parents": [
        "4e5dd521063beae1706410419f19c7e224db50fe"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 12:38:43 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 12:38:43 2015 +0000"
      },
      "message": "Revert \"Run type propagation after inliner only when needed.\"\n\nThis reverts commit 4e5dd521063beae1706410419f19c7e224db50fe.\n\nChange-Id: I0de261d14dd3f71abe05f9bc71744820cf23b937\n"
    },
    {
      "commit": "605f27d8719c8238679038b452b4665f47a6916a",
      "tree": "b238228478a8546e0722c7555027c7f34f373367",
      "parents": [
        "a643cfd2b68135b9a052daa776fa00710c4c2ff4",
        "4e5dd521063beae1706410419f19c7e224db50fe"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 12:06:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 26 12:06:24 2015 +0000"
      },
      "message": "Merge \"Run type propagation after inliner only when needed.\""
    },
    {
      "commit": "4e5dd521063beae1706410419f19c7e224db50fe",
      "tree": "734842d330aca6b97ec2e042d54d32ac004288a3",
      "parents": [
        "9926d886573d13ab3f97befae4c526b936de8a53"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 19 16:19:23 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 23 17:18:35 2015 +0100"
      },
      "message": "Run type propagation after inliner only when needed.\n\nCurrently we run a type propagation pass unconditionally after the\ninliner. This change looks at the returned value (if any) and runs a\nminimal type propagation only if its type has changed.\n\nChange-Id: I0dd72bd481219081e8a978d2632426afc980d73a\n"
    },
    {
      "commit": "dc151b2346bb8a4fdeed0c06e54c2fca21d59b5d",
      "tree": "391d8ccb44ff9e6fc1c8fa8975e534e20cc002ff",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 15 18:02:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 23 14:45:32 2015 +0100"
      },
      "message": "Optimizing: Determine invoke-static/-direct dispatch early.\n\nDetermine the dispatch type of invoke-static/-direct in a\nspecial pass right after the type inference. This allows the\ninliner to pass the \"needs dex cache\" check and inline more.\nIt also allows the code generator to avoid requesting a\nregister location for the ArtMethod* for kDexCachePcRelative\nand direct methods.\n\nThe supported dispatch check handles also situations that\nthe CompilerDriver currently doesn\u0027t allow. The cleanup of\nthe CompilerDriver and required changes to Quick will come\nin a separate change.\n\nChange-Id: I3f8e903a119949e95871d8ab0a995f4731a13a07\n"
    },
    {
      "commit": "8df69d42a9e3ccd9456ff72fac8dbd1999f98755",
      "tree": "b2d7617d4d2e1ae80ab7024b47802dafbaee3b3a",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 15:40:58 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 16:37:46 2015 -0700"
      },
      "message": "Revert \"Revert \"load store elimination.\"\"\n\nThis reverts commit 8030c4100d2586fac39ed4007c61ee91d4ea4f25.\n\nChange-Id: I79558d85484be5f5d04e4a44bea7201fece440f0\n"
    },
    {
      "commit": "f652cecb984c104d44a0223c3c98400ef8ed8ce2",
      "tree": "ec0cc193eccdd11a79f42f957a856d2ba57699e1",
      "parents": [
        "b8b44983f861cfeeca66c624dd0f2a3fa71b4992"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Aug 25 16:11:42 2015 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Oct 22 18:51:13 2015 +0200"
      },
      "message": "MIPS: Initial version of optimizing compiler for MIPS32\n\nChange-Id: I370388e8d5de52c7001552b513877ef5833aa621\n"
    },
    {
      "commit": "66e33f1906be899f140d5fe2a657db4e3993106e",
      "tree": "eaef317e550fb4aa0612ba5d7a56ea42bc32f227",
      "parents": [
        "31e913fbea3d669b2067248f2163332940d8ec45",
        "0c3c2668ef44fdbd18d97f9134a85d1a7d561aa4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 10:00:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 21 10:00:34 2015 +0000"
      },
      "message": "Merge \"Use DlMallocSpace for the JIT code cache.\""
    },
    {
      "commit": "0c3c2668ef44fdbd18d97f9134a85d1a7d561aa4",
      "tree": "92e8e49ed1b4d5442f20721858c476ed5769d0ea",
      "parents": [
        "7edef7441d28db1403fbc5641b56a26ecf355879"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 13:53:04 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 10:59:27 2015 +0100"
      },
      "message": "Use DlMallocSpace for the JIT code cache.\n\n- Also tidy up some code in the JIT compiler.\n- And mprotect code space to be writable only when allocating.\n\nChange-Id: I46ea5c029aec489f2af63452de31db3736aebc20\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "8030c4100d2586fac39ed4007c61ee91d4ea4f25",
      "tree": "9d16c721b449e84aa04681440a79b85d86fa2aa2",
      "parents": [
        "589dac7f0ce078d19aad7e35bb0195c47ddf01d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "message": "Revert \"load store elimination.\"\n\nBreaks libcore tests:\n\n  libcore.java.lang.ref.FinalizeTest#testWatchdogDoesNotFailForObjectsThatAreNearTheDeadline\n  libcore.java.util.ResourceLeakageDetectorTest#testDetectsUnclosedCloseGuard\n  org.apache.harmony.tests.java.lang.ref.ReferenceTest#test_finalizeReferenceInteraction\n\nThis reverts commit 589dac7f0ce078d19aad7e35bb0195c47ddf01d2.\n\nChange-Id: I55115765c10762d5bc152d3425e4622560d8b9f4\n"
    },
    {
      "commit": "589dac7f0ce078d19aad7e35bb0195c47ddf01d2",
      "tree": "5c77fb845997b21ce1aa97b1fa176c64a76e14f1",
      "parents": [
        "d2e0dd179fd2e8c6c820194e187fc5e9164154ff"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 24 11:21:42 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 15 01:36:34 2015 -0700"
      },
      "message": "load store elimination.\n\nThis adds a pass to eliminate some unnecessary heap loads/stores. It\nfirst collects heap locations and then tracks values stored to those heap\nlocations. Alias analysis is done based on offset, type, singleton,\npre-existence, etc.\n\nChange-Id: I11a9d8ef20d1b2f245607eb25118e9aff9be472a\n"
    },
    {
      "commit": "655e585073ac271cc9afa7c9d6ff5ab4dbe4b72e",
      "tree": "f02b64d048ae4cd7fa51774f220192ddeef42e1e",
      "parents": [
        "89792b9c5ed09dda2937944b69b1b2016807b6aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 10:38:28 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 13:24:31 2015 +0100"
      },
      "message": "Optimizing: Move GraphChecker memory allocations to arena.\n\nBug: 18120045\nChange-Id: I3934158e6ea4868d9baa1dfcc53b603ca6c521e2\n"
    }
  ],
  "next": "cff8cc7818dd901d3667025ad0ff654100bbb629"
}
