From 386f7cf65da589187dd5e37283c6e4e287b4c1e7 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Mon, 27 Jul 2020 16:43:43 -0600 Subject: [PATCH] the indexer now categorizes partial strings only as lists (#623, #642) --- Cargo.lock | 9 ++++++++- src/indexing.rs | 9 +++------ src/machine/machine_indices.rs | 13 ------------- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 41c90cbd..041ddfa9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -51,6 +51,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + [[package]] name = "bit-set" version = "0.5.2" @@ -1157,7 +1163,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" dependencies = [ - "base64", + "base64 0.11.0", "blake2b_simd", "constant_time_eq", "crossbeam-utils", @@ -1217,6 +1223,7 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" name = "scryer-prolog" version = "0.8.126" dependencies = [ + "base64 0.12.3", "blake2", "chrono", "cpu-time", diff --git a/src/indexing.rs b/src/indexing.rs index add67bc5..b93b3c93 100644 --- a/src/indexing.rs +++ b/src/indexing.rs @@ -123,10 +123,6 @@ impl CodeOffsets { code.push(Self::add_index(code.is_empty(), index)); } } - &Constant::String(_) => { - let is_initial_index = self.lists.is_empty(); - self.lists.push(Self::add_index(is_initial_index, index)); - } &Constant::Usize(n) => { let code = self.constants .entry(Constant::Integer(Rc::new(Integer::from(n)))) @@ -158,7 +154,7 @@ impl CodeOffsets { let is_initial_index = code.is_empty(); code.push(Self::add_index(is_initial_index, index)); } - &Term::Cons(..) => { + &Term::Cons(..) | &Term::Constant(_, Constant::String(_)) => { let is_initial_index = self.lists.is_empty(); self.lists.push(Self::add_index(is_initial_index, index)); } @@ -172,7 +168,8 @@ impl CodeOffsets { let is_initial_index = code.is_empty(); code.push(Self::add_index(is_initial_index, index)); } - _ => {} + _ => { + } }; } diff --git a/src/machine/machine_indices.rs b/src/machine/machine_indices.rs index 735009f8..13fb6ae7 100644 --- a/src/machine/machine_indices.rs +++ b/src/machine/machine_indices.rs @@ -272,19 +272,6 @@ impl Addr { &Addr::Float(f) => { Some(Constant::Float(f)) } - &Addr::PStrLocation(h, n) => { - let mut heap_pstr_iter = - machine_st.heap_pstr_iter(Addr::PStrLocation(h, n)); - - let buf = heap_pstr_iter.to_string(); - let end_addr = heap_pstr_iter.focus(); - - if end_addr == Addr::EmptyList { - Some(Constant::String(Rc::new(buf))) - } else { - None - } - } &Addr::Usize(n) => { Some(Constant::Usize(n)) } -- 2.54.0