)]}'
{
  "commit": "1ae9b71c474628d60eb251a3f62967fe64151bb2",
  "tree": "cb4fb71be788b327f78bd0d2fc8ec7b4f2a022c5",
  "parents": [
    "732c6540c19610d2653ce73c09eb6cb66da15f42"
  ],
  "author": {
    "name": "Abseil Team",
    "email": "absl-team@google.com",
    "time": "Tue Apr 20 07:17:48 2021 -0700"
  },
  "committer": {
    "name": "Dino Radaković",
    "email": "dinor@google.com",
    "time": "Tue Apr 20 08:45:46 2021 -0700"
  },
  "message": "Export of internal Abseil changes\n\n--\nac1df60490c9583e475e22de7adfc40023196fbf by Martijn Vels \u003cmvels@google.com\u003e:\n\nChange Cord constructor(string_view) to explicit make_tree and Cordz tracking\n\nThis CL changes the ctor to use an easier to maintain model where Cord code explicitly invokes Cordz update or new / tree logic, which avoids the ambiguity of the \u0027branched\u0027 InlineRep::set_tree code. This removes the need to equip InlineRep with \u0027MethodIdentifier\u0027 or other necessary call info, and also is a cleaner model: InlineRep is carrying too much code now that should plainly sit in Cord, especially with all internal abstractions having moved to InlineData.\n\nSee child CL(s) for desired state\n\nPiperOrigin-RevId: 369433619\n\n--\nb665af7f586e6c679a8b27d4f78d5a1d2b596058 by Abseil Team \u003cabsl-team@google.com\u003e:\n\nRename the \u0027Compare\u0027 template type to \u0027LessThan\u0027, as the passed-in function is expected to act like operator\u003c. It is worth avoiding confusion with std::compare, which returns an int (-1/0/1), as due to implicit casting this can lead to hard-to-spot bugs.\n\nPiperOrigin-RevId: 369391118\n\n--\nc3c775269cad0f4982ec63f3616dd78bb9e52dca by Martijn Vels \u003cmvels@google.com\u003e:\n\nIntegrate CordzUpdateTracker into CordzInfo\n\nPiperOrigin-RevId: 369348824\n\n--\n771d81ed357496c117179e1daec76eba5155932d by Martijn Vels \u003cmvels@google.com\u003e:\n\nReplace mutex() with Lock() / Unlock() function\n\nMini design future tracking of CordzInfo sampled cords: CordzInfo holds a CordRep* reference without a reference count. Cord is responsible for synchronizing updates for sampled cords such that the CordRep* contained in CordzInfo is at all times valid. This is done by scoping Lock() and Unlock() calls around the code modifying the code of a sampled cord. For example (using the future CL CordzUpdateScope()):\n\nCordzInfo* cordz_info \u003d get_cordz_info();\nCordzUpdateScope scope(cordz_info, CordzUpdateTracker::kRemovePrefix);\nCordRep* rep \u003d RemovePrefixImpl(root);\nset_tree(rep);\nif (cordz_info) {\n  cordz_info-\u003eSetCordRep(rep);\n}\n\nOn CordzInfo::Unlock(), if the internal rep is null, the cord is no longer sampled, and CordzInfo will be deleted. Thus any update resulting in the Cord being inlined will automatically no longer be sampled.\n\nPiperOrigin-RevId: 369338802\n\n--\n5563c12df04a1e965a03b50bdd032739c55c0706 by Martijn Vels \u003cmvels@google.com\u003e:\n\nAdd UpdateTracker to CordzStatistics\n\nPiperOrigin-RevId: 369318178\n\n--\n6b4d8463722a3e55a3e8f6cb3741a41055e7f83e by Martijn Vels \u003cmvels@google.com\u003e:\n\nAdd kClear, kConstructor* and kUnknown values and fix typo\n\nPiperOrigin-RevId: 369297163\n\n--\n041adcbc929789d6d53371a8236840fc350e1eeb by Derek Mauro \u003cdmauro@google.com\u003e:\n\nSwitch from malloc to operator new in pool_urbg.cc\nso it can only fail by throwing/aborting\n\nPiperOrigin-RevId: 369274087\n\n--\n5d97a5f43e3f2d02d0a5bbe586d93b5751812981 by Benjamin Barenblat \u003cbbaren@google.com\u003e:\n\nCorrect Thumb function bound computation in the symbolizer\n\nOn 32-bit ARM, all functions are aligned to multiples of two bytes, and\nthe lowest-order bit in a function’s address is ignored by the CPU when\ncomputing branch targets. That bit is still present in instructions and\nELF symbol tables, though; it’s repurposed to indicate whether the\nfunction contains ARM or Thumb code. If the symbolizer doesn’t ignore\nthat bit, it will believe Thumb functions have boundaries that are off\nby one byte, so instruct the symbolizer to null out the lowest-order bit\nafter retrieving it from the symbol table.\n\nPiperOrigin-RevId: 369254082\n\n--\n462bb307c6cc332c1e2c3adb5f0cad51804bf937 by Derek Mauro \u003cdmauro@google.com\u003e:\n\nAdd a check for malloc failure in pool_urbg.cc\nGitHub #940\n\nPiperOrigin-RevId: 369238100\nGitOrigin-RevId: ac1df60490c9583e475e22de7adfc40023196fbf\nChange-Id: Ic6ec91c62cd3a0031f6a75a43a83da959ece2d25\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6398438f08cefae7110d94b8e29f7490a7cfed6d",
      "old_mode": 33188,
      "old_path": "absl/algorithm/container.h",
      "new_id": "1652e7b055b5577074cae60c35aa1844fda36d9d",
      "new_mode": 33188,
      "new_path": "absl/algorithm/container.h"
    },
    {
      "type": "modify",
      "old_id": "f4d5727bdeb58294c3767229f5eb3534251dc80d",
      "old_mode": 33188,
      "old_path": "absl/debugging/symbolize_elf.inc",
      "new_id": "87dbd078b9c547f0ca5f09bb3e9b1a7f89734396",
      "new_mode": 33188,
      "new_path": "absl/debugging/symbolize_elf.inc"
    },
    {
      "type": "modify",
      "old_id": "a2dd4956c497e21a5a8c1006b0defe32c2800ace",
      "old_mode": 33188,
      "old_path": "absl/debugging/symbolize_test.cc",
      "new_id": "35de02e24b473c342e2d3f821d62667cfed8d786",
      "new_mode": 33188,
      "new_path": "absl/debugging/symbolize_test.cc"
    },
    {
      "type": "modify",
      "old_id": "5bee530770eb5d47bdfbe0cecb3ae5ff9c171bb6",
      "old_mode": 33188,
      "old_path": "absl/random/internal/pool_urbg.cc",
      "new_id": "725100a4150980c6df532261c85ec2484f5cb2fe",
      "new_mode": 33188,
      "new_path": "absl/random/internal/pool_urbg.cc"
    },
    {
      "type": "modify",
      "old_id": "1306ea65a9ef7eb36472507e11e7f8a390296182",
      "old_mode": 33188,
      "old_path": "absl/strings/BUILD.bazel",
      "new_id": "95ed08689b6ccf2ee61985c898a6d97d43cb1479",
      "new_mode": 33188,
      "new_path": "absl/strings/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "8f41f0645d843064ec53836eb55b04f2b083e9c9",
      "old_mode": 33188,
      "old_path": "absl/strings/CMakeLists.txt",
      "new_id": "5a13831fbb1bbeabb1d0cbc8ada357e94720efa3",
      "new_mode": 33188,
      "new_path": "absl/strings/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "d33d6a0d45b0c98689c6ec71d7620f0210a86b38",
      "old_mode": 33188,
      "old_path": "absl/strings/cord.cc",
      "new_id": "770c5a705ccd78434115d59cd0f323f831496c6f",
      "new_mode": 33188,
      "new_path": "absl/strings/cord.cc"
    },
    {
      "type": "modify",
      "old_id": "de1470b2c20fa404dde074d29aaa094e569c6ad7",
      "old_mode": 33188,
      "old_path": "absl/strings/cord.h",
      "new_id": "1e6a73a5c6f0d44b0ff545541e17314d58578db7",
      "new_mode": 33188,
      "new_path": "absl/strings/cord.h"
    },
    {
      "type": "modify",
      "old_id": "4dec63d5decfae8b7d54699c7f1aef747d08cbcc",
      "old_mode": 33188,
      "old_path": "absl/strings/internal/cordz_info.cc",
      "new_id": "6540d134562bb0497057ea2b11598bd1d84f9d82",
      "new_mode": 33188,
      "new_path": "absl/strings/internal/cordz_info.cc"
    },
    {
      "type": "modify",
      "old_id": "c1090a1cf19e2bf4e31320805c98113929f6977f",
      "old_mode": 33188,
      "old_path": "absl/strings/internal/cordz_info.h",
      "new_id": "5345be75b3fe86cee80cf6e09c24de4fe51c3241",
      "new_mode": 33188,
      "new_path": "absl/strings/internal/cordz_info.h"
    },
    {
      "type": "modify",
      "old_id": "be20e4a4cc8c4a6890221e20ebc887ef0a1afe25",
      "old_mode": 33188,
      "old_path": "absl/strings/internal/cordz_info_test.cc",
      "new_id": "66acf9b61fa7007332db42699117953adaaab26d",
      "new_mode": 33188,
      "new_path": "absl/strings/internal/cordz_info_test.cc"
    },
    {
      "type": "modify",
      "old_id": "ce7c39aa13d5b02a57eff201e6a34c6d14bcc479",
      "old_mode": 33188,
      "old_path": "absl/strings/internal/cordz_statistics.h",
      "new_id": "6e335c0b86c5ab3bbbc8dced08b14f5068febb90",
      "new_mode": 33188,
      "new_path": "absl/strings/internal/cordz_statistics.h"
    },
    {
      "type": "modify",
      "old_id": "3c617e939869ca9b09d8fee5d96bac9d7367a8b9",
      "old_mode": 33188,
      "old_path": "absl/strings/internal/cordz_update_tracker.h",
      "new_id": "a090676dc74b5a104220a3b75fc38870f5fb0eb7",
      "new_mode": 33188,
      "new_path": "absl/strings/internal/cordz_update_tracker.h"
    },
    {
      "type": "modify",
      "old_id": "45782046af13818635ef6216fb702c0bae3f06c0",
      "old_mode": 33188,
      "old_path": "absl/strings/internal/cordz_update_tracker_test.cc",
      "new_id": "eda662f2fe1fbc007e02faf77f2f1c054c9a77b7",
      "new_mode": 33188,
      "new_path": "absl/strings/internal/cordz_update_tracker_test.cc"
    }
  ]
}
