diff options
Diffstat (limited to 'mfd/drivers.c')
-rw-r--r-- | mfd/drivers.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/mfd/drivers.c b/mfd/drivers.c index bb6d9e09..d8dfb4b2 100644 --- a/mfd/drivers.c +++ b/mfd/drivers.c @@ -2310,21 +2310,8 @@ code_type_funcdecl(NODE *node, struct locus **old_locus) handle recursive functions */ func->entry = code_get_counter(); - /* Entry code */ - if (func->exmask) { - code_op(opcode_saveex); - code_immediate((void*)func->exmask); - } - - if (codegen(&pc, node->v.funcdecl.tree, 0, - node->v.funcdecl.auto_count) == 0) { - jump_fixup(jump_pc, code_get_counter()); - - /* Exit code */ - if (func->exmask) - code_op(opcode_restex); - code_op(opcode_return); - } + codegen(&pc, node->v.funcdecl.tree, func->exmask, 0, + node->v.funcdecl.auto_count); } @@ -2359,7 +2346,7 @@ code_type_progdecl(NODE *node, struct locus **old_locus) root_node[tag] = node->v.progdecl.tree; if (codegen(&entry_point[tag], - node->v.progdecl.tree, 1, + node->v.progdecl.tree, 0, 1, node->v.progdecl.auto_count) == 0) milter_enable_state(tag); } |