summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-02-21 02:04:32 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-02-21 03:27:09 +0200
commitbbf0e2fe120f095ce09fcb7eb631c9fd04bd9760 (patch)
treeba40233e70d58abf4120f632a36913ed12512a42
parent1d30b116852cc94f3096125997c310cf64fb6537 (diff)
downloadmicropython-bbf0e2fe120f095ce09fcb7eb631c9fd04bd9760.tar.gz
micropython-bbf0e2fe120f095ce09fcb7eb631c9fd04bd9760.zip
parse: Note that fact that parser's small ints are different than VM small int.
Specifically, VM's small ints are 31 bit, while parser's only 28. There's already MP_OBJ_FITS_SMALL_INT(), so, for clarity, rename MP_FIT_SMALL_INT() to MP_PARSE_FITS_SMALL_INT().
-rw-r--r--py/compile.c2
-rw-r--r--py/parse.c2
-rw-r--r--py/parse.h3
3 files changed, 4 insertions, 3 deletions
diff --git a/py/compile.c b/py/compile.c
index c895b26fa9..ef0130463d 100644
--- a/py/compile.c
+++ b/py/compile.c
@@ -117,7 +117,7 @@ mp_parse_node_t fold_constants(mp_parse_node_t pn) {
assert(0);
res = 0;
}
- if (MP_FIT_SMALL_INT(res)) {
+ if (MP_PARSE_FITS_SMALL_INT(res)) {
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_SMALL_INT, res);
}
}
diff --git a/py/parse.c b/py/parse.c
index bbab19d352..57d78a05b1 100644
--- a/py/parse.c
+++ b/py/parse.c
@@ -279,7 +279,7 @@ STATIC void push_result_token(parser_t *parser, const mp_lexer_t *lex) {
}
if (dec) {
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_DECIMAL, qstr_from_strn(str, len));
- } else if (small_int && !overflow && MP_FIT_SMALL_INT(int_val)) {
+ } else if (small_int && !overflow && MP_PARSE_FITS_SMALL_INT(int_val)) {
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_SMALL_INT, int_val);
} else {
pn = mp_parse_node_new_leaf(MP_PARSE_NODE_INTEGER, qstr_from_strn(str, len));
diff --git a/py/parse.h b/py/parse.h
index 66efd8a208..6e299ef69e 100644
--- a/py/parse.h
+++ b/py/parse.h
@@ -14,7 +14,8 @@ struct _mp_lexer_t;
// makes sure the top 5 bits of x are all cleared (positive number) or all set (negavite number)
// these macros can probably go somewhere else because they are used more than just in the parser
#define MP_UINT_HIGH_5_BITS (~((~((machine_uint_t)0)) >> 5))
-#define MP_FIT_SMALL_INT(x) (((((machine_uint_t)(x)) & MP_UINT_HIGH_5_BITS) == 0) || ((((machine_uint_t)(x)) & MP_UINT_HIGH_5_BITS) == MP_UINT_HIGH_5_BITS))
+// parser's small ints are different from VM small int
+#define MP_PARSE_FITS_SMALL_INT(x) (((((machine_uint_t)(x)) & MP_UINT_HIGH_5_BITS) == 0) || ((((machine_uint_t)(x)) & MP_UINT_HIGH_5_BITS) == MP_UINT_HIGH_5_BITS))
#define MP_PARSE_NODE_NULL (0)
#define MP_PARSE_NODE_ID (0x1)