]> Repositorios git - scryer-prolog.git/commitdiff
remove module name from DirEntry
authorMark Thom <[email protected]>
Wed, 3 Oct 2018 02:37:15 +0000 (20:37 -0600)
committerMark Thom <[email protected]>
Wed, 3 Oct 2018 02:37:15 +0000 (20:37 -0600)
src/prolog/instructions.rs
src/prolog/machine/machine_state.rs
src/prolog/machine/mod.rs
src/prolog/macros.rs

index b43671a33fd63ef96601b513a49c284540a17b24..e695992dc08c4e2092d16a624079b20707be6c6d 100644 (file)
@@ -858,9 +858,9 @@ impl CodePtr {
     }
 }
 
-#[derive(Clone, PartialEq)]
+#[derive(Copy, Clone, PartialEq)]
 pub enum LocalCodePtr {
-    DirEntry(usize, ClauseName), // offset, resident module name.
+    DirEntry(usize), // offset.
     TopLevel(usize, usize), // chunk_num, offset.
     UserTermExpansion(usize)
 }
@@ -886,7 +886,7 @@ impl PartialOrd<CodePtr> for CodePtr {
 impl PartialOrd<LocalCodePtr> for LocalCodePtr {
     fn partial_cmp(&self, other: &LocalCodePtr) -> Option<Ordering> {
         match (self, other) {
-            (&LocalCodePtr::DirEntry(p1, _), &LocalCodePtr::DirEntry(p2, _)) =>
+            (&LocalCodePtr::DirEntry(p1), &LocalCodePtr::DirEntry(p2)) =>
                 p1.partial_cmp(&p2),
             (&LocalCodePtr::DirEntry(..), &LocalCodePtr::TopLevel(_, _)) =>
                 Some(Ordering::Less),
@@ -914,7 +914,7 @@ impl Add<usize> for LocalCodePtr {
 
     fn add(self, rhs: usize) -> Self::Output {
         match self {
-            LocalCodePtr::DirEntry(p, name) => LocalCodePtr::DirEntry(p + rhs, name),
+            LocalCodePtr::DirEntry(p) => LocalCodePtr::DirEntry(p + rhs),
             LocalCodePtr::TopLevel(cn, p) => LocalCodePtr::TopLevel(cn, p + rhs),
             LocalCodePtr::UserTermExpansion(p) => LocalCodePtr::UserTermExpansion(p + rhs)
         }
@@ -925,7 +925,7 @@ impl AddAssign<usize> for LocalCodePtr {
     fn add_assign(&mut self, rhs: usize) {
         match self {
             &mut LocalCodePtr::UserTermExpansion(ref mut p)
-          | &mut LocalCodePtr::DirEntry(ref mut p, _)
+          | &mut LocalCodePtr::DirEntry(ref mut p)
           | &mut LocalCodePtr::TopLevel(_, ref mut p) => *p += rhs            
         }
     }
index 0caf4785a688d280cc082380eca6fce4c85d674b..17d6bfea3ddcee7518d28acc2a7a4c162844d78e 100644 (file)
@@ -260,19 +260,19 @@ pub struct MachineState {
     pub(crate) flags: MachineFlags
 }
 
-fn call_at_index(machine_st: &mut MachineState, module_name: ClauseName, arity: usize, idx: usize)
+fn call_at_index(machine_st: &mut MachineState, arity: usize, idx: usize)
 {
     machine_st.cp.assign_if_local(machine_st.p.clone() + 1);
     machine_st.num_of_args = arity;
     machine_st.b0 = machine_st.b;
-    machine_st.p  = dir_entry!(idx, module_name);
+    machine_st.p  = dir_entry!(idx);
 }
 
-fn execute_at_index(machine_st: &mut MachineState, module_name: ClauseName, arity: usize, idx: usize)
+fn execute_at_index(machine_st: &mut MachineState, arity: usize, idx: usize)
 {
     machine_st.num_of_args = arity;
     machine_st.b0 = machine_st.b;
-    machine_st.p  = dir_entry!(idx, module_name);
+    machine_st.p  = dir_entry!(idx);
 }
 
 pub(crate) type CallResult = Result<(), Vec<HeapCellValue>>;
@@ -457,7 +457,7 @@ pub(crate) trait CallPolicy: Any {
                 if let Some(ref idx) = indices.get_code_index((name.clone(), arity), module_name.clone())
                 {
                     if let IndexPtr::Index(compiled_tl_index) = idx.0.borrow().0 {
-                        call_at_index(machine_st, module_name, arity, compiled_tl_index);
+                        call_at_index(machine_st, arity, compiled_tl_index);
                         return Ok(());
                     }
                 }
@@ -472,10 +472,8 @@ pub(crate) trait CallPolicy: Any {
                 return Err(machine_st.error_form(MachineError::existence_error(h, name, arity),
                                                  stub));
             },
-            IndexPtr::Index(compiled_tl_index) => {
-                let module_name = idx.0.borrow().1.clone();
-                call_at_index(machine_st, module_name, arity, compiled_tl_index)
-            }
+            IndexPtr::Index(compiled_tl_index) =>
+                call_at_index(machine_st, arity, compiled_tl_index)
         }
 
         Ok(())
@@ -494,7 +492,7 @@ pub(crate) trait CallPolicy: Any {
                 if let Some(ref idx) = indices.get_code_index((name.clone(), arity), module_name.clone())
                 {
                     if let IndexPtr::Index(compiled_tl_index) = idx.0.borrow().0 {
-                        execute_at_index(machine_st, module_name, arity, compiled_tl_index);
+                        execute_at_index(machine_st, arity, compiled_tl_index);
                         return Ok(());
                     }
                 }
@@ -509,10 +507,8 @@ pub(crate) trait CallPolicy: Any {
                 return Err(machine_st.error_form(MachineError::existence_error(h, name, arity),
                                                  stub));
             },
-            IndexPtr::Index(compiled_tl_index) => {
-                let module_name = idx.0.borrow().1.clone();
-                execute_at_index(machine_st, module_name, arity, compiled_tl_index);
-            }
+            IndexPtr::Index(compiled_tl_index) =>
+                execute_at_index(machine_st, arity, compiled_tl_index)            
         }
 
         Ok(())
@@ -929,7 +925,6 @@ impl SCCCutPolicy {
     fn run_cleaners(&self, machine_st: &mut MachineState) -> bool {
         if let Some(&(_, b_cutoff, prev_block)) = self.cont_pts.last() {
             if machine_st.b < b_cutoff {
-                let builtins = clause_name!("builtins");
                 let (idx, arity) = if machine_st.block < prev_block {
                     (self.r_c_w_h, 0)
                 } else {
@@ -938,9 +933,9 @@ impl SCCCutPolicy {
                 };
 
                 if machine_st.last_call {
-                    execute_at_index(machine_st, builtins, arity, idx);
+                    execute_at_index(machine_st, arity, idx);
                 } else {
-                    call_at_index(machine_st, builtins, arity, idx);
+                    call_at_index(machine_st, arity, idx);
                 }
 
                 return true;
index e9249983842e65a224146e8f1e712d1558f92aa0..68cc08ec642ebe58bf22aaa7ff6b9c2e830ebee0 100644 (file)
@@ -84,7 +84,7 @@ impl Index<LocalCodePtr> for Machine {
                     &None => panic!("Out-of-bounds top level index.")
                 }
             },
-            LocalCodePtr::DirEntry(p, _) => &self.code[p],
+            LocalCodePtr::DirEntry(p) => &self.code[p],
             LocalCodePtr::UserTermExpansion(p) => &self.term_expanders[p]
         }
     }
@@ -281,7 +281,7 @@ impl Machine {
                     &Some(ref cq) => Some(cq[p].clone()),
                     &None => None
                 },
-            CodePtr::Local(LocalCodePtr::DirEntry(p, _)) =>
+            CodePtr::Local(LocalCodePtr::DirEntry(p)) =>
                 Some(self.code[p].clone()),
             CodePtr::BuiltInClause(built_in, _) =>
                 Some(call_clause!(ClauseType::BuiltIn(built_in.clone()), built_in.arity(),
@@ -370,7 +370,7 @@ impl Machine {
             }
 
             match self.ms.p {
-                CodePtr::Local(LocalCodePtr::DirEntry(p, _)) if p < self.code.len() => {},
+                CodePtr::Local(LocalCodePtr::DirEntry(p)) if p < self.code.len() => {},
                 CodePtr::Local(LocalCodePtr::UserTermExpansion(p)) if p < self.term_expanders.len() => {},
                 CodePtr::Local(LocalCodePtr::UserTermExpansion(_)) => self.ms.fail = true,
                 CodePtr::Local(_) => break,
index 69f86b3ba602069ddfd3b9c007673751e09dada0..c99c79fa7e8a899883b2a65055bef300aba8d8ee 100644 (file)
@@ -195,8 +195,8 @@ macro_rules! return_from_clause {
 }
 
 macro_rules! dir_entry {
-    ($idx:expr, $module_name:expr) => (
-        CodePtr::Local(LocalCodePtr::DirEntry($idx, $module_name))
+    ($idx:expr) => (
+        CodePtr::Local(LocalCodePtr::DirEntry($idx))
     )
 }