From e578faea202a4e6eeb32e81e489b59119a2e02a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 26 Jan 2011 22:59:45 +0100 Subject: [PATCH] Tweak `read-line'. * libguile/rdelim.c (LINE_BUFFER_SIZE): Set to 1 KiB instead of 4 KiB. (scm_read_line): Initialize STRING to #f so we actually use the fast path. --- libguile/rdelim.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libguile/rdelim.c b/libguile/rdelim.c index 0fa0b8f61..760aa47ee 100644 --- a/libguile/rdelim.c +++ b/libguile/rdelim.c @@ -122,7 +122,7 @@ SCM_DEFINE (scm_read_line, "%read-line", 0, 1, 0, { /* Threshold under which the only allocation performed is that of the resulting string and pair. */ -#define LINE_BUFFER_SIZE 1024 +#define LINE_BUFFER_SIZE 256 SCM line, strings, result; scm_t_wchar buf[LINE_BUFFER_SIZE], delim; @@ -135,11 +135,11 @@ SCM_DEFINE (scm_read_line, "%read-line", 0, 1, 0, index = 0; delim = 0; - strings = SCM_EOL; + strings = SCM_BOOL_F; do { - if (index >= sizeof (buf)) + if (SCM_UNLIKELY (index >= sizeof (buf))) { /* The line is getting longer than BUF so store its current contents in STRINGS. */ @@ -164,7 +164,8 @@ SCM_DEFINE (scm_read_line, "%read-line", 0, 1, 0, } while (delim == 0); - if (scm_is_false (strings)) + if (SCM_LIKELY (scm_is_false (strings))) + /* The fast path. */ line = scm_from_utf32_stringn (buf, index); else {