)]}'
{
  "commit": "1885f694a820d3fc26da0e4819890aa2fd82ce47",
  "tree": "257cd5099d930a7cda2421e38427ce428664814f",
  "parents": [
    "088add4e7b11daa57a2a4d04b6b230a85739e22b"
  ],
  "author": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Mon Mar 23 11:28:44 2020 -0400"
  },
  "committer": {
    "name": "Nicolas Capens",
    "email": "nicolascapens@google.com",
    "time": "Wed Mar 25 19:37:10 2020 +0000"
  },
  "message": "Fix handling Memset\u003c\u003e assignment and comparison\n\nPreviously the compiler would implicitly declare a copy constructor and\nassignment operator for classes derived from Memset\u003c\u003e, if they didn\u0027t\nhave user-defined ones. This can cause them to have uninitialized\npadding bytes. By defining them ourselves using memcpy() we can ensure\nthey\u0027re zero-initialized.\n\nAlso define equality and less-than operators. The latter makes classes\nderived from Memset\u003c\u003e suitable as std::map\u003c\u003e keys.\n\nis_memcmparable\u003c\u003e now no longer works on classed derived from Memset\u003c\u003e,\nbecause it uses std::is_trivially_copyable\u003c\u003e which isn\u0027t true when a\nuser-defined copy constructor or assignment operator is provided.\nInstead just rely on Memset\u003c\u003e\u0027s new equality operators.\n\nBug: b/131246679\nChange-Id: I6e4963db8186955d8d3d3ef356fa42ef6a024c64\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42728\nPresubmit-Ready: Nicolas Capens \u003cnicolascapens@google.com\u003e\nReviewed-by: Antonio Maiorano \u003camaiorano@google.com\u003e\nTested-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\nKokoro-Presubmit: kokoro \u003cnoreply+kokoro@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "435cbaff52d34caa5410b0dc4310eb78f26d51f7",
      "old_mode": 33188,
      "old_path": "src/Device/Blitter.hpp",
      "new_id": "8006945d0a2f59c4daad31a7c7b311ee9cdc067e",
      "new_mode": 33188,
      "new_path": "src/Device/Blitter.hpp"
    },
    {
      "type": "modify",
      "old_id": "d4d2bdbd0d3efe92faecd950ba321de27e52d990",
      "old_mode": 33188,
      "old_path": "src/Device/LRUCache.hpp",
      "new_id": "dedca45cd43614d64c13c29f170fd0b70770cd4d",
      "new_mode": 33188,
      "new_path": "src/Device/LRUCache.hpp"
    },
    {
      "type": "modify",
      "old_id": "6ce53aee081ab4e487424a0b7f8f9ae23de852c2",
      "old_mode": 33188,
      "old_path": "src/Device/Memset.hpp",
      "new_id": "877d10b276db8de91ba42e92ac04aa50dbea09ae",
      "new_mode": 33188,
      "new_path": "src/Device/Memset.hpp"
    },
    {
      "type": "modify",
      "old_id": "b24d2d325bb4dbd4e702983e8217b22a79c3b6d2",
      "old_mode": 33188,
      "old_path": "src/Device/PixelProcessor.cpp",
      "new_id": "6e0593558d29e47f52fd29e715960811358aa370",
      "new_mode": 33188,
      "new_path": "src/Device/PixelProcessor.cpp"
    },
    {
      "type": "modify",
      "old_id": "9a9a15fc3b72d791793179e67e8be74ad6786f11",
      "old_mode": 33188,
      "old_path": "src/Device/SetupProcessor.cpp",
      "new_id": "19e7843161c597a991518d0ee7735c391963c6fe",
      "new_mode": 33188,
      "new_path": "src/Device/SetupProcessor.cpp"
    },
    {
      "type": "modify",
      "old_id": "c7f4d5487684f9a65b5b691861a9a265cf334c65",
      "old_mode": 33188,
      "old_path": "src/Device/VertexProcessor.cpp",
      "new_id": "a2a33c52ce011a0952a8fd2dc13f679574e5b4ed",
      "new_mode": 33188,
      "new_path": "src/Device/VertexProcessor.cpp"
    }
  ]
}
