From 19e8080b1fbf331165f8147012191ffb4a6d4541 Mon Sep 17 00:00:00 2001 From: Stephen Adams Date: Sat, 8 Apr 1995 21:00:17 +0000 Subject: [PATCH] Unrolled loop in NODES-LINKED? --- v8/src/compiler/midend/dataflow.scm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/v8/src/compiler/midend/dataflow.scm b/v8/src/compiler/midend/dataflow.scm index 94ea0032e..61d6cb20e 100644 --- a/v8/src/compiler/midend/dataflow.scm +++ b/v8/src/compiler/midend/dataflow.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: dataflow.scm,v 1.11 1995/03/22 01:06:49 adams Exp $ +$Id: dataflow.scm,v 1.12 1995/04/08 21:00:17 adams Exp $ Copyright (c) 1994 Massachusetts Institute of Technology @@ -2122,6 +2122,29 @@ MIT in each case. |# (eq? from (vector-ref set (fix:- i 1))) (loop (fix:- i 2))))))))) +(define (nodes-linked? from to) + (or (eq? from to) + (let ((set (node/links-in to))) + (and set + (let unrolled-loop ((i (vector-ref set 0))) + (if (fix:>= i 8) + (or (eq? from (vector-ref set i)) + (eq? from (vector-ref set (fix:- i 1))) + (eq? from (vector-ref set (fix:- i 2))) + (eq? from (vector-ref set (fix:- i 3))) + (eq? from (vector-ref set (fix:- i 4))) + (eq? from (vector-ref set (fix:- i 5))) + (eq? from (vector-ref set (fix:- i 6))) + (eq? from (vector-ref set (fix:- i 7))) + (unrolled-loop (fix:- i 8))) + (let end-loop ((i i)) + (and (fix:> i 0) + ;; Loop unrolled 1 time is safe because the zero slot + ;; contains a fixnum that will never match a node + (or (eq? from (vector-ref set i)) + (eq? from (vector-ref set (fix:- i 1))) + (end-loop (fix:- i 2))))))))))) + (define (make-empty-node-set) '#F) -- 2.25.1