Removing one buffer copy in VertexBuffer

pmeunier
Jan 12, 2022, 1:42 PM
YHG37GA4BELXO4I6TKXMEBIX5MHQT6DWFFFIYYUGLZ4UWCC3NGOQC

Dependencies

  • [2] 7ABOS34C Debug statements and formatting
  • [3] ZDK3GNDB Tag transactions (including a massive refactoring of errors)
  • [4] JACZYXK4 Fixing a bug in unrecord
  • [5] KNB3RZMS Fixing path crashes related to the new non-null roots
  • [6] 3S6LU2U5 abstract out FileMetadata (de)serialistion
  • [7] D3XN3HHJ Avoid the root in fs::follow_oldest_path
  • [8] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [9] WUBONLD6 Fixing libpijul::fs::find_path for metadata/encodings
  • [10] P6WE7YKL Unrecord did not check whether a file already existed before adding it back
  • [11] RMDMAYRX Adding a root inode (aka supporting submodules)
  • [12] SBSM3VZV Fixing a bug in deletions (the encoding was improperly set)
  • [13] SDCIBGQ5 Comments and debugging
  • [14] PXR7LQ26 Resurrecting known deleted files instead of re-adding them (this is needed after `tag reset`)
  • [15] U56SMNHU Breaking out of potentially infinite loops in follow_oldest_path
  • [16] 7UPL3Y2A Unrecord: don't restore the same unrecorded file deletion twice in the inodes and tree tables
  • [17] I52XSRUH Massive cleanup, and simplification
  • [18] MDBC27ZU Fixing a bug when unrecording directory deletions (the "directory marker" in the tree table was not set)
  • [19] GHO6DWPI Refactoring iterators
  • [20] I24UEJQL Various post-fire fixes
  • [21] RRCSHAYZ Formatting
  • [22] 2RXOCWUW Making libpijul deterministic (and getting rid of `rand`)
  • [23] 5FI6SBEZ Re-implement change printing and parsing
  • [24] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [25] YN63NUZO Sanakirja 1.0
  • [26] TVVW53HZ Conflict resolution
  • [27] DO2Y5TY5 Tag synchronisation
  • [28] VO5OQW4W Removing anyhow in libpijul

