add call support for acyclic_term

This commit is contained in:
Mark Thom
2018-03-28 21:20:50 -06:00
parent 80b59bae83
commit 94939e793b
2 changed files with 11 additions and 2 deletions

View File

@@ -624,7 +624,8 @@ fn get_builtins() -> Code {
is_atom!(temp_v!(1)), // atom/1, 465.
proceed!(),
sort_execute!(), // sort/2, 467.
keysort_execute!() // keysort/2, 468.
keysort_execute!(), // keysort/2, 468.
acyclic_term_execute!(), // acyclic_term/1, 469.
]
}
@@ -740,6 +741,7 @@ pub fn build_code_and_op_dirs() -> (CodeDir, OpDir)
code_dir.insert((clause_name!("atom"), 1), (465, builtin.clone()));
code_dir.insert((clause_name!("sort"), 2), (467, builtin.clone()));
code_dir.insert((clause_name!("keysort"), 2), (468, builtin.clone()));
code_dir.insert((clause_name!("acyclic_term"), 1), (469, builtin.clone()));
(code_dir, op_dir)
}
@@ -801,7 +803,8 @@ pub fn builtin_module() -> Module
(clause_name!("compare"), 3),
(clause_name!("atom"), 1),
(clause_name!("sort"), 2),
(clause_name!("keysort"), 2)]);
(clause_name!("keysort"), 2),
(clause_name!("acyclic_term"), 1)]);
for arity in 0 .. 63 {
module_decl.exports.push((clause_name!("call"), arity));

View File

@@ -728,6 +728,12 @@ macro_rules! keysort_execute {
)
}
macro_rules! acyclic_term_execute {
() => (
Line::Control(ControlInstruction::CallClause(ClauseType::AcyclicTerm, 1, 0, true))
)
}
macro_rules! return_from_clause {
($lco:expr, $machine_st:expr) => {{
if $lco {