)]}'
{
  "commit": "0ecea57a8a29db0f19a5c80ba17570d91cb06885",
  "tree": "9c0d9899dc112ff93a802d7d426fef872d7deab6",
  "parents": [
    "395b48825aa294b0934ef302c039b0ba45ccf2d0"
  ],
  "author": {
    "name": "Ben Clayton",
    "email": "bclayton@google.com",
    "time": "Fri Apr 16 20:30:21 2021 +0000"
  },
  "committer": {
    "name": "Commit Bot service account",
    "email": "commit-bot@chromium.org",
    "time": "Fri Apr 16 20:30:21 2021 +0000"
  },
  "message": "Add ShareableCloneable, dervies from Cloneable\n\nThe CloneContext will currently de-duplicate any pointers that are cloned multiple times, however this isn\u0027t ideal behavior for AST nodes.\n\nAST nodes must be unique in the tree, so a non-transform clone of the AST from one program to another should only ever Clone() called once per node. Hitting the map for these is inefficent, worse still, there are cases in the transforms where we actually *want* to create N copies of the same source node. The current implementation makes this impossible.\n\nThis change introduces ShareableCloneable, a new base class that derives from Cloneable.\nRepeated calls to CloneContext::Clone() for Cloneable pointer types will now produce a new, unique instance per call.\n\nRepeated calls to CloneContext::Clone() for ShareableCloneable pointer types will de-duplicate as before.\n\ntype::Type objects are shared, want deduplication while cloning, so now derive from ShareableCloneable.\nast::Node continues to derive from Cloneable.\n\nBug tint:469\n\nChange-Id: I5ca906d507de6271d5d715cfdc962a55b721e821\nReviewed-on: https://dawn-review.googlesource.com/c/tint/+/47776\nCommit-Queue: Ben Clayton \u003cbclayton@google.com\u003e\nReviewed-by: Antonio Maiorano \u003camaiorano@google.com\u003e\nReviewed-by: James Price \u003cjrprice@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "902366086a14e74362b79e1d9413e47fcd1a977f",
      "old_mode": 33188,
      "old_path": "src/clone_context.cc",
      "new_id": "1f6b09bc3474fb1638384fdfd6549bbfa37538aa",
      "new_mode": 33188,
      "new_path": "src/clone_context.cc"
    },
    {
      "type": "modify",
      "old_id": "2ff66caaac838549d2773400cf8aa99c039982a0",
      "old_mode": 33188,
      "old_path": "src/clone_context.h",
      "new_id": "55af18f7319de27ed00c1fb8f57a73836fc3cced",
      "new_mode": 33188,
      "new_path": "src/clone_context.h"
    },
    {
      "type": "modify",
      "old_id": "d8736e4c8342fbb68ba1f95b67115fa186da36f1",
      "old_mode": 33188,
      "old_path": "src/clone_context_test.cc",
      "new_id": "7337de646a0a0badd21170cdec8070beb4636934",
      "new_mode": 33188,
      "new_path": "src/clone_context_test.cc"
    },
    {
      "type": "modify",
      "old_id": "0dd9eafefba3767805824c62b5a3ff0393e3fe1a",
      "old_mode": 33188,
      "old_path": "src/type/type.h",
      "new_id": "39bc71093faf4003d926dc32ad20d791547c30c2",
      "new_mode": 33188,
      "new_path": "src/type/type.h"
    }
  ]
}
