)]}'
{
  "commit": "ce9b902a161b86eb2d5ef9fe4442305e25828d0a",
  "tree": "3108d6315b779816b076b220870748631235e2ea",
  "parents": [
    "a8f858e4eddeede8c465cc5b9fb40733e4649aed"
  ],
  "author": {
    "name": "Victor Hsieh",
    "email": "victorhsieh@google.com",
    "time": "Wed Jul 21 10:44:06 2021 -0700"
  },
  "committer": {
    "name": "Treehugger Robot",
    "email": "treehugger-gerrit@google.com",
    "time": "Tue Jul 27 16:56:08 2021 +0000"
  },
  "message": "Reland: Support pass BCP art/vdex/oat files by FD\n\nThe original implementation in odrefresh generated inconsistent number\nof files between jars and other files. The code is reworked.\n\nOriginal description:\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nTest: odsign_e2e_tests\nChange-Id: Ie3ae48c7d70a2779cfbd80b307199a0f327c895c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e37730893829b4383287e90bea14e5d698284e6a",
      "old_mode": 33188,
      "old_path": "dex2oat/dex2oat_image_test.cc",
      "new_id": "09cdd5026446c05d7e711ef1d55a90d613140d55",
      "new_mode": 33188,
      "new_path": "dex2oat/dex2oat_image_test.cc"
    },
    {
      "type": "modify",
      "old_id": "fbf30c46ebf3b3bee509ca0f7c6a9bbfc9c4906e",
      "old_mode": 33188,
      "old_path": "odrefresh/odrefresh.cc",
      "new_id": "e7655b069d3b2489149d49246e7374558137ea3e",
      "new_mode": 33188,
      "new_path": "odrefresh/odrefresh.cc"
    },
    {
      "type": "modify",
      "old_id": "7706a5cdf8e3b772111fdfab4edf5b06218ee935",
      "old_mode": 33188,
      "old_path": "runtime/gc/heap.cc",
      "new_id": "55fdb720bab6b983cca7fdde55129a6a4fefb3bd",
      "new_mode": 33188,
      "new_path": "runtime/gc/heap.cc"
    },
    {
      "type": "modify",
      "old_id": "345109d3b01000b987dfdbecd34e29ced8316341",
      "old_mode": 33188,
      "old_path": "runtime/gc/heap.h",
      "new_id": "27616fbfc482729e55e78aec3e416e87e7247a73",
      "new_mode": 33188,
      "new_path": "runtime/gc/heap.h"
    },
    {
      "type": "modify",
      "old_id": "c1410ce32e99a0be55b7e096fa64143eef5b3cea",
      "old_mode": 33188,
      "old_path": "runtime/gc/space/image_space.cc",
      "new_id": "3930ad5a1adf687bca41f28ba1369483823ec597",
      "new_mode": 33188,
      "new_path": "runtime/gc/space/image_space.cc"
    },
    {
      "type": "modify",
      "old_id": "c8879cb1978dee5449c98a59011aa7ab2776e1d9",
      "old_mode": 33188,
      "old_path": "runtime/gc/space/image_space.h",
      "new_id": "28cc7950d343269bebb03ecd413b2b87c94d9690",
      "new_mode": 33188,
      "new_path": "runtime/gc/space/image_space.h"
    },
    {
      "type": "modify",
      "old_id": "5e1bc110e8fccb011c0c6e92213bf5e97ec437c0",
      "old_mode": 33188,
      "old_path": "runtime/gc/space/image_space_test.cc",
      "new_id": "973bf5e723f007e19cf7f7c23c96951092877091",
      "new_mode": 33188,
      "new_path": "runtime/gc/space/image_space_test.cc"
    },
    {
      "type": "modify",
      "old_id": "179cfc9f6790d946e10a630dddcad24e9a18bd47",
      "old_mode": 33188,
      "old_path": "runtime/oat_file.cc",
      "new_id": "347b58fee6ce985a05aa83a823f5560732abe70c",
      "new_mode": 33188,
      "new_path": "runtime/oat_file.cc"
    },
    {
      "type": "modify",
      "old_id": "beb231c71c443e2715558ae0e7f8472fae6aafbb",
      "old_mode": 33188,
      "old_path": "runtime/oat_file.h",
      "new_id": "5c98176bcd00a9875794172c4804c8f526d9bb6f",
      "new_mode": 33188,
      "new_path": "runtime/oat_file.h"
    },
    {
      "type": "modify",
      "old_id": "67ee94090c166f5798875f345e7c93b84f882a85",
      "old_mode": 33188,
      "old_path": "runtime/oat_file_assistant.cc",
      "new_id": "109769c5909e932113912a08a15ffcd578740cee",
      "new_mode": 33188,
      "new_path": "runtime/oat_file_assistant.cc"
    },
    {
      "type": "modify",
      "old_id": "af4521398e57775b35d15261b98b07ef4431bfdb",
      "old_mode": 33188,
      "old_path": "runtime/parsed_options.cc",
      "new_id": "f27947ee47eff48137c13efce1b69521d6ad09f2",
      "new_mode": 33188,
      "new_path": "runtime/parsed_options.cc"
    },
    {
      "type": "modify",
      "old_id": "91cbd67b57dd158f2fadae65813a04a5d442a992",
      "old_mode": 33188,
      "old_path": "runtime/runtime.cc",
      "new_id": "1a0826ce1e91d31a32ab6e36d0337eee7cfbfdbc",
      "new_mode": 33188,
      "new_path": "runtime/runtime.cc"
    },
    {
      "type": "modify",
      "old_id": "eb313e007621e36b6ecfeac78bfcd9908f513520",
      "old_mode": 33188,
      "old_path": "runtime/runtime.h",
      "new_id": "221bcafeac441771ee0a1a76c89a2183294d2879",
      "new_mode": 33188,
      "new_path": "runtime/runtime.h"
    },
    {
      "type": "modify",
      "old_id": "f5085e088f3a198e24e3a57530cd864fe4e89bfc",
      "old_mode": 33188,
      "old_path": "runtime/runtime_options.def",
      "new_id": "209c3d87db3c9b1eb5ec71d24f8a6dc00322dcc9",
      "new_mode": 33188,
      "new_path": "runtime/runtime_options.def"
    }
  ]
}
