expander: sync cify with recently newly used operations
This commit is contained in:
parent
b177a5c908
commit
5ed0cdf563
|
@ -28,6 +28,10 @@
|
||||||
[(string-ref unsafe-string-ref) (and (= n 2) can-gc? 'c_string_ref)]
|
[(string-ref unsafe-string-ref) (and (= n 2) can-gc? 'c_string_ref)]
|
||||||
[(bytes-ref unsafe-bytes-ref) (and (= n 2) 'c_bytes_ref)]
|
[(bytes-ref unsafe-bytes-ref) (and (= n 2) 'c_bytes_ref)]
|
||||||
[(fx+ unsafe-fx+) (and (= n 2) 'c_int_add)]
|
[(fx+ unsafe-fx+) (and (= n 2) 'c_int_add)]
|
||||||
|
[(fx- unsafe-fx-) (and (= n 2) 'c_int_sub)]
|
||||||
|
[(fx* unsafe-fx*) (and (= n 2) 'c_int_mult)]
|
||||||
|
[(fxrshift unsafe-fxrshift) (and (= n 2) 'c_int_rshift)]
|
||||||
|
[(fxand unsafe-fxand) (and (= n 2) 'c_int_and)]
|
||||||
[(add1) (and (= n 1) can-gc? 'c_number_add1)]
|
[(add1) (and (= n 1) can-gc? 'c_number_add1)]
|
||||||
[(sub1) (and (= n 1) can-gc? 'c_number_sub1)]
|
[(sub1) (and (= n 1) can-gc? 'c_number_sub1)]
|
||||||
[(hash-ref) (cond
|
[(hash-ref) (cond
|
||||||
|
@ -106,10 +110,15 @@
|
||||||
[`(char=? ,e1 ,e2) (simple "c_scheme_char_eq(~a)" e1 e2)]
|
[`(char=? ,e1 ,e2) (simple "c_scheme_char_eq(~a)" e1 e2)]
|
||||||
[`(char-whitespace? ,e) (simple "c_scheme_char_whitespacep(~a)" e)]
|
[`(char-whitespace? ,e) (simple "c_scheme_char_whitespacep(~a)" e)]
|
||||||
[`(unsafe-fx< ,e1 ,e2) (simple "c_int_lt(~a)" e1 e2)]
|
[`(unsafe-fx< ,e1 ,e2) (simple "c_int_lt(~a)" e1 e2)]
|
||||||
|
[`(fx< ,e1 ,e2) (simple "c_int_lt(~a)" e1 e2)]
|
||||||
[`(unsafe-fx> ,e1 ,e2) (simple "c_int_gt(~a)" e1 e2)]
|
[`(unsafe-fx> ,e1 ,e2) (simple "c_int_gt(~a)" e1 e2)]
|
||||||
|
[`(fx> ,e1 ,e2) (simple "c_int_gt(~a)" e1 e2)]
|
||||||
[`(unsafe-fx>= ,e1 ,e2) (simple "!c_int_lt(~a)" e1 e2)]
|
[`(unsafe-fx>= ,e1 ,e2) (simple "!c_int_lt(~a)" e1 e2)]
|
||||||
|
[`(fx>= ,e1 ,e2) (simple "!c_int_lt(~a)" e1 e2)]
|
||||||
[`(unsafe-fx<= ,e1 ,e2) (simple "!c_int_gt(~a)" e1 e2)]
|
[`(unsafe-fx<= ,e1 ,e2) (simple "!c_int_gt(~a)" e1 e2)]
|
||||||
|
[`(fx<= ,e1 ,e2) (simple "!c_int_gt(~a)" e1 e2)]
|
||||||
[`(unsafe-fx= ,e1 ,e2) (simple "c_same_obj(~a)" e1 e2)]
|
[`(unsafe-fx= ,e1 ,e2) (simple "c_same_obj(~a)" e1 e2)]
|
||||||
|
[`(fx= ,e1 ,e2) (simple "c_same_obj(~a)" e1 e2)]
|
||||||
[`(= ,e1 ,e2) (simple #:can-gc? #t "c_number_eq(~a)" e1 e2)]
|
[`(= ,e1 ,e2) (simple #:can-gc? #t "c_number_eq(~a)" e1 e2)]
|
||||||
[`(< ,e1 ,e2) (simple #:can-gc? #t "c_number_lt(~a)" e1 e2)]
|
[`(< ,e1 ,e2) (simple #:can-gc? #t "c_number_lt(~a)" e1 e2)]
|
||||||
[`(> ,e1 ,e2) (simple #:can-gc? #t "c_number_gt(~a)" e1 e2)]
|
[`(> ,e1 ,e2) (simple #:can-gc? #t "c_number_gt(~a)" e1 e2)]
|
||||||
|
|
|
@ -328,6 +328,28 @@ static MZ_INLINE Scheme_Object *c_int_add(Scheme_Object *a, Scheme_Object *b)
|
||||||
return scheme_make_integer(SCHEME_INT_VAL(a) + SCHEME_INT_VAL(b));
|
return scheme_make_integer(SCHEME_INT_VAL(a) + SCHEME_INT_VAL(b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MZ_INLINE Scheme_Object *c_int_sub(Scheme_Object *a, Scheme_Object *b)
|
||||||
|
{
|
||||||
|
return scheme_make_integer(SCHEME_INT_VAL(a) - SCHEME_INT_VAL(b));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static MZ_INLINE Scheme_Object *c_int_mult(Scheme_Object *a, Scheme_Object *b)
|
||||||
|
{
|
||||||
|
return scheme_make_integer(SCHEME_INT_VAL(a) * SCHEME_INT_VAL(b));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static MZ_INLINE Scheme_Object *c_int_and(Scheme_Object *a, Scheme_Object *b)
|
||||||
|
{
|
||||||
|
return scheme_make_integer(SCHEME_INT_VAL(a) & SCHEME_INT_VAL(b));
|
||||||
|
}
|
||||||
|
|
||||||
|
static MZ_INLINE Scheme_Object *c_int_rshift(Scheme_Object *a, Scheme_Object *b)
|
||||||
|
{
|
||||||
|
return scheme_make_integer(SCHEME_INT_VAL(a) >> SCHEME_INT_VAL(b));
|
||||||
|
}
|
||||||
|
|
||||||
/* Can GC if not in fixnum range */
|
/* Can GC if not in fixnum range */
|
||||||
static Scheme_Object *c_number_add1(Scheme_Object *a)
|
static Scheme_Object *c_number_add1(Scheme_Object *a)
|
||||||
{
|
{
|
||||||
|
|
|
@ -534,7 +534,12 @@
|
||||||
inline-fuel
|
inline-fuel
|
||||||
`(let-values ,(reverse binds) . ,bodys)))]
|
`(let-values ,(reverse binds) . ,bodys)))]
|
||||||
[(null? args) #f]
|
[(null? args) #f]
|
||||||
[(not (wrap-pair? formal-args)) #f]
|
[(not (wrap-pair? formal-args))
|
||||||
|
(loop '() '() (cons (list (list formal-args)
|
||||||
|
(if (wrap-null? args)
|
||||||
|
''()
|
||||||
|
(cons 'list args)))
|
||||||
|
binds))]
|
||||||
[else
|
[else
|
||||||
(loop (wrap-cdr formal-args)
|
(loop (wrap-cdr formal-args)
|
||||||
(wrap-cdr args)
|
(wrap-cdr args)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user