% p_trie_arity_univ(+Term,-FunctorData,-ArgumentsList).
p_trie_arity_univ(Term,functor_data(Name,Arity),Arguments) :-
( var(Term) ->
- Name = var,
+ Name = Term,
Arity = 0,
Arguments = []
; Term =.. [Name|Arguments],
fn copy_partial_string(&mut self, addr: usize, n: usize) {
if let &HeapCellValue::Addr(Addr::PStrLocation(h, _)) = &self.target[addr] {
if h >= self.old_h {
- *self.value_at_scan() = HeapCellValue::Addr(Addr::PStrLocation(h, 0));
+ *self.value_at_scan() = HeapCellValue::Addr(Addr::PStrLocation(h, n));
self.scan += 1;
return;
let threshold = self.target.threshold();
*self.value_at_scan() =
- HeapCellValue::Addr(Addr::PStrLocation(threshold, 0));
+ HeapCellValue::Addr(Addr::PStrLocation(threshold, n));
self.scan += 1;
let (pstr, has_tail) =
match &self.target[addr] {
&HeapCellValue::PartialString(ref pstr, has_tail) => {
- (pstr.clone_from_offset(n), has_tail)
+ (pstr.clone_from_offset(0), has_tail)
}
_ => {
unreachable!()
self.target.push(HeapCellValue::PartialString(pstr, has_tail));
- let replacement = HeapCellValue::Addr(Addr::PStrLocation(threshold, 0));
+ let replacement = HeapCellValue::Addr(Addr::PStrLocation(threshold, n));
let trail_item = mem::replace(
&mut self.target[addr],