)]}'
{
  "commit": "c63bdde13d9d2cd7f82fae590611e2ff7a77bc49",
  "tree": "d905361d626944b5393ccdc6538bda6465576fa7",
  "parents": [
    "07798c2e898a8c3344cac123f9873a50ad2e075d"
  ],
  "author": {
    "name": "Santiago Aboy Solanes",
    "email": "solanes@google.com",
    "time": "Fri Mar 31 16:04:22 2023 +0100"
  },
  "committer": {
    "name": "Treehugger Robot",
    "email": "treehugger-gerrit@google.com",
    "time": "Mon Apr 03 16:50:40 2023 +0000"
  },
  "message": "Optimize String\u0027s length/isEmpty for constant strings\n\nIf at compile time we know the length of the string, we can insert\nthat constant into the graph.\n\nAs part of this CL, I introduced VisitArrayLength in\nConstantFolding. This is done because:\n  * We are folding the instrucion into a constant so it makes\n    logical sense, and\n  * It plays better with isEmpty since that\u0027s an ArrayLength+Equal\n    which can be dealt with in one ConstantFolding pass.\n\nAs a note, there\u0027s VisitArrayLength in InstructionSimplifier which\nwould make sense to also move to ConstantFolding. However, in doing\nso we get code size regressions. Added a TODO to see if we can deal\nwith that in the future.\n\nLocally speed-compiling in a Pixel 5:\n  * SystemServer: -4.38 KB (-0.01%)\n  * SystemUIGoogle: -23.92KB (-0.09%)\n  * AGSA: -217.66KB (-0.07%)\n\nBug: 276416001\nTest: art/test/testrunner/testrunner.py --host --64 --optimizing -b\nChange-Id: Ic2081d489482157b016762e0ec103319d3b9a46e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bd9c8997709560c8b0498f11613342ca3b043fb0",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/constant_folding.cc",
      "new_id": "b737fb396fccbe9da19f5540464b07187fd0fe4e",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/constant_folding.cc"
    },
    {
      "type": "modify",
      "old_id": "1a5e9044b8eee5b4a3332a441c43215a7c77c913",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/constant_folding.h",
      "new_id": "73ac3ceb814aaca1e601b970224abcce4b04196e",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/constant_folding.h"
    },
    {
      "type": "modify",
      "old_id": "12ca30fb1b6d470255cc179c023eea71de1e75a5",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/instruction_simplifier.cc",
      "new_id": "b772fbbbb61618c41255819a30e96fee92bd5238",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/instruction_simplifier.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "test/2047-checker-const-string-length/expected-stderr.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "test/2047-checker-const-string-length/expected-stdout.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "61e987f8fb5f149b1ecf25f10c053927837892b4",
      "new_mode": 33188,
      "new_path": "test/2047-checker-const-string-length/info.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0130943cda964d097a7b498cc9c82a01d01b09e5",
      "new_mode": 33188,
      "new_path": "test/2047-checker-const-string-length/src/Main.java"
    }
  ]
}
