It most likely an error to have multiple references to an expression with side effects.
Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- jit/expression.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/jit/expression.c b/jit/expression.c index d46c2b7..fc67889 100644 --- a/jit/expression.c +++ b/jit/expression.c @@ -146,10 +146,18 @@ void free_expression(struct expression *expr) free(expr); } +extern void print_trace(void); + struct expression *expr_get(struct expression *expr) { assert(expr->refcount > 0); + if (!expr_is_pure(expr)) { + fprintf(stderr, "%s: expression is not pure\n", __func__); + print_trace(); + abort(); + } + expr->refcount++; return expr; -- 1.6.0.6 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel