From 4c53d3c3800264fbf117456558227783ea64e444 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 13 Jan 2019 09:42:50 -0700 Subject: [PATCH] cs: add missing `unsafe-struct*-cas!` --- racket/src/cs/primitive/unsafe.ss | 1 + racket/src/cs/rumble.sls | 1 + racket/src/cs/rumble/unsafe.ss | 3 +++ 3 files changed, 5 insertions(+) diff --git a/racket/src/cs/primitive/unsafe.ss b/racket/src/cs/primitive/unsafe.ss index 1d4ff1c9cc..983de7aad8 100644 --- a/racket/src/cs/primitive/unsafe.ss +++ b/racket/src/cs/primitive/unsafe.ss @@ -153,6 +153,7 @@ [unsafe-string-length (known-procedure/pure 2)] [unsafe-string-ref (known-procedure/pure 4)] [unsafe-string-set! (known-procedure/pure 8)] + [unsafe-struct*-cas! (known-procedure 16)] [unsafe-struct*-ref (known-procedure/pure 4)] [unsafe-struct*-set! (known-procedure/pure 8)] [unsafe-struct-ref (known-procedure/pure 4)] diff --git a/racket/src/cs/rumble.sls b/racket/src/cs/rumble.sls index d77392ad36..7cd0b29cfa 100644 --- a/racket/src/cs/rumble.sls +++ b/racket/src/cs/rumble.sls @@ -650,6 +650,7 @@ unsafe-struct-set! unsafe-struct*-ref unsafe-struct*-set! + unsafe-struct*-cas! unsafe-struct? ; not exported to racket unsafe-s16vector-ref diff --git a/racket/src/cs/rumble/unsafe.ss b/racket/src/cs/rumble/unsafe.ss index e9551e0fcf..31f6761645 100644 --- a/racket/src/cs/rumble/unsafe.ss +++ b/racket/src/cs/rumble/unsafe.ss @@ -78,6 +78,9 @@ (define unsafe-vector*-set! (unsafe-primitive vector-set!)) (define unsafe-vector*-cas! (unsafe-primitive vector-cas!)) +(define (unsafe-struct*-cas! s k old new) + (#%vector-cas! s k old new)) + (define unsafe-unbox* (unsafe-primitive unbox)) (define unsafe-set-box*! (unsafe-primitive set-box!)) (define unsafe-box*-cas! (unsafe-primitive box-cas!))