Fixing kawa uint8-ref

This commit is contained in:
retropikzel 2025-07-23 07:08:42 +03:00
parent 542d30c98d
commit f0f604aeb2
1 changed files with 17 additions and 6 deletions

View File

@ -1,6 +1,7 @@
(define arena (invoke-static java.lang.foreign.Arena 'global)) (define arena (invoke-static java.lang.foreign.Arena 'global))
(define method-handle-lookup (invoke-static java.lang.invoke.MethodHandles 'lookup)) (define method-handle-lookup (invoke-static java.lang.invoke.MethodHandles 'lookup))
(define native-linker (invoke-static java.lang.foreign.Linker 'nativeLinker)) (define native-linker (invoke-static java.lang.foreign.Linker 'nativeLinker))
(define INTEGER-MAX-VALUE (static-field java.lang.Integer 'MAX_VALUE))
(define value->object (define value->object
(lambda (value type) (lambda (value type)
@ -155,25 +156,35 @@
(lambda (pointer) (lambda (pointer)
(invoke pointer 'equals null-pointer))) (invoke pointer 'equals null-pointer)))
(define u8-value-layout (invoke (static-field java.lang.foreign.ValueLayout 'JAVA_BYTE) 'withByteAlignment 1)) (define u8-value-layout
(invoke ;(static-field java.lang.foreign.ValueLayout 'JAVA_BYTE)
(static-field java.lang.foreign.ValueLayout 'JAVA_INT)
'withByteAlignment
8))
(define c-bytevector-u8-set! (define c-bytevector-u8-set!
(lambda (c-bytevector k byte) (lambda (c-bytevector k byte)
(invoke (invoke c-bytevector 'reinterpret (static-field java.lang.Integer 'MAX_VALUE)) (invoke (invoke c-bytevector 'reinterpret INTEGER-MAX-VALUE)
'set 'set
u8-value-layout u8-value-layout
k k
byte))) byte)))
(define c-bytevector-u8-ref (define c-bytevector-u8-ref
(lambda (c-bytevector k) (lambda (c-bytevector k)
(invoke (invoke c-bytevector 'reinterpret (static-field java.lang.Integer 'MAX_VALUE)) (invoke (invoke c-bytevector 'reinterpret INTEGER-MAX-VALUE)
'get 'get
u8-value-layout u8-value-layout
k))) k)))
(define pointer-value-layout (invoke (static-field java.lang.foreign.ValueLayout 'ADDRESS) 'withByteAlignment 8)) (define pointer-value-layout
(invoke (static-field java.lang.foreign.ValueLayout 'ADDRESS)
'withByteAlignment
8))
(define c-bytevector-pointer-set! (define c-bytevector-pointer-set!
(lambda (c-bytevector k pointer) (lambda (c-bytevector k pointer)
(invoke (invoke c-bytevector 'reinterpret (static-field java.lang.Integer 'MAX_VALUE)) (invoke (invoke c-bytevector 'reinterpret INTEGER-MAX-VALUE)
'set 'set
pointer-value-layout pointer-value-layout
k k
@ -181,7 +192,7 @@
(define c-bytevector-pointer-ref (define c-bytevector-pointer-ref
(lambda (c-bytevector k) (lambda (c-bytevector k)
(invoke (invoke c-bytevector 'reinterpret (static-field java.lang.Integer 'MAX_VALUE)) (invoke (invoke c-bytevector 'reinterpret INTEGER-MAX-VALUE)
'get 'get
pointer-value-layout pointer-value-layout
k))) k)))