From 3ab006c9e6500b9108635fe5d77d8a9ac97cd27c Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 11 Nov 2016 05:32:33 -0800 Subject: Streamline variable assignment operators slightly. * eval.c (op_setq, op_lisp1_setq): Take the bindable(var) test out of the frequently executed path. We can safely do the variable lookup with any object. If the lookup fails, then we can complain that the object isn't a bindable symbol, if that is the case. --- eval.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/eval.c b/eval.c index a0c610c9..b6503280 100644 --- a/eval.c +++ b/eval.c @@ -1905,15 +1905,13 @@ static val op_setq(val form, val env) val args = rest(form); val var = pop(&args); val newval = pop(&args); - - if (!bindable(var)) { - eval_error(form, lit("sys:setq: ~s is not a bindable symbol"), var, nao); - } else { - val binding = lookup_var(env, var); - if (nilp(binding)) - eval_error(form, lit("unbound variable ~s"), var, nao); - return sys_rplacd(binding, eval(newval, env, form)); + val binding = lookup_var(env, var); + if (nilp(binding)) { + if (!bindable(var)) + eval_error(form, lit("sys:setq: ~s is not a bindable symbol"), var, nao); + eval_error(form, lit("unbound variable ~s"), var, nao); } + return sys_rplacd(binding, eval(newval, env, form)); } static val op_lisp1_setq(val form, val env) @@ -1922,14 +1920,13 @@ static val op_lisp1_setq(val form, val env) val var = pop(&args); val newval = pop(&args); - if (!bindable(var)) { - eval_error(form, lit("sys:lisp1-setq: ~s is not a bindable symbol"), var, nao); - } else { - val binding = lookup_sym_lisp1(env, var); - if (nilp(binding)) - eval_error(form, lit("unbound variable ~s"), var, nao); - return sys_rplacd(binding, eval(newval, env, form)); + val binding = lookup_sym_lisp1(env, var); + if (nilp(binding)) { + if (!bindable(var)) + eval_error(form, lit("sys:lisp1-setq: ~s is not a bindable symbol"), var, nao); + eval_error(form, lit("unbound variable ~s"), var, nao); } + return sys_rplacd(binding, eval(newval, env, form)); } static val expand_lisp1_value(val form, val menv) -- cgit v1.2.3