)]}'
{
  "commit": "f14f6c46e4bec7734a6d998bf04961578f34641f",
  "tree": "417cbc456b2ee1c56dcf4feb0d9536a5c476c152",
  "parents": [
    "ad54c71632cc0f18584a7009f1e6fc44f5453bc7"
  ],
  "author": {
    "name": "Antonio Maiorano",
    "email": "amaiorano@google.com",
    "time": "Tue Nov 03 16:34:35 2020 -0500"
  },
  "committer": {
    "name": "Antonio Maiorano",
    "email": "amaiorano@google.com",
    "time": "Thu Nov 05 19:59:11 2020 +0000"
  },
  "message": "Subzero: fix non-deterministic stack layout and code-gen\n\nUsing std::unordered_set to hold unmaterialized variables meant that\nwhen materializeAll was called, the order of variables would differ\nbetween runs of the same executable on the same target.\n\nInstead, we now use a map of Variable* to a monotonically increasing\ncounter, allowing us to not only guarantee order-consistency across\nruns, but also means we can submit variables in the order they are\ndeclared, which may be preferable by the JIT backend.\n\nNote that this also affects LLVM; however, LLVM likely already performs\nstack variable reordering, so the effects are minimized. Nonetheless,\nthis change likely also fixes determinism when using LLVM.\n\nBug: angleproject:4482\nBug: b/172365901\nChange-Id: I5698085ab96663b3c9a2fae4f01b1c1b3aac8b4b\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/49949\nPresubmit-Ready: Antonio Maiorano \u003camaiorano@google.com\u003e\nTested-by: Antonio Maiorano \u003camaiorano@google.com\u003e\nKokoro-Result: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4aee82daaf817ee9dc35f6737a6c3b0b19ed8109",
      "old_mode": 33188,
      "old_path": "src/Reactor/LLVMReactor.cpp",
      "new_id": "31491c3d077d95e348c09acdfa13ee934e17402d",
      "new_mode": 33188,
      "new_path": "src/Reactor/LLVMReactor.cpp"
    },
    {
      "type": "modify",
      "old_id": "d342595213e0cfd0f0925be9779ab172c3226018",
      "old_mode": 33188,
      "old_path": "src/Reactor/Reactor.cpp",
      "new_id": "4ea9ebe0ce75299d2b2f9c7bd59aea9a84ae3485",
      "new_mode": 33188,
      "new_path": "src/Reactor/Reactor.cpp"
    },
    {
      "type": "modify",
      "old_id": "e3019763e6456dc6a9b5f80398719ae504fd5e57",
      "old_mode": 33188,
      "old_path": "src/Reactor/Reactor.hpp",
      "new_id": "77cf3af157b91d273ec65cfed6c7715dfb4f4fef",
      "new_mode": 33188,
      "new_path": "src/Reactor/Reactor.hpp"
    },
    {
      "type": "modify",
      "old_id": "85c99e3fb41dff81536ed801c6e749a777219387",
      "old_mode": 33188,
      "old_path": "src/Reactor/SubzeroReactor.cpp",
      "new_id": "21787b8dfd386a551cc97cb11d8e6f773487c450",
      "new_mode": 33188,
      "new_path": "src/Reactor/SubzeroReactor.cpp"
    }
  ]
}
