summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.c
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2019-05-07 02:28:26 -0400
committerMark H Weaver <mhw@netris.org>2019-05-07 04:37:52 -0400
commit2a1f22c00abc7b11f4fc5b77933151306e535cbb (patch)
treeca17c02b15cfdc88da2d065670dfee1018cd5f8c /libguile/vm-engine.c
parent63818453ad226cd3c2d1fd8ade12e3d7c1d43c05 (diff)
downloadguile-2a1f22c00abc7b11f4fc5b77933151306e535cbb.tar.gz
Add 'scm_c_make_char' and use it where appropriate.
This reverts the change to SCM_MAKE_CHAR made in the previous commit 63818453ad226cd3c2d1fd8ade12e3d7c1d43c05, which used an arithmetic trick to avoid evaluating its argument more than once. Here, we restore the previous implementation of SCM_MAKE_CHAR, which evaluates its argument twice. Instead, we introduce a new inlinable function 'scm_c_make_char' and replace uses of SCM_MAKE_CHAR with calls to 'scm_c_make_char' where appropriate. * libguile/chars.h (scm_c_make_char): New inline function. * libguile/inline.c: Include chars.h. * libguile/srfi-13.c (REF_IN_CHARSET, scm_string_any, scm_string_every) (scm_string_trim, scm_string_trim_right, scm_string_trim_both) (scm_string_index, scm_string_index_right, scm_string_skip) (scm_string_skip_right, scm_string_count, string_titlecase_x) (string_reverse_x, scm_string_fold, scm_string_fold_right) (scm_string_for_each, scm_string_filter, scm_string_delete): Use 'scm_c_make_char' instead of 'SCM_MAKE_CHAR' in cases where the argument calls a function. * libguile/chars.c (scm_char_upcase, scm_char_downcase, scm_char_titlecase), libguile/ports.c (scm_port_decode_char), libguile/print.c (scm_simple_format), libguile/read.c (scm_read_character), libguile/strings.c (scm_string_ref, scm_c_string_ref), libguile/vm-engine.c ("string-ref"): Ditto.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r--libguile/vm-engine.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index 53d7f3522..931017e2d 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 2001, 2009, 2010, 2011, 2012, 2013,
- * 2014, 2015, 2018 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2009-2015, 2018, 2019
+ * 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
@@ -2269,7 +2269,7 @@ VM_NAME (scm_i_thread *thread, struct scm_vm *vp,
VM_VALIDATE_STRING (str, "string-ref");
VM_VALIDATE_INDEX (c_idx, scm_i_string_length (str), "string-ref");
- RETURN (SCM_MAKE_CHAR (scm_i_string_ref (str, c_idx)));
+ RETURN (scm_c_make_char (scm_i_string_ref (str, c_idx)));
}
/* string-set! instruction is currently number 192. Probably need to