From 61ced41f38712e1fc3350480a9812f49bc7de33f Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 25 Oct 2019 07:43:34 -0700 Subject: circle notation: use faster access in backpatch. * parser.c (circ_backpatch): Since we know that we have a CONS or VEC object, use direct access instead of going through type-safe accessors. --- parser.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'parser.c') diff --git a/parser.c b/parser.c index 292040fb..c303f9e1 100644 --- a/parser.c +++ b/parser.c @@ -280,18 +280,17 @@ tail: switch (type(obj)) { case CONS: { - val a = car(obj); - val d = cdr(obj); + us_cons_bind(a, d, obj); val ra = patch_ref(p, a); val rd = patch_ref(p, d); if (ra) - rplaca(obj, ra); + us_rplaca(obj, ra); else circ_backpatch(p, &cs, a); if (rd) { - rplacd(obj, rd); + us_rplacd(obj, rd); break; } @@ -304,11 +303,10 @@ tail: cnum l = c_num(length_vec(obj)); for (i = 0; i < l; i++) { - val in = num(i); - val v = vecref(obj, in); + val v = obj->v.vec[i]; val rv = patch_ref(p, v); if (rv) - set(vecref_l(obj, in), rv); + set(mkloc(obj->v.vec[i], obj), rv); else circ_backpatch(p, &cs, v); if (!p->circ_count) -- cgit v1.2.3