add call support for acyclic_term
This commit is contained in:
@@ -624,7 +624,8 @@ fn get_builtins() -> Code {
|
|||||||
is_atom!(temp_v!(1)), // atom/1, 465.
|
is_atom!(temp_v!(1)), // atom/1, 465.
|
||||||
proceed!(),
|
proceed!(),
|
||||||
sort_execute!(), // sort/2, 467.
|
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!("atom"), 1), (465, builtin.clone()));
|
||||||
code_dir.insert((clause_name!("sort"), 2), (467, 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!("keysort"), 2), (468, builtin.clone()));
|
||||||
|
code_dir.insert((clause_name!("acyclic_term"), 1), (469, builtin.clone()));
|
||||||
|
|
||||||
(code_dir, op_dir)
|
(code_dir, op_dir)
|
||||||
}
|
}
|
||||||
@@ -801,7 +803,8 @@ pub fn builtin_module() -> Module
|
|||||||
(clause_name!("compare"), 3),
|
(clause_name!("compare"), 3),
|
||||||
(clause_name!("atom"), 1),
|
(clause_name!("atom"), 1),
|
||||||
(clause_name!("sort"), 2),
|
(clause_name!("sort"), 2),
|
||||||
(clause_name!("keysort"), 2)]);
|
(clause_name!("keysort"), 2),
|
||||||
|
(clause_name!("acyclic_term"), 1)]);
|
||||||
|
|
||||||
for arity in 0 .. 63 {
|
for arity in 0 .. 63 {
|
||||||
module_decl.exports.push((clause_name!("call"), arity));
|
module_decl.exports.push((clause_name!("call"), arity));
|
||||||
|
|||||||
@@ -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 {
|
macro_rules! return_from_clause {
|
||||||
($lco:expr, $machine_st:expr) => {{
|
($lco:expr, $machine_st:expr) => {{
|
||||||
if $lco {
|
if $lco {
|
||||||
|
|||||||
Reference in New Issue
Block a user