Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- jit/object-bc.c | 14 ++++++++++++-- test/jit/bc-test-utils.c | 6 ++++-- 2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/jit/object-bc.c b/jit/object-bc.c index 13c3afc..3e252c8 100644 --- a/jit/object-bc.c +++ b/jit/object-bc.c @@ -486,17 +486,22 @@ int convert_checkcast(struct parse_context *ctx) int convert_monitor_enter(struct parse_context *ctx) { + struct expression *nullcheck; struct expression *exp; struct statement *stmt; exp = stack_pop(ctx->bb->mimic_stack); + nullcheck = null_check_expr(exp); + if (!nullcheck) + return -ENOMEM; + stmt = alloc_statement(STMT_MONITOR_ENTER); if (!stmt) return -ENOMEM; expr_get(exp); - stmt->expression = &exp->node; + stmt->expression = &nullcheck->node; convert_statement(ctx, stmt); return 0; @@ -504,17 +509,22 @@ int convert_monitor_enter(struct parse_context *ctx) int convert_monitor_exit(struct parse_context *ctx) { + struct expression *nullcheck; struct expression *exp; struct statement *stmt; exp = stack_pop(ctx->bb->mimic_stack); + nullcheck = null_check_expr(exp); + if (!nullcheck) + return -ENOMEM; + stmt = alloc_statement(STMT_MONITOR_EXIT); if (!stmt) return -ENOMEM; expr_get(exp); - stmt->expression = &exp->node; + stmt->expression = &nullcheck->node; convert_statement(ctx, stmt); return 0; diff --git a/test/jit/bc-test-utils.c b/test/jit/bc-test-utils.c index b93dec3..5b6c938 100644 --- a/test/jit/bc-test-utils.c +++ b/test/jit/bc-test-utils.c @@ -236,14 +236,16 @@ void assert_monitor_enter_stmt(struct expression *expected, struct statement *actual) { assert_int_equals(STMT_MONITOR_ENTER, stmt_type(actual)); - assert_value_expr(J_REFERENCE, expected->value, actual->expression); + assert_nullcheck_value_expr(J_REFERENCE, expected->value, + actual->expression); } void assert_monitor_exit_stmt(struct expression *expected, struct statement *actual) { assert_int_equals(STMT_MONITOR_EXIT, stmt_type(actual)); - assert_value_expr(J_REFERENCE, expected->value, actual->expression); + assert_nullcheck_value_expr(J_REFERENCE, expected->value, + actual->expression); } void assert_checkcast_stmt(struct expression *expected, -- 1.6.0.6 ------------------------------------------------------------------------------ Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers & brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, & iPhoneDevCamp as they present alongside digital heavyweights like Barbarian Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel