)]}'
{
  "commit": "cea2f596f98b79fafaded1c36c98aa3fa04d5147",
  "tree": "4cb3dce68943e4cee513a8e2f6d74e9986899c35",
  "parents": [
    "554d48465f31b0e073f2c53a09ed9851f8b3e692"
  ],
  "author": {
    "name": "Santiago Aboy Solanes",
    "email": "solanes@google.com",
    "time": "Thu Feb 08 10:42:21 2024 +0000"
  },
  "committer": {
    "name": "Santiago Aboy Solanes",
    "email": "solanes@google.com",
    "time": "Fri Feb 09 08:56:51 2024 +0000"
  },
  "message": "Improve IsDeadAndRemovable\n\nInvestigating DCE I noticed that it was the 3rd most time consuming\noptimization phase (Inliner, GVN, DCE) on local pprof profiles.\nInside RemoveDeadInstructions we ask IsDeadAndRemovable for every\ninstruction and Phi. We can speed it up by:\n\n * Swap the order of IsDead and IsRemovable for earlier breaks with\n   e.g. LoadClass. LoadClass instructions are used by ClinitCheck\n   instructions (until very late in the graph). These instructions\n   are never going to be removed in DCE.\n * Phi instructions always pass the IsRemovable check so we can\n   skip it.\n\nSwapping the order improves RemoveDeadInstructions by ~20%, which\nis DCE\u0027s most time consuming method. Overall, DCE improves by ~5%\nand in my local trace now is the 4th most time consuming\noptimization (LSE is now 3rd).\n\nThe Phi optimization didn\u0027t show up in my pprof profile. It may\nimprove apps with many Phi instructions.\n\nTest: Locally compile and take a look at pprof profiles\nTest: art/test/testrunner/testrunner.py --host --64 --optimizing -b\nChange-Id: I59932a8d8d627fc71628e2255582f35282dd0b4e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6746771fa45f3e043d9db9023dea10018fc3d109",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/dead_code_elimination.cc",
      "new_id": "fe1361c93585f29471cc5d1e7ae3b197c3d2c288",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/dead_code_elimination.cc"
    },
    {
      "type": "modify",
      "old_id": "367f45f3a4d6c0649ec5637f2dab0a76928ac4a9",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/nodes.h",
      "new_id": "bf4a66dfc31552032605f2ea626cd5764f617510",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/nodes.h"
    }
  ]
}
