)]}'
{
  "commit": "dbfd00f44daf67e5f42f4d297d77be3237b8a35d",
  "tree": "cf4638833f9759221b5e367b5e4d8a2daa4ae429",
  "parents": [
    "dbc9ff11bf9df6ceafc8fb536fcdfe3c6ae41c26"
  ],
  "author": {
    "name": "Martin Kustermann",
    "email": "kustermann@google.com",
    "time": "Fri Apr 05 15:51:34 2019 +0000"
  },
  "committer": {
    "name": "commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Fri Apr 05 15:51:34 2019 +0000"
  },
  "message": "[vm/compiler] Add new optimization pass which inlines typed data accesses\n\nBased on the unified typed data layout, we can now inline accesses to\ntyped data interface classes if there are no 3rd party implementations\nof those interfaces.\n\nExample: If a receiver is of type Uint8List and we call `[]` or `[]\u003d` we\nwill inline the byte access.\n\nInstead of changing the existing inliner / call specializer we add this\nas an extra pass: If the inliner / call specializer infer that the\nreceiver type is e.g. internal typed data then it will perform the\ninlining itself using more optimized LoadIndexed instruction.\n\n\u003d\u003e Only if those existing optimization passes have not been able to inline\n   the access will we, later on in the compilation pipeline, run a\n   specialized pass which will inline the accesses using LoadUntagged +\n   LoadIndexed (which is slightly less efficient than using only LoadIndexed\n   for internal typed data).\n\nAs a first step this is only done for AOT.\n\nFor ease of writing tests matching certain IR graphs this CL also adds a\nIR pattern matcher.\n\nIssue https://github.com/dart-lang/sdk/issues/35154\n\nCq-Include-Trybots: luci.dart.try:vm-canary-linux-debug-try, vm-dartkb-linux-debug-x64-try, vm-dartkb-linux-release-x64-try, vm-kernel-asan-linux-release-x64-try, vm-kernel-checked-linux-release-x64-try, vm-kernel-linux-debug-ia32-try, vm-kernel-linux-debug-simdbc64-try, vm-kernel-linux-debug-x64-try, vm-kernel-linux-product-x64-try, vm-kernel-linux-release-ia32-try, vm-kernel-linux-release-simarm-try, vm-kernel-linux-release-simarm64-try, vm-kernel-linux-release-simdbc64-try, vm-kernel-linux-release-x64-try, vm-kernel-optcounter-threshold-linux-release-ia32-try, vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-android-release-arm-try, vm-kernel-precomp-bare-linux-release-simarm-try, vm-kernel-precomp-bare-linux-release-simarm64-try, vm-kernel-precomp-bare-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-product-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-obfuscate-linux-release-x64-try, vm-kernel-precomp-win-release-simarm64-try, vm-kernel-precomp-win-release-x64-try, vm-kernel-reload-linux-debug-x64-try, vm-kernel-reload-linux-release-x64-try, vm-kernel-reload-rollback-linux-debug-x64-try, vm-kernel-reload-rollback-linux-release-x64-try, vm-kernel-win-debug-ia32-try, vm-kernel-win-debug-x64-try, vm-kernel-win-product-x64-try, vm-kernel-win-release-ia32-try, vm-kernel-win-release-x64-try\n\nChange-Id: I5f2e01a55f46b473f64478b05679f65b9fd7c4c8\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/98662\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\nReviewed-by: Vyacheslav Egorov \u003cvegorov@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f4d63f7adc916468e84482b3b806649f65b448e2",
      "old_mode": 33188,
      "old_path": "runtime/vm/class_finalizer.cc",
      "new_id": "ce2bac2a46b2d5a9bf3ca0cd5fec780f88b530c2",
      "new_mode": 33188,
      "new_path": "runtime/vm/class_finalizer.cc"
    },
    {
      "type": "modify",
      "old_id": "b04473bfa86375e1e6c60615faacb1755267fec6",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/aot/aot_call_specializer.cc",
      "new_id": "07d879fe23b03f6db2955cfd1d02462579c0c563",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/aot/aot_call_specializer.cc"
    },
    {
      "type": "modify",
      "old_id": "3f182e78f9ccd0b4efadd02c44e501e68d39f7f8",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/backend/il.cc",
      "new_id": "5a2d211ec0c941bc11a57736c622c4d86f086d35",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/backend/il.cc"
    },
    {
      "type": "modify",
      "old_id": "fda59b3945abebc047fa928d10b6021320e0f912",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/backend/il.h",
      "new_id": "6feeba16a0eab19140e973675b92ae47d70851fa",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/backend/il.h"
    },
    {
      "type": "modify",
      "old_id": "083a2c9db6dc37bb070a529da3271edfca6e21fb",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/backend/il_test_helper.cc",
      "new_id": "2cfe72a6c9583b73d164fab6964f8fd4471b8536",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/backend/il_test_helper.cc"
    },
    {
      "type": "modify",
      "old_id": "cf96b29d82d4b80af9e2a8ae8f102835c7797eb8",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/backend/il_test_helper.h",
      "new_id": "72ba701bfb0f363d15a9fb9ed0ecc9d18b9a5d5a",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/backend/il_test_helper.h"
    },
    {
      "type": "modify",
      "old_id": "604847dd8427193818c9bc12e52eec38b1d01fd9",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/backend/type_propagator.cc",
      "new_id": "0dec0c96690ffa445a81a956f92aca625af40d95",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/backend/type_propagator.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0eab36f772de57e0366afb3109cd6291a11ecbe6",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/backend/typed_data_aot_test.cc"
    },
    {
      "type": "modify",
      "old_id": "266d8db9c983e667a2961a2873cd96e6a61f0f00",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/call_specializer.cc",
      "new_id": "2148b751b0268d1e31f5f690661bf125b0bcf8a0",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/call_specializer.cc"
    },
    {
      "type": "modify",
      "old_id": "cb9ca8ccde09b0d8405a8ed5234471e78465b414",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/call_specializer.h",
      "new_id": "e9a0a6d580a71dee7e0d5d2202f29a36f3a3f17b",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/call_specializer.h"
    },
    {
      "type": "modify",
      "old_id": "a6ceb605b9c1902b76a68d8078268f71132831ef",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/compiler_pass.cc",
      "new_id": "3e08c06a439e153ac522aea51dc33cdb27a8d7cc",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/compiler_pass.cc"
    },
    {
      "type": "modify",
      "old_id": "3c16df835b166cfba5a720d6e066517e856dda99",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/compiler_pass.h",
      "new_id": "e5aa8230eff210c56447ad55f525c16b5c830e12",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/compiler_pass.h"
    },
    {
      "type": "modify",
      "old_id": "a0f521b7dddc222cb500981d65bc0458c0403399",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/compiler_sources.gni",
      "new_id": "f38829589883c567c70ac79a346075c6960a3078",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/compiler_sources.gni"
    },
    {
      "type": "modify",
      "old_id": "771116b79b4ce8b26530c3acc459a0c7403344eb",
      "old_mode": 33188,
      "old_path": "runtime/vm/symbols.h",
      "new_id": "845d780acdd43693ec3cec8d0ec4957101d2da19",
      "new_mode": 33188,
      "new_path": "runtime/vm/symbols.h"
    }
  ]
}
