From c2bfeffe96f88ff4f1b0444c80428a4e7bd5582b Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Fri, 23 Dec 2016 16:22:19 +0100 Subject: [PATCH] core: Remove make_number. * mes.c (MAKE_NUMBER): New macro. (tmp_num_, tmp_num_2): New function. (make_number): Remove. Update callers. --- lib.c | 2 +- math.c | 14 +++++++------- mes.c | 24 ++++++++++++++++-------- posix.c | 4 ++-- reader.c | 2 +- string.c | 2 +- type.c | 3 +-- 7 files changed, 29 insertions(+), 22 deletions(-) diff --git a/lib.c b/lib.c index 6c47045b..7bc77144 100644 --- a/lib.c +++ b/lib.c @@ -40,7 +40,7 @@ length (SCM x) n++; x = cdr (x); } - return make_number (n); + return MAKE_NUMBER (n); } SCM diff --git a/math.c b/math.c index e1fbf006..8b7ebb35 100644 --- a/math.c +++ b/math.c @@ -76,7 +76,7 @@ minus (SCM x) ///((name . "-") (arity . n)) n -= VALUE (car (x)); x = cdr (x); } - return make_number (n); + return MAKE_NUMBER (n); } SCM @@ -89,7 +89,7 @@ plus (SCM x) ///((name . "+") (arity . n)) n += VALUE (car (x)); x = cdr (x); } - return make_number (n); + return MAKE_NUMBER (n); } SCM @@ -107,7 +107,7 @@ divide (SCM x) ///((name . "/") (arity . n)) n /= VALUE (car (x)); x = cdr (x); } - return make_number (n); + return MAKE_NUMBER (n); } SCM @@ -115,7 +115,7 @@ modulo (SCM a, SCM b) { assert (TYPE (a) == NUMBER); assert (TYPE (b) == NUMBER); - return make_number (VALUE (a) % VALUE (b)); + return MAKE_NUMBER (VALUE (a) % VALUE (b)); } SCM @@ -128,7 +128,7 @@ multiply (SCM x) ///((name . "*") (arity . n)) n *= VALUE (car (x)); x = cdr (x); } - return make_number (n); + return MAKE_NUMBER (n); } SCM @@ -141,7 +141,7 @@ logior (SCM x) ///((arity . n)) n |= VALUE (car (x)); x = cdr (x); } - return make_number (n); + return MAKE_NUMBER (n); } SCM @@ -151,5 +151,5 @@ ash (SCM n, SCM count) assert (TYPE (count) == NUMBER); int cn = VALUE (n); int ccount = VALUE (count); - return make_number ((ccount < 0) ? cn >> -ccount : cn << ccount); + return MAKE_NUMBER ((ccount < 0) ? cn >> -ccount : cn << ccount); } diff --git a/mes.c b/mes.c index 81016486..5c553126 100644 --- a/mes.c +++ b/mes.c @@ -181,6 +181,8 @@ SCM r3 = 0; // param 3 #define CDADAR(x) CAR (CDR (CAR (CDR (x)))) #define CADR(x) CAR (CDR (x)) +#define MAKE_NUMBER(n) make_cell (tmp_num_ (NUMBER), 0, tmp_num2_ (n)) + SCM display_ (FILE* f, SCM x); SCM vm_call (function0_t f, SCM p1, SCM p2, SCM a); @@ -684,11 +686,17 @@ make_char (int x) } SCM -make_number (int x) +tmp_num_ (int x) +{ + g_cells[tmp_num].value = x; + return tmp_num; +} + +SCM +tmp_num2_ (int x) { - g_cells[tmp_num].value = NUMBER; g_cells[tmp_num2].value = x; - return make_cell (tmp_num, tmp_num2, tmp_num2); + return tmp_num2; } SCM @@ -760,7 +768,7 @@ SCM vector_length (SCM x) { assert (TYPE (x) == VECTOR); - return make_number (LENGTH (x)); + return MAKE_NUMBER (LENGTH (x)); } SCM @@ -771,7 +779,7 @@ vector_ref (SCM x, SCM i) SCM e = VECTOR (x) + VALUE (i); if (TYPE (e) == REF) e = g_cells[e].ref; if (TYPE (e) == CHAR) e = make_char (VALUE (e)); - if (TYPE (e) == NUMBER) e = make_number (VALUE (e)); + if (TYPE (e) == NUMBER) e = MAKE_NUMBER (VALUE (e)); return e; } @@ -828,13 +836,13 @@ peekchar () SCM peek_byte () { - return make_number (peekchar ()); + return MAKE_NUMBER (peekchar ()); } SCM read_byte () { - return make_number (getchar ()); + return MAKE_NUMBER (getchar ()); } SCM @@ -868,7 +876,7 @@ SCM char_to_integer (SCM x) { assert (TYPE (x) == CHAR); - return make_number (VALUE (x)); + return MAKE_NUMBER (VALUE (x)); } SCM diff --git a/posix.c b/posix.c index 843e9ba0..e0d66311 100644 --- a/posix.c +++ b/posix.c @@ -48,13 +48,13 @@ force_output (SCM p) ///((arity . n)) SCM open_input_file (SCM file_name) { - return make_number (open (string_to_cstring (file_name), O_RDONLY)); + return MAKE_NUMBER (open (string_to_cstring (file_name), O_RDONLY)); } SCM current_input_port () { - return make_number (fileno (g_stdin)); + return MAKE_NUMBER (fileno (g_stdin)); } SCM diff --git a/reader.c b/reader.c index a585d916..3970c32d 100644 --- a/reader.c +++ b/reader.c @@ -103,7 +103,7 @@ lookup_ (SCM s, SCM a) n += VALUE (car (p)) - '0'; p = cdr (p); } - if (p == cell_nil) return make_number (n * sign); + if (p == cell_nil) return MAKE_NUMBER (n * sign); } SCM x = lookup_symbol_ (s); diff --git a/string.c b/string.c index 57550b24..61b27da4 100644 --- a/string.c +++ b/string.c @@ -48,7 +48,7 @@ SCM string_length (SCM x) { assert (TYPE (x) == STRING); - return make_number (VALUE (length (STRING (x)))); + return MAKE_NUMBER (VALUE (length (STRING (x)))); } SCM diff --git a/type.c b/type.c index d3889e4b..21ed9b17 100644 --- a/type.c +++ b/type.c @@ -113,9 +113,8 @@ boolean_p (SCM x) } #endif -SCM make_number (int); SCM mes_type_of (SCM x) { - return make_number (TYPE (x)); + return MAKE_NUMBER (TYPE (x)); }