add stream alias processing to atom_chars/2, atom_codes/2

This commit is contained in:
Mark
2023-07-07 10:38:05 -06:00
parent fd70d8975b
commit 811ff65209

View File

@@ -2181,6 +2181,17 @@ impl Machine {
self.machine_st.fail = true;
}
(HeapCellValueTag::Cons, ptr) => {
match_untyped_arena_ptr!(ptr,
(ArenaHeaderTag::Stream, stream) => {
let alias = stream.options().get_alias().unwrap();
self.machine_st.unify_complete_string(alias, a2);
}
_ => {
unreachable!();
}
);
}
_ => {
unreachable!();
}
@@ -2240,6 +2251,22 @@ impl Machine {
}
}
}
(HeapCellValueTag::Cons, ptr) => {
match_untyped_arena_ptr!(ptr,
(ArenaHeaderTag::Stream, stream) => {
let alias = stream.options().get_alias().unwrap();
let iter = alias.chars()
.map(|c| fixnum_as_cell!(Fixnum::build_with(c as i64)));
let h = iter_to_heap_list(&mut self.machine_st.heap, iter);
unify!(self.machine_st, heap_loc_as_cell!(h), self.machine_st.registers[2]);
}
_ => {
unreachable!();
}
);
}
_ => {
unreachable!();
}