mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-11 23:17:34 +02:00
avoid left shifts for string cursors
This commit is contained in:
parent
b4b6d508d1
commit
d4e45dc260
1 changed files with 5 additions and 0 deletions
|
@ -824,8 +824,13 @@ SEXP_API int sexp_idp(sexp x);
|
||||||
#define SEXP_TEN sexp_make_fixnum(10)
|
#define SEXP_TEN sexp_make_fixnum(10)
|
||||||
|
|
||||||
#if SEXP_USE_DISJOINT_STRING_CURSORS
|
#if SEXP_USE_DISJOINT_STRING_CURSORS
|
||||||
|
#if SEXP_USE_SIGNED_SHIFTS
|
||||||
#define sexp_make_string_cursor(n) ((sexp) ((((sexp_sint_t)(n))<<SEXP_STRING_CURSOR_BITS) + SEXP_STRING_CURSOR_TAG))
|
#define sexp_make_string_cursor(n) ((sexp) ((((sexp_sint_t)(n))<<SEXP_STRING_CURSOR_BITS) + SEXP_STRING_CURSOR_TAG))
|
||||||
#define sexp_unbox_string_cursor(n) (((sexp_sint_t)(n))>>SEXP_STRING_CURSOR_BITS)
|
#define sexp_unbox_string_cursor(n) (((sexp_sint_t)(n))>>SEXP_STRING_CURSOR_BITS)
|
||||||
|
#else
|
||||||
|
#define sexp_make_string_cursor(n) ((sexp) ((((sexp_sint_t)(n))*(sexp_sint_t)(1uL<<SEXP_STRING_CURSOR_BITS)) | SEXP_STRING_CURSOR_TAG))
|
||||||
|
#define sexp_unbox_string_cursor(n) (((sexp_sint_t)((sexp_uint_t)(n) & ~SEXP_STRING_CURSOR_TAG))/(sexp_sint_t)(1uL<<SEXP_STRING_CURSOR_BITS))
|
||||||
|
#endif
|
||||||
#define sexp_string_cursor_to_fixnum(n) sexp_make_fixnum(sexp_unbox_string_cursor(n))
|
#define sexp_string_cursor_to_fixnum(n) sexp_make_fixnum(sexp_unbox_string_cursor(n))
|
||||||
#define sexp_fixnum_to_string_cursor(n) sexp_make_string_cursor(sexp_unbox_fixnum(n))
|
#define sexp_fixnum_to_string_cursor(n) sexp_make_string_cursor(sexp_unbox_fixnum(n))
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Reference in a new issue