From d74e56bc74757f18375e9182255804021e0618eb Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Sun, 6 Jul 2025 14:33:39 -0500 Subject: [PATCH] bugfix: xo-jit: track expanded lambda api --- xo-jit/example/ex1/ex1.cpp | 3 ++- xo-jit/example/ex2_jit/ex2_jit.cpp | 9 ++++++--- xo-jit/utest/MachPipeline.test.cpp | 13 ++++++++----- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/xo-jit/example/ex1/ex1.cpp b/xo-jit/example/ex1/ex1.cpp index 638e1bda..f5eb1d1d 100644 --- a/xo-jit/example/ex1/ex1.cpp +++ b/xo-jit/example/ex1/ex1.cpp @@ -167,7 +167,8 @@ main() { /* (define (lm_1 x) (sin (cos x))) */ auto lambda = make_lambda("lm_1", {x_var}, - call2); + call2, + nullptr /*parent_env*/); log && log(xtag("expr", lambda)); diff --git a/xo-jit/example/ex2_jit/ex2_jit.cpp b/xo-jit/example/ex2_jit/ex2_jit.cpp index b21d5e41..dc948afb 100644 --- a/xo-jit/example/ex2_jit/ex2_jit.cpp +++ b/xo-jit/example/ex2_jit/ex2_jit.cpp @@ -109,7 +109,8 @@ main() { auto lambda = make_lambda("callit", {f_var, x_var}, - call1); + call1, + nullptr /*parent_env*/); #elif CHOICE == 1 #define FUNCTION_SYMBOL "root4" /* def root4(x : double) { sqrt(sqrt(x)) } */ @@ -120,7 +121,8 @@ main() { auto lambda = make_lambda("root4", {x_var}, - call2); + call2, + nullptr /*parent_env*/); #elif CHOICE == 2 #define FUNCTION_SYMBOL "twice" auto root = make_primitive("sqrt", @@ -137,7 +139,8 @@ main() { /* (define (twice f ::int->int x ::int) (f (f x))) */ auto lambda = make_lambda("twice", {f_var, x_var}, - call2); + call2, + nullptr /*parent_env*/); #endif log && log(xtag("lambda", lambda)); diff --git a/xo-jit/utest/MachPipeline.test.cpp b/xo-jit/utest/MachPipeline.test.cpp index ad14ac32..5cf81227 100644 --- a/xo-jit/utest/MachPipeline.test.cpp +++ b/xo-jit/utest/MachPipeline.test.cpp @@ -19,7 +19,6 @@ namespace xo { using xo::ast::exprtype; using xo::reflect::Reflect; using xo::reflect::reflect_struct; - using xo::ref::rp; using xo::ref::brw; using std::cerr; using std::endl; @@ -41,7 +40,8 @@ namespace xo { auto fn_ast = make_lambda("root4", {x_var}, - call2); + call2, + nullptr /*parent_env*/); return fn_ast; } @@ -65,7 +65,8 @@ namespace xo { /* def twice(f :: double->double, x :: double) { f(f(x)); } */ auto twice = make_lambda("twice", {f_var, x_var}, - call2); + call2, + nullptr /*parent_env*/); auto x2_var = make_var("x2", Reflect::require()); auto call3 = make_apply(twice, {root, x2_var}); @@ -77,7 +78,8 @@ namespace xo { */ auto fn_ast = make_lambda("root_2x", {x2_var}, - call3); + call3, + nullptr /*parent_env*/); return fn_ast; } @@ -270,7 +272,8 @@ namespace xo { auto make_ratio = make_lambda("make_ratio", {n_var, d_var}, - call1); + call1, + nullptr /*parent_env*/); return make_ratio; }