Change contents

  • replacement in pijul/src/commands/credit.rs at line 97
    [4.6159][4.970:1035]()
    fn output_line<E, C: FnOnce(&mut Vec<u8>) -> Result<(), E>>(
    [4.6159]
    [4.181121]
    fn output_line<E, C: FnOnce(&mut [u8]) -> Result<(), E>>(
  • replacement in pijul/src/commands/credit.rs at line 106
    [4.181265][4.181265:181291]()
    self.buf.clear();
    [4.181265]
    [4.181291]
    assert_eq!(self.buf.len(), v.end - v.start);
  • replacement in libpijul/src/vertex_buffer.rs at line 17
    [4.5122][4.5122:5172]()
    F: FnOnce(&mut Vec<u8>) -> Result<(), E>;
    [4.5122]
    [4.217952]
    F: FnOnce(&mut [u8]) -> Result<(), E>;
  • replacement in libpijul/src/vertex_buffer.rs at line 91
    [4.5860][4.5860:5910]()
    C: FnOnce(&mut Vec<u8>) -> Result<(), E>,
    [4.5860]
    [4.5910]
    C: FnOnce(&mut [u8]) -> Result<(), E>,
  • replacement in libpijul/src/vertex_buffer.rs at line 93
    [4.5916][4.219993:220019](),[4.219993][4.219993:220019]()
    self.buf.clear();
    [4.5916]
    [4.220019]
    self.buf.resize(v.end - v.start, 0);
  • replacement in libpijul/src/vertex_buffer.rs at line 196
    [4.6335][4.6335:6385]()
    C: FnOnce(&mut Vec<u8>) -> Result<(), E>,
    [4.6335]
    [4.6385]
    C: FnOnce(&mut [u8]) -> Result<(), E>,
  • replacement in libpijul/src/vertex_buffer.rs at line 198
    [4.6391][4.222533:222559](),[4.222533][4.222533:222559]()
    self.buf.clear();
    [4.6391]
    [4.222559]
    self.buf.resize(v.end - v.start, 0);
  • replacement in libpijul/src/unrecord/working_copy.rs at line 104
    [4.499][4.229174:229205](),[4.7077][4.229174:229205](),[3.9301][4.229174:229205](),[4.21151][4.229174:229205](),[4.229174][4.229174:229205]()
    let mut name = Vec::new();
    [3.9301]
    [4.652]
    let mut name = vec![0; source.end - source.start];
  • replacement in libpijul/src/record.rs at line 584
    [4.52122][4.52122:52169]()
    let mut name = Vec::new();
    [4.52122]
    [4.52169]
    let mut name = vec![0; child.end - child.start];
  • replacement in libpijul/src/record.rs at line 1210
    [4.11052][4.11052:11087]()
    let mut meta = Vec::new();
    [4.11052]
    [4.11087]
    let mut meta = vec![0; name_dest.end - name_dest.start];
  • edit in libpijul/src/record.rs at line 1326
    [2.309][4.512762:512793](),[4.512762][4.512762:512793]()
    previous_name.clear();
  • edit in libpijul/src/record.rs at line 1327
    [4.52079]
    [4.1032]
    previous_name.resize(parent_dest.end - parent_dest.start, 0);
  • edit in libpijul/src/record.rs at line 1641
    [4.627]
    [4.627]
    previous_name.resize(parent_dest.end - parent_dest.start, 0);
  • replacement in libpijul/src/output/mod.rs at line 226
    [4.732][4.23205:23240](),[4.23205][4.23205:23240]()
    let mut name_buf = Vec::new();
    [4.732]
    [4.23240]
    let mut name_buf = vec![0; name_vertex.end - name_vertex.start];
  • edit in libpijul/src/fs.rs at line 640
    [4.109758]
    [4.1605]
    buf.resize(dest.end - dest.start, 0);
  • edit in libpijul/src/fs.rs at line 739
    [4.755303]
    [4.1750]
    buf.resize(dest.end - dest.start, 0);
  • replacement in libpijul/src/fs.rs at line 889
    [4.908][4.908:942]()
    name_buf.clear();
    [4.908]
    [4.942]
    name_buf.resize(name_dest.end - name_dest.start, 0);
  • replacement in libpijul/src/fs.rs at line 1018
    [4.762917][4.762917:762947]()
    name_buf.clear();
    [4.762917]
    [4.762947]
    name_buf.resize(name.end - name.start, 0);
  • edit in libpijul/src/diff/vertex_buffer.rs at line 6
    [4.769131][4.769131:769153]()
    pub buf: Vec<u8>,
  • edit in libpijul/src/diff/vertex_buffer.rs at line 64
    [4.770937][4.770937:770993]()
    buf: Vec::with_capacity(graph.len_bytes()),
  • replacement in libpijul/src/diff/vertex_buffer.rs at line 138
    [4.32656][4.32656:32706]()
    C: FnOnce(&mut Vec<u8>) -> Result<(), E>,
    [4.32656]
    [4.32706]
    C: FnOnce(&mut [u8]) -> Result<(), E>,
  • replacement in libpijul/src/diff/vertex_buffer.rs at line 143
    [4.773750][4.773750:773803]()
    self.buf.clear();
    c(&mut self.buf)?;
    [4.773750]
    [4.773803]
    let len = self.contents_a.len();
    self.contents_a.resize(len + (v.end - v.start), 0);
    c(&mut self.contents_a[len..])?;
  • replacement in libpijul/src/diff/vertex_buffer.rs at line 147
    [4.773836][4.773836:773876]()
    pos: self.contents_a.len(),
    [4.773836]
    [4.773876]
    pos: len,
  • edit in libpijul/src/diff/vertex_buffer.rs at line 152
    [4.774014][4.774014:774057]()
    self.contents_a.extend(&self.buf);
  • replacement in libpijul/src/changestore/mod.rs at line 34
    [4.818204][4.818204:818231]()
    buf: &mut Vec<u8>,
    [4.818204]
    [4.33608]
    buf: &mut [u8],
  • replacement in libpijul/src/changestore/mod.rs at line 43
    [4.818473][4.818473:818500]()
    buf: &mut Vec<u8>,
    [4.818473]
    [4.33720]
    buf: &mut [u8],
  • replacement in libpijul/src/changestore/mod.rs at line 90
    [4.819822][4.819822:819852]()
    buf: &'a mut Vec<u8>,
    [4.819822]
    [4.2070]
    buf: &'a mut [u8],
  • edit in libpijul/src/changestore/mod.rs at line 92
    [4.2119][4.819911:819932](),[4.34335][4.819911:819932](),[4.819911][4.819911:819932]()
    buf.clear();
  • replacement in libpijul/src/changestore/memory.rs at line 51
    [4.821562][4.821562:821589]()
    buf: &mut Vec<u8>,
    [4.821562]
    [4.34753]
    buf: &mut [u8],
  • edit in libpijul/src/changestore/memory.rs at line 53
    [4.34791][4.137549:137603]()
    buf.resize(key.end.us() - key.start.us(), 0);
  • edit in libpijul/src/changestore/memory.rs at line 56
    [4.821758]
    [4.821758]
    assert_eq!(buf.len(), key.end - key.start);
  • replacement in libpijul/src/changestore/memory.rs at line 61
    [4.137672][4.821956:822022](),[4.821956][4.821956:822022]()
    buf.clear();
    buf.extend(&p.contents[start..end]);
    [4.137672]
    [4.822022]
    buf.clone_from_slice(&p.contents[start..end]);
  • replacement in libpijul/src/changestore/memory.rs at line 67
    [4.822127][4.822127:822154]()
    buf: &mut Vec<u8>,
    [4.822127]
    [4.34792]
    buf: &mut [u8],
  • edit in libpijul/src/changestore/memory.rs at line 70
    [4.822237][4.137673:137731]()
    buf.resize(key.end.us() - key.start.us(), 0);
  • edit in libpijul/src/changestore/memory.rs at line 73
    [4.822382]
    [4.822382]
    assert_eq!(key.end.us() - key.start.us(), buf.len());
  • replacement in libpijul/src/changestore/memory.rs at line 78
    [4.137808][4.822577:822651](),[4.822577][4.822577:822651]()
    buf.clear();
    buf.extend(&p.contents[start..end]);
    [4.137808]
    [4.822651]
    buf.clone_from_slice(&p.contents[start..end]);
  • replacement in libpijul/src/changestore/filesystem.rs at line 176
    [4.828584][4.828584:828611]()
    buf: &mut Vec<u8>,
    [4.828584]
    [4.35754]
    buf: &mut [u8],
  • edit in libpijul/src/changestore/filesystem.rs at line 179
    [4.88582][4.137809:137863](),[4.35792][4.137809:137863]()
    buf.resize(key.end.us() - key.start.us(), 0);
  • edit in libpijul/src/changestore/filesystem.rs at line 183
    [4.828797]
    [4.828797]
    assert_eq!(key.end - key.start, buf.len());
  • replacement in libpijul/src/changestore/filesystem.rs at line 193
    [4.829090][4.829090:829117]()
    buf: &mut Vec<u8>,
    [4.829090]
    [4.35793]
    buf: &mut [u8],
  • replacement in libpijul/src/changestore/filesystem.rs at line 196
    [4.829200][4.137922:137980]()
    buf.resize(key.end.us() - key.start.us(), 0);
    [4.829200]
    [4.829263]
    assert_eq!(key.end.us() - key.start.us(), buf.len());
  • replacement in libpijul/src/change/text_changes.rs at line 1096
    [4.85978][4.35423:35452]()
    tmp.clear();
    [4.85978]
    [4.86007]
    tmp.resize(e.to.end - e.to.start, 0);
  • replacement in libpijul/src/alive/output.rs at line 215
    [4.993511][4.993511:993560]()
    let get_contents = |buf: &mut Vec<u8>| {
    [4.993466]
    [4.100565]
    let get_contents = |buf: &mut [u8]| {