// the heap to a pre-allocated resource error
pub(crate) fn push_cell(&mut self, cell: HeapCellValue) -> Result<(), usize> {
unsafe {
- if self.inner.byte_len == self.inner.byte_cap {
- if !self.grow() {
- return Err(self.resource_error_offset());
- }
+ if self.inner.byte_len == self.inner.byte_cap && !self.grow() {
+ return Err(self.resource_error_offset());
}
// SAFETY:
if let Some(c) = char_iter.next() {
if n == 1 {
self.unify_char(c, a3);
+ } else if char_iter.next().is_some() {
+ unify_fn!(*self, pstr_loc_as_cell!(pstr_loc + c.len_utf8()), a3);
} else {
- if char_iter.next().is_some() {
- unify_fn!(*self, pstr_loc_as_cell!(pstr_loc + c.len_utf8()), a3);
- } else {
- let tail_idx = Heap::pstr_tail_idx(pstr_loc + c.len_utf8());
- unify_fn!(*self, self.heap[tail_idx], a3);
- }
+ let tail_idx = Heap::pstr_tail_idx(pstr_loc + c.len_utf8());
+ unify_fn!(*self, self.heap[tail_idx], a3);
}
} else {
unreachable!()