mirror of
https://github.com/azalea-rs/simdnbt.git
synced 2025-08-02 15:36:03 +00:00
minor optimization by using push_unchecked for the first tape push
This commit is contained in:
parent
d4f50f2420
commit
576a1cc1bf
2 changed files with 27 additions and 12 deletions
|
@ -53,12 +53,17 @@ pub fn read<'a>(data: &mut Cursor<&'a [u8]>) -> Result<Nbt<'a>, Error> {
|
||||||
stack.push(ParsingStackElement::Compound {
|
stack.push(ParsingStackElement::Compound {
|
||||||
index_of_compound_element: 0,
|
index_of_compound_element: 0,
|
||||||
})?;
|
})?;
|
||||||
tapes.main.push(TapeElement::new_with_approx_len_and_offset(
|
unsafe {
|
||||||
TapeTagKind::Compound,
|
// SAFETY: we just created the MainTape so there's definitely space for an item
|
||||||
// these get overwritten later
|
tapes
|
||||||
0,
|
.main
|
||||||
0,
|
.push_unchecked(TapeElement::new_with_approx_len_and_offset(
|
||||||
));
|
TapeTagKind::Compound,
|
||||||
|
// these get overwritten later
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
))
|
||||||
|
};
|
||||||
|
|
||||||
read_with_stack(&mut data, &mut tapes, &mut stack)?;
|
read_with_stack(&mut data, &mut tapes, &mut stack)?;
|
||||||
|
|
||||||
|
@ -91,12 +96,17 @@ pub fn read_compound<'a>(data: &mut Cursor<&'a [u8]>) -> Result<BaseNbtCompound<
|
||||||
stack.push(ParsingStackElement::Compound {
|
stack.push(ParsingStackElement::Compound {
|
||||||
index_of_compound_element: 0,
|
index_of_compound_element: 0,
|
||||||
})?;
|
})?;
|
||||||
tapes.main.push(TapeElement::new_with_approx_len_and_offset(
|
unsafe {
|
||||||
TapeTagKind::Compound,
|
// SAFETY: we just created the MainTape so there's definitely space for an item
|
||||||
// these get overwritten later
|
tapes
|
||||||
0,
|
.main
|
||||||
0,
|
.push_unchecked(TapeElement::new_with_approx_len_and_offset(
|
||||||
));
|
TapeTagKind::Compound,
|
||||||
|
// these get overwritten later
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
))
|
||||||
|
};
|
||||||
|
|
||||||
read_with_stack(&mut data, &mut tapes, &mut stack)?;
|
read_with_stack(&mut data, &mut tapes, &mut stack)?;
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,11 @@ impl<A: Allocator> MainTape<A> {
|
||||||
self.end = unsafe { self.cur.add(extending_by) };
|
self.end = unsafe { self.cur.add(extending_by) };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsafe { self.push_unchecked(element) };
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub unsafe fn push_unchecked(&mut self, element: TapeElement) {
|
||||||
unsafe { self.cur.write(element) };
|
unsafe { self.cur.write(element) };
|
||||||
self.cur = unsafe { self.cur.add(1) };
|
self.cur = unsafe { self.cur.add(1) };
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue