From 811ff652097849bbb05e0e6f51c186d65cd2e236 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 7 Jul 2023 10:38:05 -0600 Subject: [PATCH] add stream alias processing to atom_chars/2, atom_codes/2 --- src/machine/system_calls.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index b05dd102..f74ad4a8 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -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!(); } -- 2.54.0