@@ -47,9 +47,9 @@ struct CollectorStatus {
4747 collecting : bool ,
4848}
4949
50- pub type VisitFunc = unsafe fn ( & Collector , * mut u8 ) ;
50+ pub type VisitFunc = unsafe extern "C" fn ( & Collector , * mut u8 ) ;
5151
52- pub type VtableFunc = fn ( * mut u8 , & Collector , VisitFunc , VisitFunc , VisitFunc ) ;
52+ pub type VtableFunc = extern "C" fn ( * mut u8 , & Collector , VisitFunc , VisitFunc , VisitFunc ) ;
5353
5454impl Drop for Collector {
5555 fn drop ( & mut self ) {
@@ -234,7 +234,7 @@ impl Collector {
234234 }
235235
236236 /// precise mark a pointer
237- unsafe fn mark_ptr ( & self , ptr : * mut u8 ) {
237+ unsafe extern "C" fn mark_ptr ( & self , ptr : * mut u8 ) {
238238 let father = ptr;
239239 let mut ptr = * ( ptr as * mut * mut u8 ) ;
240240 // println!("mark ptr {:p} -> {:p}", father, ptr);
@@ -330,7 +330,7 @@ impl Collector {
330330 ///
331331 /// it self does not mark the object, but mark the object's fields by calling
332332 /// mark_ptr
333- unsafe fn mark_complex ( & self , ptr : * mut u8 ) {
333+ unsafe extern "C" fn mark_complex ( & self , ptr : * mut u8 ) {
334334 let vptr = * ( ptr as * mut * mut u8 ) ;
335335 if vptr. is_null ( ) {
336336 return ;
@@ -345,7 +345,7 @@ impl Collector {
345345 ) ;
346346 }
347347 /// precise mark a trait object
348- unsafe fn mark_trait ( & self , ptr : * mut u8 ) {
348+ unsafe extern "C" fn mark_trait ( & self , ptr : * mut u8 ) {
349349 // if !self.thread_local_allocator.as_mut().unwrap().in_heap(ptr)
350350 // &&!self.thread_local_allocator.as_mut().unwrap().in_big_heap(ptr) {
351351 // return;
@@ -644,7 +644,7 @@ mod tests {
644644 d : * mut u64 ,
645645 e : * mut GCTestObj ,
646646 }
647- fn gctest_vtable (
647+ extern "C" fn gctest_vtable (
648648 ptr : * mut u8 ,
649649 gc : & Collector ,
650650 mark_ptr : VisitFunc ,
@@ -667,7 +667,7 @@ mod tests {
667667 d : * mut GCTestBigObj ,
668668 }
669669 const BIGOBJ_ALLOC_SIZE : usize = round_n_up ! ( size_of:: <GCTestBigObj >( ) + 16 , 128 ) ;
670- fn gctest_vtable_big (
670+ extern "C" fn gctest_vtable_big (
671671 ptr : * mut u8 ,
672672 gc : & Collector ,
673673 mark_ptr : VisitFunc ,
0 commit comments