)]}'
{
  "commit": "de6da881f02efb10a6c5fc282cd5fee3f7fd06ed",
  "tree": "f4c9110a6c4fc47ec0045b34cb0181c256cb2be1",
  "parents": [
    "0dc631a98c7d6d449d417877d1826bdd92b037bb"
  ],
  "author": {
    "name": "David Chisnall",
    "email": "github@theravensnest.org",
    "time": "Wed Jun 12 12:14:51 2024 +0100"
  },
  "committer": {
    "name": "David Chisnall",
    "email": "davidchisnall@users.noreply.github.com",
    "time": "Thu Jun 13 19:33:24 2024 +0100"
  },
  "message": "Use @jrtc27\u0027s approach to enable large sealed objects.\n\nAllocating large sealed objects is difficult because sealed objects have\na header that contains the virtual sealing type and both the full\n(sealed) object including the header and the (unsealed) part with the\nheader excluded must be representable.\n\n@jrtc27 pointed out that there\u0027s no real need for the header to be at\nthe start of the allocation.  This neat trick lets us lay out the\nobjects as:\n\n```\n|Padding|Header|Unsealed Object|\n        ^\n        Address of sealed capability is here.\n```\n\nAs long as we first round up the size of the unsealed object to be\nrepresentable, we can always then create a larger allocation that\ncontains padding at the start to preserve representability of the sealed\nobject.\n\nThis removes the restriction that we can\u0027t have sealed objects larger\nthan 4072 bytes, which will eliminate some annoying redirection in a few\nplaces.\n\nFixes #242\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f2299d202d77396018570c0e0600338cfe435db6",
      "old_mode": 33188,
      "old_path": "sdk/core/allocator/main.cc",
      "new_id": "9c585ce4efcc9c749f3edc98071cc5ea0d96c090",
      "new_mode": 33188,
      "new_path": "sdk/core/allocator/main.cc"
    },
    {
      "type": "modify",
      "old_id": "1c756700ce153454abd855e98dc5187192ec27d1",
      "old_mode": 33188,
      "old_path": "sdk/core/allocator/token.h",
      "new_id": "e9ce8f7f8ce2ca6270aaae0b13f83829883e5de4",
      "new_mode": 33188,
      "new_path": "sdk/core/allocator/token.h"
    },
    {
      "type": "modify",
      "old_id": "2c9ca62de77ffe76fadd9d20ae91bc4724565f8a",
      "old_mode": 33188,
      "old_path": "sdk/core/token_library/token_unseal.S",
      "new_id": "83919023e233ce4637d2176930a11b6582160f29",
      "new_mode": 33188,
      "new_path": "sdk/core/token_library/token_unseal.S"
    },
    {
      "type": "modify",
      "old_id": "59eb77308592cc0ee96280b0b5be183945ad6fcd",
      "old_mode": 33188,
      "old_path": "sdk/include/cheri.hh",
      "new_id": "8e18db3ce0cdef03a310bf3f99997c7d5de16d2c",
      "new_mode": 33188,
      "new_path": "sdk/include/cheri.hh"
    },
    {
      "type": "modify",
      "old_id": "084a29afd43f27892b3b9dd9c330cb6c82f7cec1",
      "old_mode": 33188,
      "old_path": "tests/allocator-test.cc",
      "new_id": "c64eaac3d3964c5bbe1f098fb95f230f0a884333",
      "new_mode": 33188,
      "new_path": "tests/allocator-test.cc"
    }
  ]
}
