2014-11-12 02:13:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								USING:  accessors  alien  alien.c-types  alien.complex  alien.data  alien.libraries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								alien.syntax arrays byte-arrays classes classes.struct combinators
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								combinators.extras compiler compiler.test concurrency.promises continuations
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								destructors effects generalizations io io.backend io.pathnames
							 
						 
					
						
							
								
									
										
										
										
											2020-01-24 16:54:33 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								io.streams.string kernel kernel.private libc layouts locals math math.bitwise
							 
						 
					
						
							
								
									
										
										
										
											2014-11-12 02:13:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								math.private memory namespaces namespaces.private random parser quotations
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sequences slots.private specialized-arrays stack-checker stack-checker.errors
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								system threads tools.test words ;
 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-16 10:20:47 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FROM:  alien.c-types  => float  short  ;
 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-09 23:33:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								SPECIALIZED-ARRAY: float
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SPECIALIZED-ARRAY: char
							 
						 
					
						
							
								
									
										
										
										
											2009-04-26 01:51:47 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								IN:  compiler.tests.alien 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-18 18:46:31 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! Make sure that invalid inputs don't pass the stack checker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ [ void { } "cdecl"  alien-indirect ] infer ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ [ "void"  { } cdecl alien-indirect ] infer ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ [ void* 3  cdecl alien-indirect ] infer ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ [ void* { "int"  } cdecl alien-indirect ] infer ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ [ void* { int } cdecl { } alien-callback ] infer ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-25 14:05:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								<<
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  libfactor-ffi-tests-path  (  --  string  )
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-28 18:25:50 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    "resource:"  absolute-path
							 
						 
					
						
							
								
									
										
										
										
											2009-03-25 14:05:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    {
							 
						 
					
						
							
								
									
										
										
										
											2011-09-18 21:25:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        { [ os windows? ]  [ "libfactor-ffi-test.dll"  ] }
							 
						 
					
						
							
								
									
										
										
										
											2009-03-26 19:56:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        { [ os macosx? ] [ "libfactor-ffi-test.dylib"  ] }
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 15:41:48 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        { [ os unix?  ]  [ "libfactor-ffi-test.so"  ] }
							 
						 
					
						
							
								
									
										
										
										
											2009-03-26 19:56:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } cond  append-path ;
 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-25 14:05:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  mingw?  (  --  ?  )  os windows? vm-compiler "GCC"  head?  and  ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"f-cdecl"  libfactor-ffi-tests-path mingw? mingw cdecl ?  add-library
							 
						 
					
						
							
								
									
										
										
										
											2009-03-25 14:05:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:29:04 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								"f-stdcall"  libfactor-ffi-tests-path stdcall add-library
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 05:22:42 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"f-fastcall"  libfactor-ffi-tests-path fastcall add-library
							 
						 
					
						
							
								
									
										
										
										
											2009-03-25 14:05:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-27 18:58:31 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								LIBRARY: f-cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: void ffi_test_0 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ ] [ ffi_test_0 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: int ffi_test_1 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 3  ] [ ffi_test_1 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-28 00:49:26 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ ] [ \ ffi_test_1  def>> [ drop  ] append  compile-call ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_2  ( int x, int y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 5  ] [ 2  3  ffi_test_2 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ "hi"  3  ffi_test_2 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_3  ( int x, int y, int z, int t )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 25  ] [ 2  3  4  5  ffi_test_3 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: float  ffi_test_4 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 1.5  ] [ ffi_test_4 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: double ffi_test_5 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 1.5  ] [ ffi_test_5 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-20 01:55:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_9  ( int a, int b, int c, int d, int e, int f, int g )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 28  ] [ 1  2  3  4  5  6  7  ffi_test_9 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ "a"  2  3  4  5  6  7  ffi_test_9 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1  2  3  4  5  6  "a"  ffi_test_9 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  FOO  { x int } { y int } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  make-FOO  (  x  y  --  FOO  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FOO <struct> swap  >>y swap  >>x ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_11  ( int a, FOO b, int c )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 14  ] [ 1  2  3  make-FOO 4  ffi_test_11 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_13  ( int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 66  ] [ 1  2  3  4  5  6  7  8  9  10  11  ffi_test_13 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  FOO ffi_test_14  ( int x, int y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 11  6  ] [ 11  6  ffi_test_14 [ x>> ] [ y>> ] bi  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  c-string ffi_test_15  ( c-string x, c-string y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ "foo"  ] [ "xy"  "zt"  ffi_test_15 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ "bar"  ] [ "xy"  "xy"  ffi_test_15 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1  2  ffi_test_15 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  BAR  { x long } { y long } { z long } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  BAR ffi_test_16  ( long x, long y, long z )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 11  6  -7  ] [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    11  6  -7  ffi_test_16 [ x>> ] [ y>> ] [ z>> ] tri
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  TINY  { x int } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  TINY ffi_test_17  ( int x )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 11  ] [ 11  ffi_test_17 x>> ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ [ alien-indirect ] infer ] [ inference-error? ] must-fail-with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  indirect-test-1  (  ptr  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 1  1  } [ indirect-test-1 ] must-infer-as
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 01:03:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 3  ] [ &: ffi_test_1 indirect-test-1 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-01 03:04:42 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  indirect-test-1'  (  ptr  --  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { } cdecl alien-indirect drop  ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-01 03:04:42 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 1  0  } [ indirect-test-1' ] must-infer-as
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 01:03:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ ] [ &: ffi_test_1 indirect-test-1' ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-01 03:04:42 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ -1  indirect-test-1 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  indirect-test-2  (  x  y  ptr  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { int int } cdecl alien-indirect gc ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 3  1  } [ indirect-test-2 ] must-infer-as
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 5  ]
							 
						 
					
						
							
								
									
										
										
										
											2008-12-11 01:03:58 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 2  3  &: ffi_test_2 indirect-test-2 ]
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  indirect-test-3  (  a  b  c  d  ptr  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:29:04 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { int int int int } stdcall alien-indirect
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-19 11:34:06 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ f  ] [ "f-stdcall"  library-dll f  =  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2013-03-24 00:23:23 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ stdcall ] [ "f-stdcall"  lookup-library abi>> ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  ffi_test_18  (  w  x  y  z  --  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-stdcall"  "ffi_test_18"  { int int int int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 25  ] [ 2  3  4  5  ffi_test_18 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  ffi_test_19  (  x  y  z  --  BAR  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    BAR "f-stdcall"  "ffi_test_19"  { long long long } f
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 11  6  -7  ] [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    11  6  -7  ffi_test_19 [ x>> ] [ y>> ] [ z>> ] tri
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 21:48:12 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  multi_ffi_test_18  (  w  x  y  z  w'  x'  y'  z'  --  int  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ int "f-stdcall"  "ffi_test_18"  { int int int int } f  alien-invoke ]
							 
						 
					
						
							
								
									
										
										
										
											2018-06-19 20:15:05 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    4dip
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-stdcall"  "ffi_test_18"  { int int int int } f  alien-invoke
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 21:48:12 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 25  85  ] [ 2  3  4  5  6  7  8  9  multi_ffi_test_18 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_6  ( float x, float y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 6.0  ] [ 3.0  2.0  ffi_test_6 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ "a"  "b"  ffi_test_6 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_7  ( double x, double y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 6.0  ] [ 3.0  2.0  ffi_test_7 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_8  ( double x, float y, double z, float t, int w )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ 19.0  ] [ 3.0  2.0  1.0  6.0  7  ffi_test_8 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_10  ( int a, int b, double c, int d, float e, int f, int g, int h )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								[ -34  ] [ 1  2  3.0  4  5.0  6  7  8  ffi_test_10 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: void ffi_test_20 (  double  x1,  double  x2,  double  x3, 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    double y1, double y2, double y3,
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    double z1, double z2, double z3 )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ ] [ 1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0  ffi_test_20 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Make sure XT doesn't get clobbered in stack frame 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-11-17 13:23:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  ffi_test_31  (  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  --  result  y  )
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-21 19:44:00 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int
							 
						 
					
						
							
								
									
										
										
										
											2009-03-27 15:39:45 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    "f-cdecl"  "ffi_test_31" 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    alien-invoke gc 3  ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 10:10:13 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 861  3  ] [ 42  [ ] each-integer  ffi_test_31 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-11-17 13:23:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  ffi_test_31_point_5  (  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  a  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-21 19:44:00 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    float
 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-27 18:58:31 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    "f-cdecl"  "ffi_test_31_point_5" 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  float  } f
 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-17 13:23:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 10:10:13 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 861.0  ] [ 42  [ >float  ] each-integer  ffi_test_31_point_5 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  longlong ffi_test_21  ( long x, long y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 121932631112635269  ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 123456789  987654321  ffi_test_21 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  long ffi_test_22  ( long x, longlong y, longlong z )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 987655432  ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1111  121932631112635269  123456789  ffi_test_22 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1111  f  123456789  ffi_test_22 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  RECT 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { x float  } { y float  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { w float  } { h float  } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  <RECT>  (  x  y  w  h  --  rect  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    RECT <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>h
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>w
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>y
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>x ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_12  ( int a, int b, RECT c, int d, int e, int f )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 45  ] [ 1  2  3.0  4.0  5.0  6.0  <RECT> 7  8  9  ffi_test_12 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1  2  { 1  2  3  } 7  8  9  ffi_test_12 ] must-fail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  float ffi_test_23  ( float[3] x, float[3] y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-11-14 21:18:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 32.0  ] [
							 
						 
					
						
							
								
									
										
										
										
											2011-09-25 14:49:27 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { 1.0  2.0  3.0  } float  >c-array
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 4.0  5.0  6.0  } float  >c-array
							 
						 
					
						
							
								
									
										
										
										
											2008-11-14 21:18:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ffi_test_23
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Test odd-size structs 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-1  { x char[1] } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test-struct-1 ffi_test_24 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-1 { x char-array{ 1  } } } ] [ ffi_test_24 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-2  { x char[2] } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test-struct-2 ffi_test_25 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-2 { x char-array{ 1  2  } } } ] [ ffi_test_25 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-3  { x char[3] } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test-struct-3 ffi_test_26 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-3 { x char-array{ 1  2  3  } } } ] [ ffi_test_26 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-4  { x char[4] } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test-struct-4 ffi_test_27 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-4 { x char-array{ 1  2  3  4  } } } ] [ ffi_test_27 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-5  { x char[5] } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test-struct-5 ffi_test_28 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-5 { x char-array{ 1  2  3  4  5  } } } ] [ ffi_test_28 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-6  { x char[6] } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test-struct-6 ffi_test_29 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-6 { x char-array{ 1  2  3  4  5  6  } } } ] [ ffi_test_29 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-7  { x char[7] } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test-struct-7 ffi_test_30 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 12:01:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-7 { x char-array{ 1  2  3  4  5  6  7  } } } ] [ ffi_test_30 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-8  { x double } { y double } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_32  ( test-struct-8 x, int y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 9.0  ] [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-8 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1.0  >>x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    2.0  >>y
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    3  ffi_test_32
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-9  { x float  } { y float  } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_33  ( test-struct-9 x, int y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 9.0  ] [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-9 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1.0  >>x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    2.0  >>y
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    3  ffi_test_33
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-10  { x float  } { y int } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_34  ( test-struct-10 x, int y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 9.0  ] [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-10 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1.0  >>x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    2  >>y
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    3  ffi_test_34
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-11  { x int } { y int } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_35  ( test-struct-11 x, int y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 9.0  ] [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-11 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1  >>x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    2  >>y
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    3  ffi_test_35
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test-struct-12  { a int } { x double } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-09 04:10:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  make-struct-12  (  x  --  alien  )
 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-12 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>x ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  double ffi_test_36  ( test-struct-12 x )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1.23456  ] [ 1.23456  make-struct-12 ffi_test_36 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  ulonglong ffi_test_38  ( ulonglong x, ulonglong y )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ t  ] [ 31  2^  32  2^  ffi_test_38 63  2^  =  ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Test callbacks 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-02 22:52:02 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  callback-throws  (  --  x  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { } cdecl [ "Hi"  throw  ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ t  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    callback-throws [ alien? ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  callback-1  (  --  callback  )  void { } cdecl [ ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 10:10:13 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 0  1  ] [ [ callback-1 ] infer [ in>> length  ] [ out>> length  ] bi  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ t  } [ callback-1 [ alien? ] with-callback ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  callback_test_1  (  ptr  --  )  void { } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ } [ callback-1 [ callback_test_1 ] with-callback ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  callback-2  (  --  callback  )  void { } cdecl [ [ 5  throw  ] ignore-errors  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ } [ callback-2 [ callback_test_1 ] with-callback ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  callback-3  (  --  callback  )  void { } cdecl [ 5  "x"  set  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ t  3  5  } [
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    [
							 
						 
					
						
							
								
									
										
										
										
											2015-08-13 20:53:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        (get-namestack)
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        3  "x"  set  callback-3 [ callback_test_1 ] with-callback
							 
						 
					
						
							
								
									
										
										
										
											2015-08-13 20:53:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        (get-namestack) eq?
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-18 05:06:00 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        "x"  get  "x"  get-global
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    ] with-scope
 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-5  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void { } cdecl [ gc ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ "testing"  } [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    "testing"  callback-5 [ callback_test_1 ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-16 12:39:22 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  callback-5b  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void { } cdecl [ compact-gc ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-16 12:39:22 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ "testing"  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    "testing"  callback-5b [ callback_test_1 ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-6  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void { } cdecl [ [ continue  ] callcc0  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 1  2  3  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    callback-6 [ callback_test_1 1  2  3  ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-7  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void { } cdecl [ 1000000  sleep ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 1  2  3  ] [ callback-7 [ callback_test_1 1  2  3  ] with-callback ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ f  ] [ namespace  global  eq?  ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-8  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void { } cdecl [ [ ] in-thread yield ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ ] [ callback-8 [ callback_test_1 ] with-callback ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-9  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { int int int } cdecl [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-13 20:21:44 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        +  +  1  +
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: void ffi_test_36_point_5 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ ] [ ffi_test_36_point_5 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_37  ( void* func )
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 1  ] [ callback-9 [ ffi_test_37 ] with-callback ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-08-22 16:30:57 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 7  ] [ callback-9 [ ffi_test_37 ] with-callback ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-09 04:10:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test_struct_13 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 17:36:02 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { x1 float  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { x2 float  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { x3 float  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { x4 float  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { x5 float  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { x6 float  } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-09 04:10:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  make-test-struct-13  (  --  alien  )
 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test_struct_13 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        1.0  >>x1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        2.0  >>x2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        3.0  >>x3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        4.0  >>x4
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        5.0  >>x5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        6.0  >>x6 ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-09 04:10:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int ffi_test_39  ( long a, long b, test_struct_13 s )
							 
						 
					
						
							
								
									
										
										
										
											2008-09-09 04:10:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 21  ] [ 12347  12347  make-test-struct-13 ffi_test_39 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-12 01:04:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Joe Groff found this problem 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  double-rect 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 17:36:02 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { a double }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { b double }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { c double }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { d double } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-12 01:04:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  <double-rect>  (  a  b  c  d  --  foo  )
 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    double-rect <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>d
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>c
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>b
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  >>a ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-12 01:04:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  >double-rect<  (  foo  --  a  b  c  d  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    {
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        [ a>> ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        [ b>> ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        [ c>> ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        [ d>> ]
							 
						 
					
						
							
								
									
										
										
										
											2008-09-12 01:04:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } cleave  ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  double-rect-callback  (  --  alien  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void { void* void* double-rect } cdecl
							 
						 
					
						
							
								
									
										
										
										
											2008-09-12 01:04:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ "example"  set-global  2drop  ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-10 03:41:20 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  double-rect-test  (  arg  callback  --  arg'  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 20:06:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ f  f  ] 2dip
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void { void* void* double-rect } cdecl alien-indirect
							 
						 
					
						
							
								
									
										
										
										
											2008-09-12 01:04:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    "example"  get-global  ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ byte-array 1.0  2.0  3.0  4.0  } [
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 20:06:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    1.0  2.0  3.0  4.0  <double-rect>
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    double-rect-callback [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        double-rect-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        [ >c-ptr class-of ] [ >double-rect< ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test_struct_14 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { x1 double }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { x2 double } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  test_struct_14 ffi_test_40  ( double x1, double x2 )
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1.0  2.0  ] [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    1.0  2.0  ffi_test_40 [ x1>> ] [ x2>> ] bi
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-10  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test_struct_14 { double double } cdecl
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        test_struct_14 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>x2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>x1
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-10-test  (  x1  x2  callback  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test_struct_14 { double double } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 1.0  2.0  } [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    1.0  2.0  callback-10 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-10-test [ x1>> ] [ x2>> ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  test-struct-12 ffi_test_41  ( int a, double x )
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1  2.0  ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1  2.0  ffi_test_41
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ a>> ] [ x>> ] bi
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-11  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-12 { int double } cdecl
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        test-struct-12 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>a
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-11-test  (  x1  x2  callback  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-12 { int double } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 1  2.0  } [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    1  2.0  callback-11 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-11-test [ a>> ] [ x>> ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test_struct_15 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { x float  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { y float  } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  test_struct_15 ffi_test_42  ( float x, float y )
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 1.0  2.0  ] [ 1.0  2.0  ffi_test_42 [ x>> ] [ y>> ] bi  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-12  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test_struct_15 { float  float  } cdecl
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        test_struct_15 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>y
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>x
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-12-test  (  x1  x2  callback  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test_struct_15 { float  float  } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 1.0  2.0  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    1.0  2.0  callback-12 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-12-test [ x>> ] [ y>> ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  test_struct_16 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 13:00:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { x float  }
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { a int } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  test_struct_16 ffi_test_43  ( float x, int a )
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 1.0  2  ] [ 1.0  2  ffi_test_43 [ x>> ] [ a>> ] bi  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-13  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test_struct_16 { float  int } cdecl
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        test_struct_16 <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>a
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            swap  >>x
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-13-test  (  x1  x2  callback  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test_struct_16 { float  int } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 1.0  2  } [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    1.0  2  callback-13 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-13-test [ x>> ] [ a>> ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: test_struct_14 ffi_test_44 (  )  inline
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 11:59:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 1.0  2.0  ] [ ffi_test_44 [ x1>> ] [ x2>> ] bi  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 21:28:13 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  stack-frame-bustage  (  --  a  b  )  ffi_test_44 gc 3  ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ ] [ stack-frame-bustage 2drop  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2009-02-06 05:02:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-02 05:01:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! C99 tests 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								os windows? [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    FUNCTION:  complex-float ffi_test_45  ( int x )
							 
						 
					
						
							
								
									
										
										
										
											2009-02-06 13:21:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-09 13:52:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ C{ 3.0  0.0  } ] [ 3  ffi_test_45 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2009-02-06 13:21:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    FUNCTION:  complex-double ffi_test_46  ( int x )
							 
						 
					
						
							
								
									
										
										
										
											2009-02-06 13:21:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-09 13:52:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ C{ 3.0  0.0  } ] [ 3  ffi_test_46 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2009-02-06 13:21:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    FUNCTION:  complex-float ffi_test_47  ( complex-float x, complex-double y )
							 
						 
					
						
							
								
									
										
										
										
											2009-02-06 05:02:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-09 13:52:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ C{ 4.0  4.0  } ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        C{ 1.0  2.0  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        C{ 1.5  1.0  } ffi_test_47
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2009-05-05 19:37:40 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-09 13:52:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ! Reported by jedahu 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    STRUCT:  bool-field-test 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        { name c-string }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        { on  bool }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        { parents short  } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-05 19:37:40 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    FUNCTION:  short ffi_test_48  ( bool-field-test x )
							 
						 
					
						
							
								
									
										
										
										
											2009-05-05 19:37:40 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-09 13:52:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ 123  ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        bool-field-test <struct>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            123  >>parents
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ffi_test_48
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2009-09-25 19:08:33 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-02 05:01:12 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unless
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-26 22:44:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! Test interaction between threads and callbacks 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  thread-callback-1  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { } cdecl [ yield 100  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-26 22:44:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  thread-callback-2  (  --  callback  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { } cdecl [ yield 200  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-26 22:44:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  thread-callback-invoker  (  callback  --  n  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int { } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-26 22:44:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<promise> "p"  set
 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    thread-callback-1 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        thread-callback-invoker
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback "p"  get  fulfill
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] in-thread
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 200  } [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    thread-callback-2 [ thread-callback-invoker ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-03-26 22:44:43 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 100  ] [ "p"  get  ?promise ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-06 23:39:22 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! More alien-assembly tests are in cpu.* vocabs 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 22:20:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  assembly-test-1  (  --  )  void { } cdecl [ ] alien-assembly ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-06 23:39:22 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ ] [ assembly-test-1 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 05:22:42 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-19 11:34:06 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ f  ] [ "f-fastcall"  library-dll f  =  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2013-03-24 00:23:23 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ fastcall ] [ "f-fastcall"  lookup-library abi>> ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 05:22:42 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 17:15:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  ffi_test_49  (  x  --  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-fastcall"  "ffi_test_49"  { int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 17:15:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  ffi_test_50  (  x  y  --  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-fastcall"  "ffi_test_50"  { int int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 17:15:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  ffi_test_51  (  x  y  z  --  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-fastcall"  "ffi_test_51"  { int int int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 17:15:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 21:48:12 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  multi_ffi_test_51  (  x  y  z  x'  y'  z'  --  int  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ int "f-fastcall"  "ffi_test_51"  { int int int } f  alien-invoke ]
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 21:48:12 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3dip
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-fastcall"  "ffi_test_51"  { int int int } f  alien-invoke gc ;
 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 05:22:42 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 4  ] [ 3  ffi_test_49 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 8  ] [ 3  4  ffi_test_50 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 13  ] [ 3  4  5  ffi_test_51 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-01 21:48:12 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 13  22  ] [ 3  4  5  6  7  8  multi_ffi_test_51 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 01:47:16 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  ffi_test_52  (  x  y  z  --  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-fastcall"  "ffi_test_52"  { int float  int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 01:47:16 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  ffi_test_53  (  x  y  z  w  --  int  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int "f-fastcall"  "ffi_test_53"  { int float  int int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 01:47:16 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:52:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  ffi_test_57  (  x  y  --  test-struct-11  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-11 "f-fastcall"  "ffi_test_57"  { int int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:52:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  ffi_test_58  (  x  y  z  --  test-struct-11  )
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-11 "f-fastcall"  "ffi_test_58"  { int int int } f
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:52:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    alien-invoke gc ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 01:47:16 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-07 20:02:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! Make sure that large longlong/ulonglong are correctly dealt with 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  longlong ffi_test_59  ( longlong x )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION:  ulonglong ffi_test_60  ( ulonglong x )
							 
						 
					
						
							
								
									
										
										
										
											2014-07-07 20:02:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ t  ] [ most-positive-fixnum 1  +  [ ffi_test_59 ] keep  =  ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ t  ] [ most-positive-fixnum 1  +  [ ffi_test_60 ] keep  =  ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ -1  ] [ -1  ffi_test_59 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ -1  ] [ 0xffffffffffffffff  ffi_test_59 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 0xffffffffffffffff  ] [ -1  ffi_test_60 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 0xffffffffffffffff  ] [ 0xffffffffffffffff  ffi_test_60 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! GCC bugs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								mingw? [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ 13  ] [ 3  4.0  5  ffi_test_52 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ 19  ] [ 3  4.0  5  6  ffi_test_53 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unless
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:52:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-11 f  7  -1  } ] [ 3  4  ffi_test_57 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:52:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-11 f  7  -3  } ] [ 3  4  7  ffi_test_58 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:43:55 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  fastcall-ii-indirect  (  x  y  ptr  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int int } fastcall alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-iii-indirect  (  x  y  z  ptr  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int int int } fastcall alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:43:55 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-ifi-indirect  (  x  y  z  ptr  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int float  int } fastcall alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-ifii-indirect  (  x  y  z  w  ptr  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int float  int int } fastcall alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-struct-return-ii-indirect  (  x  y  ptr  --  result  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:00:34 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    test-struct-11 { int int } fastcall alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-struct-return-iii-indirect  (  x  y  z  ptr  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    test-struct-11 { int int int } fastcall alien-indirect ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 02:43:55 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 8  ] [
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 08:40:32 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  &: ffi_test_50 fastcall-ii-indirect
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 13  ] [
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 08:40:32 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  5  &: ffi_test_51 fastcall-iii-indirect
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								mingw? [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ 13  ] [
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 08:40:32 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        3  4.0  5  &: ffi_test_52 fastcall-ifi-indirect
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ 19  ] [
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 08:40:32 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        3  4.0  5  6  &: ffi_test_53 fastcall-ifii-indirect
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unless
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ S{ test-struct-11 f  7  -1  } ]
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 08:40:32 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  &: ffi_test_57 fastcall-struct-return-ii-indirect
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ S{ test-struct-11 f  7  -3  } ]
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 08:40:32 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  7  &: ffi_test_58 fastcall-struct-return-iii-indirect
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  fastcall-ii-callback  (  --  ptr  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int int } fastcall [ +  1  +  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-iii-callback  (  --  ptr  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int int int } fastcall [ +  +  1  +  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-ifi-callback  (  --  ptr  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int float  int } fastcall
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ [ >integer  ] dip  +  +  1  +  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-ifii-callback  (  --  ptr  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int float  int int } fastcall
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ [ >integer  ] 2dip  +  +  +  1  +  ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-struct-return-ii-callback  (  --  ptr  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    test-struct-11 { int int } fastcall
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ [ +  ] [ -  ] 2bi  test-struct-11 <struct-boa> ] alien-callback ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  fastcall-struct-return-iii-callback  (  --  ptr  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    test-struct-11 { int int int } fastcall
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ [ drop  +  ] [ -  nip  ] 3bi  test-struct-11 <struct-boa> ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 8  } [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  fastcall-ii-callback [ fastcall-ii-indirect ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 13  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  5  fastcall-iii-callback [ fastcall-iii-indirect ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 13  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4.0  5  fastcall-ifi-callback [ fastcall-ifi-indirect ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-12 19:14:18 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 19  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4.0  5  6  fastcall-ifii-callback [ fastcall-ifii-indirect ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-11 f  7  -1  } ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  fastcall-struct-return-ii-callback [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        fastcall-struct-return-ii-indirect
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-04-02 03:23:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ S{ test-struct-11 f  7  -3  } ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    3  4  7  fastcall-struct-return-iii-callback [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        fastcall-struct-return-iii-indirect
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-05-19 00:33:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 03:00:53 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  x64-regression-1  (  --  c  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int int int int int } cdecl [ +  +  +  +  ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  x64-regression-2  (  x  x  x  x  x  c  --  y  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int { int int int int int } cdecl alien-indirect ;  inline
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 661  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    100  500  50  10  1  x64-regression-1 [ x64-regression-2 ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 03:00:53 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-19 00:33:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! Stack allocation 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  blah  (  --  x  )  { RECT } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1.5  >>x 2.0  >>y [ x>> ] [ y>> ] bi  *  >fixnum
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] with-scoped-allocation ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-19 00:33:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 3  ] [ blah ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-05-22 01:25:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:13:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								:  out-param-test-1  (  --  b  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:32:05 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { int } [ [ 12  ] dip  0  int set-alien-value ] with-out-parameters ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-22 01:25:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:13:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 12  ] [ out-param-test-1 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  out-param-test-2  (  --  b  )
 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:32:05 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { { int initial: 12  } } [ drop  ] with-out-parameters ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:13:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 12  ] [ out-param-test-2 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  out-param-test-3  (  --  x  y  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { { RECT initial: S{ RECT { x 3  } { y 4  } } } } [ drop  ]
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:32:05 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    with-out-parameters
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:13:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [ x>> ] [ y>> ] bi  ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ 3.0  4.0  ] [ out-param-test-3 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-05-22 01:25:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  out-param-callback  (  --  a  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void { int pointer: int } cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ [ 2  *  ] dip  0  int set-alien-value ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  out-param-indirect  (  a  a  --  b  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { int } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        swap  void { int pointer: int } cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        alien-indirect
							 
						 
					
						
							
								
									
										
										
										
											2010-07-16 17:32:05 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] with-out-parameters ;
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-22 01:25:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-29 08:26:08 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ 12  ] [
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    6  out-param-callback [ out-param-indirect ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-07-19 19:56:00 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Alias analysis regression 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  aa-callback-1  (  --  c  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    double { } cdecl [ 5.0  ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  aa-indirect-1  (  c  --  x  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    double { } cdecl alien-indirect ;  inline
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								TUPLE:  some-tuple  x  ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ T{ some-tuple f  5.0  } ] [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        some-tuple new
 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        aa-callback-1 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            aa-indirect-1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ] with-callback >>x
							 
						 
					
						
							
								
									
										
										
										
											2010-07-19 19:56:00 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ] compile-call
							 
						 
					
						
							
								
									
										
										
										
											2014-10-22 08:44:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2010-09-30 23:48:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! GC maps regression 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  anton's-regression  (  --  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    f  (free) f  (free) ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ ] [ anton's-regression ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2014-11-07 18:34:10 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-09 13:52:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								os windows? [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    STRUCT:  bool-and-ptr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        { b bool }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        { ptr void* } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-07 18:34:10 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    FUNCTION: bool-and-ptr ffi_test_61 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-08 16:39:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-24 11:20:28 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ! { S{ bool-and-ptr { b t } { ptr f } } } [ ffi_test_61 ] unit-test 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { t  } [ ffi_test_61 bool-and-ptr? ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { { t  f  } } [ ffi_test_61 [ b>> ] [ ptr>> ] bi  2array  ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2014-11-08 16:39:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-10 13:30:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] unless
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-08 16:39:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-10 13:30:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  uint-pair 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { a uint }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { b uint } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-08 16:39:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: uint-pair ffi_test_62 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-08 16:39:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-10 13:30:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    S{ uint-pair { a 0xabcdefab  } { b 0x12345678  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} [ ffi_test_62 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2014-11-08 16:39:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-10 13:30:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								STRUCT:  ulonglong-pair 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { a ulonglong }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { b ulonglong } ;
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-09 13:52:16 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION: ulonglong-pair ffi_test_63 (  )
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-10 13:30:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    S{ ulonglong-pair { a 0xabcdefabcdefabcd  } { b 0x1234567891234567  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} [ ffi_test_63 ] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2014-11-08 16:39:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  void* bug1021_test_1  ( void* s, int x )
							 
						 
					
						
							
								
									
										
										
										
											2014-11-12 02:13:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Sanity test the formula: x sq s + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ t  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    10  [ [ 100  random ] twice 2array  ] replicate
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ [ first2  [ <alien> ] dip  bug1021_test_1 alien-address ] map  ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [ [ first2  sq  +  ] map  ] bi  =
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  each-to100  (  ...  quot:  (  ...  i  --  ...  )  i  --  ...  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    dup  100  <  [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        2dup  swap  (call) 1  +  each-to100
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] [ 2drop  ] if  ;  inline  recursive
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  run-test  (  alien  --  seq  )
 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-19 20:15:05 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    100  33  <array>  tuck
							 
						 
					
						
							
								
									
										
										
										
											2014-11-12 02:13:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pick  swapd
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        bug1021_test_1
							 
						 
					
						
							
								
									
										
										
										
											2018-06-19 20:15:05 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        spin 2  fixnum+fast
							 
						 
					
						
							
								
									
										
										
										
											2014-11-12 02:13:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        set-slot
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] curry  curry  0  each-to100 ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    minor-gc 2000  [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        101  <alien> run-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ! If #1021 ever comes back it will blow up here because 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ! alien-address wants an alien not a fixnum. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        [ alien-address ] map  drop
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] times
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 17:36:02 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								! Varargs with non-float parameters works. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION-ALIAS:  do-sum-ints2  int ffi_test_64  ( int n, int a, int b )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION-ALIAS:  do-sum-ints3  int ffi_test_64  ( int n, int a, int b, int c )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 19:18:52 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 30  60  } [
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 17:36:02 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    2  10  20  do-sum-ints2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    3  10  20  30  do-sum-ints3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Varargs with non-floats doesn't work on windows 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION-ALIAS:  do-sum-doubles2  double ffi_test_65  ( int n, double a, double b )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION-ALIAS:  do-sum-doubles3  double ffi_test_65  ( int n, double a, double b, double c )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								os windows? [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 27.0  22.0  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        2  7  20  do-sum-doubles2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        3  5  10  7  do-sum-doubles3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unless
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-19 22:55:38 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								FUNCTION:  int bug1021_test_2  ( int a, char* b, void* c )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION:  void* bug1021_test_3  ( c-string a )
							 
						 
					
						
							
								
									
										
										
										
											2014-11-12 02:13:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  doit  (  a  --  d  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    33  1byte-array "bar"  bug1021_test_3 bug1021_test_2 ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    10000  [ 0  doit 33  assert=  ] times
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
									
										
										
										
											2020-01-24 16:54:33 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								! Tests for System V AMD64 ABI  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								STRUCT:  test_struct_66  { mem1 ulong } { mem2 ulong } ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								STRUCT:  test_struct_68  { mem1 ulong } { mem2 ulong } { mem3 ulong } ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								STRUCT:  test_struct_69  { mem1 float  } { mem2 ulong } { mem3 ulong } ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION:  ulong ffi_test_66  ( ulong a, ulong b, ulong c, test_struct_66 d, test_struct_66 e )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION:  ulong ffi_test_67  ( ulong a, ulong b, ulong c, test_struct_66 d, test_struct_66 e ulong _f )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION:  ulong ffi_test_68  ( ulong a, ulong b, ulong c, test_struct_66 d, test_struct_68 e test_struct_66 _f )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION:  ulong ffi_test_69  ( ulong a, ulong b, ulong c, test_struct_66 d, test_struct_69 e test_struct_66 _f )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								FUNCTION:  ulong ffi_test_70  ( test_struct_68 a test_struct_68 b, test_struct_66 c )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 28  } [ 1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_66 f  6  7  } ffi_test_66 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-14  (  --  callback  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_66 } cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [| a b c d e |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        a b +  c +
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        e [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-14-test  (  a  b  c  d  e  callback  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_66 } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 28  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_66 f  6  7  } callback-14 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-14-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 44  } [ 1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_66 f  6  7  } 8  ffi_test_67 ] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-15  (  --  callback  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_66 ulong } cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [| a b c d e _f |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        a b +  c +
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        e [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        _f 2  *  +  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-15-test  (  a  b  c  d  e  _f  callback  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_66 ulong } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 44  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_66 f  6  7  } 8  callback-15 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-15-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 55  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_68 f  6  7  8  } S{ test_struct_66 f  9  10  } ffi_test_68
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-16  (  --  callback  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_68 test_struct_66 } cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [| a b c d e _f |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        a b +  c +
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        e [ mem1>> +  ] [ mem2>> +  ] [ mem3>> +  ] tri
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        _f [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-16-test  (  a  b  c  d  e  _f  callback  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_68 test_struct_66 } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 55  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_68 f  6  7  8  } S{ test_struct_66 f  9  10  } callback-16 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-16-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 55  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_69 f  6.0  7  8  } S{ test_struct_66 f  9  10  } ffi_test_69
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-17  (  --  callback  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_69 test_struct_66 } cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [| a b c d e _f |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        a b +  c +
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        d [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        e [ mem1>> >integer  +  ] [ mem2>> +  ] [ mem3>> +  ] tri
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        _f [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-17-test  (  a  b  c  d  e  _f  callback  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { ulong ulong ulong test_struct_66 test_struct_69 test_struct_66 } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 55  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    1  2  3  S{ test_struct_66 f  4  5  } S{ test_struct_69 f  6.0  7  8  } S{ test_struct_66 f  9  10  } callback-17 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-17-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 36  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    S{ test_struct_68 f  1  2  3  } S{ test_struct_68 f  4  5  6  } S{ test_struct_66 f  7  8  } ffi_test_70
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-18  (  --  callback  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { test_struct_68 test_struct_68 test_struct_66 } cdecl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    [| a b c |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        a [ mem1>> ] [ mem2>> +  ] [ mem3>> +  ] tri      
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        b [ mem1>> +  ] [ mem2>> +  ] [ mem3>> +  ] tri
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        c [ mem1>> +  ] [ mem2>> +  ] bi
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] alien-callback ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								:  callback-18-test  (  a  b  c  callback  --  result  )
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ulong { test_struct_68 test_struct_68 test_struct_66 } cdecl alien-indirect ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 36  } [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    S{ test_struct_68 f  1  2  3  } S{ test_struct_68 f  4  5  6  } S{ test_struct_66 f  7  8  } callback-18 [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        callback-18-test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ] with-callback
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] unit-test