From: Mark Date: Thu, 6 Jul 2023 17:38:12 +0000 (-0600) Subject: add stream alias check to atom/1 (#1855) X-Git-Tag: v0.9.2~84 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=b746a8f9ab191da151ba06e2dd5fbe41f23382b2;p=scryer-prolog.git add stream alias check to atom/1 (#1855) --- diff --git a/src/machine/dispatch.rs b/src/machine/dispatch.rs index ba13cf5b..11e6d95d 100644 --- a/src/machine/dispatch.rs +++ b/src/machine/dispatch.rs @@ -2376,6 +2376,20 @@ impl Machine { (HeapCellValueTag::Char) => { self.machine_st.p += 1; } + (HeapCellValueTag::Cons, c) => { + match_untyped_arena_ptr!(c, + (ArenaHeaderTag::Stream, stream) => { + if stream.options().get_alias().is_none() { + self.machine_st.backtrack(); + } else { + self.machine_st.p += 1; + } + } + _ => { + self.machine_st.backtrack(); + } + ); + } _ => { self.machine_st.backtrack(); } @@ -2405,6 +2419,20 @@ impl Machine { (HeapCellValueTag::Char) => { self.machine_st.p = self.machine_st.cp; } + (HeapCellValueTag::Cons, c) => { + match_untyped_arena_ptr!(c, + (ArenaHeaderTag::Stream, stream) => { + if stream.options().get_alias().is_none() { + self.machine_st.backtrack(); + } else { + self.machine_st.p = self.machine_st.cp; + } + } + _ => { + self.machine_st.backtrack(); + } + ); + } _ => { self.machine_st.backtrack(); }