Don't slice a sliced blob (#36866)

When slicing a blob that is already sliced we should reference it's
parent's data instead of creating a subview into the sliced blob. This
keeps the blob ancestry chain small and reduces the number of blobs that
we have to resolve.

Testing: Includes a new crashtest
Fixes: https://github.com/servo/servo/issues/36843

[try
run](1484487366)

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
Simon Wülker 2025-05-06 09:25:11 +02:00 committed by GitHub
parent 3b806ca424
commit 54c2818974
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 76 additions and 69 deletions

View file

@ -221,9 +221,9 @@ impl BlobImpl {
}
/// Construct a BlobImpl from a slice of a parent.
pub fn new_sliced(rel_pos: RelativePos, parent: BlobId, type_string: String) -> BlobImpl {
pub fn new_sliced(range: RelativePos, parent: BlobId, type_string: String) -> BlobImpl {
let blob_id = BlobId::new();
let blob_data = BlobData::Sliced(parent, rel_pos);
let blob_data = BlobData::Sliced(parent, range);
BlobImpl {
blob_id,
type_string,