Clean up stack shuffling in libc

db4
Slava Pestov 2009-01-17 20:10:56 -06:00
parent 9a69ee2f0a
commit abd4a82f9f
1 changed files with 8 additions and 12 deletions

View File

@ -52,13 +52,13 @@ M: realloc-error summary
<PRIVATE
: add-malloc ( alien -- )
mallocs conjoin ;
: add-malloc ( alien -- alien )
dup mallocs conjoin ;
: delete-malloc ( alien -- )
[
mallocs delete-at*
[ double-free ] unless drop
[ drop ] [ double-free ] if
] when* ;
: malloc-exists? ( alien -- ? )
@ -67,22 +67,18 @@ M: realloc-error summary
PRIVATE>
: malloc ( size -- alien )
(malloc) check-ptr
dup add-malloc ;
(malloc) check-ptr add-malloc ;
: calloc ( count size -- alien )
(calloc) check-ptr
dup add-malloc ;
(calloc) check-ptr add-malloc ;
: realloc ( alien size -- newalien )
over malloc-exists? [ realloc-error ] unless
dupd (realloc) check-ptr
swap delete-malloc
dup add-malloc ;
[ drop ] [ (realloc) check-ptr ] 2bi
[ delete-malloc ] [ add-malloc ] bi* ;
: free ( alien -- )
dup delete-malloc
(free) ;
[ delete-malloc ] [ (free) ] bi ;
: memcpy ( dst src size -- )
"void" "libc" "memcpy" { "void*" "void*" "ulong" } alien-invoke ;