fix 'interior mode for malloc
This commit is contained in:
parent
5cec8d52c2
commit
7797d3672b
|
@ -615,6 +615,20 @@
|
|||
(test (cast p _thing-pointer _intptr)
|
||||
cast q _stuff-pointer _intptr))
|
||||
|
||||
;; test 'interior allocation mode
|
||||
(let ()
|
||||
;; Example by Ron Garcia
|
||||
(define-struct data (a b))
|
||||
(define (cbox s)
|
||||
(define ptr (malloc _racket 'interior))
|
||||
(ptr-set! ptr _racket s)
|
||||
ptr)
|
||||
(define (cunbox cb)
|
||||
(ptr-ref cb _racket 0))
|
||||
(define cb1 (cbox (make-data 1 2)))
|
||||
(collect-garbage)
|
||||
(test 1 data-a (cunbox cb1)))
|
||||
|
||||
(let ()
|
||||
(struct foo (ptr)
|
||||
#:property prop:cpointer 0)
|
||||
|
|
|
@ -2665,7 +2665,7 @@ static Scheme_Object *foreign_malloc(int argc, Scheme_Object *argv[])
|
|||
else if (SAME_OBJ(mode, stubborn_sym)) mf = scheme_malloc_stubborn;
|
||||
else if (SAME_OBJ(mode, eternal_sym)) mf = scheme_malloc_eternal;
|
||||
else if (SAME_OBJ(mode, uncollectable_sym)) mf = scheme_malloc_uncollectable;
|
||||
else if (SAME_OBJ(mode, interior_sym)) mf = scheme_malloc_atomic_allow_interior;
|
||||
else if (SAME_OBJ(mode, interior_sym)) mf = scheme_malloc_allow_interior;
|
||||
else if (SAME_OBJ(mode, atomic_interior_sym)) mf = scheme_malloc_atomic_allow_interior;
|
||||
else if (SAME_OBJ(mode, raw_sym)) mf = malloc;
|
||||
else if (SAME_OBJ(mode, tagged_sym)) mf = scheme_malloc_tagged;
|
||||
|
|
|
@ -1904,7 +1904,7 @@ static void* SCHEME2C(const char *who,
|
|||
else if (SAME_OBJ(mode, stubborn_sym)) mf = scheme_malloc_stubborn;
|
||||
else if (SAME_OBJ(mode, eternal_sym)) mf = scheme_malloc_eternal;
|
||||
else if (SAME_OBJ(mode, uncollectable_sym)) mf = scheme_malloc_uncollectable;
|
||||
else if (SAME_OBJ(mode, interior_sym)) mf = scheme_malloc_atomic_allow_interior;
|
||||
else if (SAME_OBJ(mode, interior_sym)) mf = scheme_malloc_allow_interior;
|
||||
else if (SAME_OBJ(mode, atomic_interior_sym)) mf = scheme_malloc_atomic_allow_interior;
|
||||
else if (SAME_OBJ(mode, raw_sym)) mf = malloc;
|
||||
else if (SAME_OBJ(mode, tagged_sym)) mf = scheme_malloc_tagged;
|
||||
|
|
Loading…
Reference in New Issue
Block a user