diff options
author | Andy Wingo <wingo@pobox.com> | 2012-03-07 12:39:30 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2012-03-22 09:55:28 +0100 |
commit | 47153f29b02cee6324aec523cfa44b48e1cb29b9 (patch) | |
tree | d825abdb24c489204f96a2999ef782c73007d49f /libguile/srfi-13.c | |
parent | c05805a4ea764dec5a0559edefcdfb9761191d07 (diff) | |
download | guile-47153f29b02cee6324aec523cfa44b48e1cb29b9.tar.gz |
micro-optimizations to string-trim-both, and to (web http)
* libguile/srfi-13.c (scm_string_trim, scm_string_trim_right)
(scm_string_trim_both): Take the whitespace fast-path if the char_pred
is scm_char_set_whitespace.
* module/web/http.scm (read-header, split-and-trim, parse-quality-list):
(parse-param-component, parse-credentials, "Content-Type"):
(read-request-line, read-response-line): Use char-set:whitespace
instead of char-whitespace?. It avoids recursing into the VM.
Diffstat (limited to 'libguile/srfi-13.c')
-rw-r--r-- | libguile/srfi-13.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libguile/srfi-13.c b/libguile/srfi-13.c index 75feae3b2..28345532e 100644 --- a/libguile/srfi-13.c +++ b/libguile/srfi-13.c @@ -1,6 +1,6 @@ /* srfi-13.c --- SRFI-13 procedures for Guile * - * Copyright (C) 2001, 2004, 2005, 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + * Copyright (C) 2001, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -719,7 +719,8 @@ SCM_DEFINE (scm_string_trim, "string-trim", 1, 3, 0, MY_VALIDATE_SUBSTRING_SPEC (1, s, 3, start, cstart, 4, end, cend); - if (SCM_UNBNDP (char_pred)) + if (SCM_UNBNDP (char_pred) + || scm_is_eq (char_pred, scm_char_set_whitespace)) { while (cstart < cend) { @@ -794,7 +795,8 @@ SCM_DEFINE (scm_string_trim_right, "string-trim-right", 1, 3, 0, MY_VALIDATE_SUBSTRING_SPEC (1, s, 3, start, cstart, 4, end, cend); - if (SCM_UNBNDP (char_pred)) + if (SCM_UNBNDP (char_pred) + || scm_is_eq (char_pred, scm_char_set_whitespace)) { while (cstart < cend) { @@ -869,7 +871,8 @@ SCM_DEFINE (scm_string_trim_both, "string-trim-both", 1, 3, 0, MY_VALIDATE_SUBSTRING_SPEC (1, s, 3, start, cstart, 4, end, cend); - if (SCM_UNBNDP (char_pred)) + if (SCM_UNBNDP (char_pred) + || scm_is_eq (char_pred, scm_char_set_whitespace)) { while (cstart < cend) { |