Tranches d’object stream sans copie

Quand la résolution de liens matérialise pour la première fois un membre compressé /Type /ObjStm, le parseur lit désormais une vue de tranche sans copie sur le tampon de conteneur décompressé partagé au lieu d’une sous-chaîne dupliquée plus une seconde copie de flux, si bien que les grands documents à nombreux membres ne paient plus une double copie par objet

THPDFObjectStreamSliceStream

Une vue TStream publique en lecture seule sur (source, offset, length) : elle retient le AnsiString source par référence pour que les octets du conteneur restent vivants sans être dupliqués, sert exactement les octets du membre, ajoute un LF final virtuel pour que les parseurs observent la disposition produite par la copie historique, et borne au lieu de lever sur les seeks avant le début de la tranche, à l’image de la tolérance de TMemoryStream

THPDFObjectStreamCacheInfo

Deux nouveaux diagnostics rapportent la voie sans copie : SliceViewCount compte les vues de membres remises au parseur et SliceViewBytes cumule les octets de membres qu’elles couvraient, à côté des compteurs existants de conteneur, d’indexation, de hits, de misses et d’octets en cache renvoyés par GetLoadedObjectStreamCacheInfo