jumpforth/test/allocate.4th

42 lines
821 B
Forth

0 VALUE LARGE-OBJECT
0 VALUE LIST-HEAD
: HEADING "* " TYPE TYPE EOL ;
: TEST
"Allocate large object (8 MiB)" HEADING
8 MB ALLOCATE TO LARGE-OBJECT
LARGE-OBJECT 8 MB BL FILL
"Free large object" HEADING
LARGE-OBJECT FREE
NULL TO LARGE-OBJECT
"Allocate 1000 small objects (200 B)" HEADING
1000 0 DO
200 ALLOCATE
LIST-HEAD OVER !
TO LIST-HEAD
LOOP
"Free 1000 small objects" HEADING
LIST-HEAD BEGIN
?DUP
WHILE
DUP @ SWAP FREE
REPEAT
"Allocate 0 bytes" HEADING
0 ALLOCATE "Result: " TYPE U. EOL
"Free a NULL pointer" HEADING
0 FREE
"Duplicate a string" HEADING
"test string" 2DUP DUPLICATE
"original (" TYPE 2SWAP DUP U. " chars): " TYPE TYPE EOL
"duplicate (" TYPE DUP U. " chars): " TYPE 2DUP TYPE EOL
DROP FREE ;
TEST