)]}'
{
  "commit": "22d73d15e778a4c8dda5a141c0da4dc10f4d8bf3",
  "tree": "b5911e17345c0f5fa3c46dbcc8f1b98ac256c610",
  "parents": [
    "1c9f24263e6c39591d821a2ebb09a11e55cd957c"
  ],
  "author": {
    "name": "Antonio Maiorano",
    "email": "amaiorano@google.com",
    "time": "Fri Mar 20 00:13:28 2020 -0400"
  },
  "committer": {
    "name": "Antonio Maiorano",
    "email": "amaiorano@google.com",
    "time": "Fri Mar 20 14:05:09 2020 +0000"
  },
  "message": "Subzero: fix CoroutineBegin generation\n\nRework how instructions are injected at the top of the CoroutineBegin\nfunction by getting rid of replaceEntryNode, which attempted to replace\nthe entry node with a non-entry one. This seemed to work on all targets,\nexcept for Windows x86-32 (Win32) when passing enough arguments to\nCoroutines. In this case, it would crash in the code generated right\nafter this injected code. It looks like the code in replaceEntryNode is\nnot quite right, resulting in Subzero creating needless stack allocs per\nargument, and ultimately generating invalid offsets from the stack\npointer.\n\nInstead of fixing replaceEntryNode, I now simply remember the entryNode\nfor CoroutineBegin to use, adding the rest to a separate node for\nbasicBlock, and when finalizing the function, I connect entryNode to the\ninitial basicBlock node via a branch. This way, there is not messing\naround with function\u0027s node list.\n\nThis not only fixes the crash, but gets rid of the needless stack\nallocs per arg.\n\nBug: angleproject:4482\nChange-Id: I13f9c8c43ee07f35302208d9876e6fbdf0b1ad26\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42608\nKokoro-Presubmit: kokoro \u003cnoreply+kokoro@google.com\u003e\nTested-by: Antonio Maiorano \u003camaiorano@google.com\u003e\nReviewed-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4607f9c946313f0388998c9dc50519066e014166",
      "old_mode": 33188,
      "old_path": "src/Reactor/SubzeroReactor.cpp",
      "new_id": "df72f66039567c2debff40014c9abce1c575f6da",
      "new_mode": 33188,
      "new_path": "src/Reactor/SubzeroReactor.cpp"
    }
  ]
}
