@@ -28,6 +28,11 @@ fn printi64ln(i: i64) {
2828 println ! ( "{}" , i) ;
2929}
3030
31+ #[ is_runtime]
32+ fn eprinti64ln ( i : i64 ) {
33+ eprintln ! ( "{}" , i) ;
34+ }
35+
3136#[ is_runtime]
3237fn pl_panic ( ) {
3338 println ! ( "pivot lang panic occured!" ) ;
@@ -91,21 +96,19 @@ fn vm_ftoa(f: f32, rec: *mut u8) {
9196}
9297
9398#[ is_runtime]
94- fn new_thread ( f : * mut i128 , sp : * mut u8 ) {
99+ fn new_thread ( f : * mut i128 , sp : * mut u8 ) {
95100 // f's first 8 byte is fn pointer, next 8 byte is data pointer
96101 let ptr = f as * const i64 ;
97102 let f_ptr = ptr as * const extern "C" fn ( i64 ) ;
98103 let data_ptr = unsafe { * ptr. offset ( 1 ) } ;
99104 let func = unsafe { * f_ptr } ;
100105 let ( s, r) = channel :: < ( ) > ( ) ;
101- let ptr_i = ptr as i64 ;
106+ // let ptr_i = ptr as i64;
102107 immix:: pin ( data_ptr as _ ) ;
103108 // immix::gc_keep_live(data_ptr as _);
104109 // immix::gc_add_root(data_ptr as *mut _, ObjectType::Pointer.int_value());
105110 let c = move || {
106111 // thread::sleep(std::time::Duration::from_secs(1));
107- let sp = immix:: Collector :: current_sp ( ) ;
108- immix:: set_high_sp ( sp) ;
109112 // immix::gc_keep_live(data_ptr as _);
110113 // immix::set_evacuation(false);
111114 // immix::gc_add_root(&mut f as *mut _ as *mut _, ObjectType::Trait.int_value());
0 commit comments