From 621d748bac0914a93e3d399f81616c70fd083bb5 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Thu, 11 Sep 2014 15:39:39 +0000 Subject: a major revision of the bytecode generator and JIT compiler. the effect is that now we can compute with lambda functions and with true tail recursion --- src/runtime/c/pgf/evaluator.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/runtime/c/pgf/evaluator.c') diff --git a/src/runtime/c/pgf/evaluator.c b/src/runtime/c/pgf/evaluator.c index 0e94792d0..a3f22e274 100644 --- a/src/runtime/c/pgf/evaluator.c +++ b/src/runtime/c/pgf/evaluator.c @@ -268,6 +268,17 @@ pgf_evaluate_save_variables(PgfEvalState* state, PgfValue* val) } } +void +pgf_evaluate_slide(PgfEvalState* state, size_t a, size_t b) +{ + size_t len = gu_buf_length(state->stack); + for (size_t i = 0; i < b-a; i++) { + PgfClosure* c = gu_buf_get(state->stack, PgfClosure*, len-(b-a)+i); + gu_buf_set(state->stack, PgfClosure*, len-b+i, c); + } + gu_buf_trim_n(state->stack, a); +} + static PgfExpr pgf_value2expr(PgfEvalState* state, int level, PgfClosure* clos, GuPool* pool) { -- cgit v1.2.3