cify: fix a GC problem
This commit is contained in:
parent
b97811d4db
commit
c43e42c903
|
@ -283,9 +283,10 @@
|
|||
(out-close!)))
|
||||
e env)
|
||||
(generate (multiple-return "") `(begin . ,r) env)
|
||||
(runstack-sync! runstack)
|
||||
(out-open "if (~a_count != 1)" vals-id)
|
||||
(return ret runstack #:can-omit? #t
|
||||
(format "scheme_values(~a_count, (Scheme_Object **)~a)" vals-id (runstack-ref runstack vals-id)))
|
||||
(format "scheme_values(~a_count, (Scheme_Object **)~a)" vals-id (runstack-ref runstack vals-id #:values-ok? #t)))
|
||||
(cond
|
||||
[(return-can-omit-single? ret)
|
||||
(out-close!)]
|
||||
|
|
|
@ -21,10 +21,12 @@
|
|||
[(box unsafe-make-place-local) (and (= n 1) can-gc? 'c_make_box)]
|
||||
[(unbox unsafe-unbox unbox* unsafe-unbox* unsafe-place-local-ref) (and (= n 1) 'c_box_ref)]
|
||||
[(weak-box-value) (and (or (= n 1) (= n 2)) 'c_weak_box_value)]
|
||||
[(set-box! set-box*! unsafe-set-box! unsafe-set-box*! unsafe-place-local-set!) (and (= n 2) 'c_box_set)]
|
||||
[(vector-ref unsafe-vector-ref) (and (= n 2) 'c_vector_ref)]
|
||||
[(set-box! unsafe-set-box!) (and (= n 2) can-gc? 'c_box_set)]
|
||||
[(set-box*! unsafe-set-box*! unsafe-place-local-set!) (and (= n 2) 'c_box_set)]
|
||||
[(vector-ref unsafe-vector-ref) (and (= n 2) can-gc? 'c_vector_ref)]
|
||||
[(vector*-ref unsafe-vector*-ref) (and (= n 2) 'c_authentic_vector_ref)]
|
||||
[(vector-set! unsafe-vector-set! vector*-set! unsafe-vector*-set!) (and (= n 3) 'c_vector_set)]
|
||||
[(vector-set! unsafe-vector-set!) (and (= n 3) can-gc? 'c_vector_set)]
|
||||
[(vector*-set! unsafe-vector*-set!) (and (= n 3) 'c_vector_set)]
|
||||
[(vector-length unsafe-vector-length vector*-length unsafe-vector*-length) (and (= n 1) 'c_vector_length)]
|
||||
[(string-ref unsafe-string-ref) (and (= n 2) can-gc? 'c_string_ref)]
|
||||
[(bytes-ref unsafe-bytes-ref) (and (= n 2) 'c_bytes_ref)]
|
||||
|
|
Loading…
Reference in New Issue
Block a user