From d91762239bb8ba368f26ecc2e170d79934e8bab0 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Wed, 4 Sep 2013 07:11:14 +0000 Subject: [PATCH] slight optimization for the linearizer in the C runtime --- src/runtime/c/pgf/linearizer.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/runtime/c/pgf/linearizer.c b/src/runtime/c/pgf/linearizer.c index 7dd9dbbc4..81d2529c7 100644 --- a/src/runtime/c/pgf/linearizer.c +++ b/src/runtime/c/pgf/linearizer.c @@ -181,23 +181,24 @@ pgf_lzn_resolve_app(PgfLzn* lzn, GuBuf* buf, GuBuf* args, GuPool* pool) GuChoiceMark mark = gu_choice_mark(lzn->ch); int save_fid = lzn->fid; + size_t n_args = gu_buf_length(args); + + PgfCncTree ret = gu_null_variant; + PgfCncTreeApp* capp = + gu_new_flex_variant(PGF_CNC_TREE_APP, + PgfCncTreeApp, + args, n_args, &ret, pool); + redo:; int index = gu_choice_next(lzn->ch, gu_buf_length(buf)); if (index < 0) { return gu_null_variant; } - size_t n_args = gu_buf_length(args); - PgfProductionApply* papply = gu_buf_get(buf, PgfProductionApply*, index); gu_assert(n_args == gu_seq_length(papply->args)); - PgfCncTree ret = gu_null_variant; - PgfCncTreeApp* capp = - gu_new_flex_variant(PGF_CNC_TREE_APP, - PgfCncTreeApp, - args, n_args, &ret, pool); capp->fun = papply->fun; capp->fid = 0; capp->n_args = n_args;