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

Reply via email to