Skip to content

Commit

Permalink
CS: more reliable inlining of vector-immutable
Browse files Browse the repository at this point in the history
  • Loading branch information
mflatt committed Feb 20, 2023
1 parent 01b025c commit 0a88cde
Showing 2 changed files with 18 additions and 7 deletions.
2 changes: 1 addition & 1 deletion racket/src/cs/rumble.sls
Original file line number Diff line number Diff line change
@@ -375,7 +375,7 @@
[inline:vector-set! vector-set!])
vector-copy
vector-copy!
vector-immutable
(rename [inline:vector-immutable vector-immutable])
vector->values
vector-fill!
vector->immutable-vector
23 changes: 17 additions & 6 deletions racket/src/cs/rumble/vector.ss
Original file line number Diff line number Diff line change
@@ -9,12 +9,23 @@

;; ----------------------------------------

(define (vector-immutable . args)
(if (null? args)
(vector->immutable-vector '#())
(let ([vec (apply vector args)])
(#%$vector-set-immutable! vec)
vec)))
(define vector-immutable
(case-lambda
[() (vector->immutable-vector '#())]
[args (let ([vec (apply vector args)])
(#%$vector-set-immutable! vec)
vec)]))

(define-syntax (inline:vector-immutable stx)
(syntax-case stx ()
[(_) #'(vector->immutable-vector '#())]
[(_ arg ...)
#'(let ([vec (vector arg ...)])
(#%$vector-set-immutable! vec)
vec)]
[(_ . args)
#'(vector-immutable . args)]
[_ #'vector-immutable]))

;; ----------------------------------------

0 comments on commit 0a88cde

Please sign in to comment.