🐛 delete dlclose in module_test.nas
This commit is contained in:
parent
2a36db1cf5
commit
a2c738d4c7
|
@ -19,32 +19,26 @@ var _call = dylib.limitcall(1);
|
||||||
|
|
||||||
var _test_call = dylib.limitcall(2);
|
var _test_call = dylib.limitcall(2);
|
||||||
|
|
||||||
|
|
||||||
var fib = func(x) {
|
var fib = func(x) {
|
||||||
return _call(_fib, x)
|
return _call(_fib, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var qfib = func(x) {
|
var qfib = func(x) {
|
||||||
return _call(_qfib, x)
|
return _call(_qfib, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var create_ghost = func() {
|
var create_ghost = func() {
|
||||||
return _zero_call(_create_ghost)
|
return _zero_call(_create_ghost)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var set_ghost = func(object, x) {
|
var set_ghost = func(object, x) {
|
||||||
return _test_call(_set_ghost, object, x)
|
return _test_call(_set_ghost, object, x)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var print_ghost = func(object) {
|
var print_ghost = func(object) {
|
||||||
return _call(_print_ghost, object)
|
return _call(_print_ghost, object)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var test_ghost = func() {
|
var test_ghost = func() {
|
||||||
var ghost = create_ghost();
|
var ghost = create_ghost();
|
||||||
print_ghost(nil); # err
|
print_ghost(nil); # err
|
||||||
|
|
|
@ -5,47 +5,7 @@ use module.libfib;
|
||||||
println(keys(libfib));
|
println(keys(libfib));
|
||||||
libfib.test_ghost();
|
libfib.test_ghost();
|
||||||
|
|
||||||
var libfib = func() {
|
|
||||||
var (dd, fib, qfib) = (nil, nil, nil);
|
|
||||||
var invoke = dylib.limitcall(1);
|
|
||||||
return {
|
|
||||||
open: func() {
|
|
||||||
if (dd==nil) {
|
|
||||||
dd = dylib.dlopen("libfib."~(os.platform()=="windows"?"dll":"so"));
|
|
||||||
fib = dd.fib;
|
|
||||||
qfib = dd.quick_fib;
|
|
||||||
} else {
|
|
||||||
println("[info ] already loaded.");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
close: func() {
|
|
||||||
if (dd==nil) {
|
|
||||||
println("[error ] already closed.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dylib.dlclose(dd.lib);
|
|
||||||
(dd, fib, qfib) = (nil, nil, nil);
|
|
||||||
},
|
|
||||||
fib: func(x) {
|
|
||||||
if (fib!=nil) {
|
|
||||||
return invoke(fib, x);
|
|
||||||
}
|
|
||||||
println("[error ] cannot call fib.");
|
|
||||||
return nil;
|
|
||||||
},
|
|
||||||
qfib: func(x) {
|
|
||||||
if (qfib!=nil) {
|
|
||||||
return invoke(qfib, x);
|
|
||||||
}
|
|
||||||
println("[error ] cannot call qfib.");
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}();
|
|
||||||
|
|
||||||
println("[keys ] ", keys(libfib));
|
println("[keys ] ", keys(libfib));
|
||||||
libfib.open();
|
|
||||||
libfib.open();
|
|
||||||
var tm = maketimestamp();
|
var tm = maketimestamp();
|
||||||
tm.stamp();
|
tm.stamp();
|
||||||
println("[result] ", libfib.fib(35));
|
println("[result] ", libfib.fib(35));
|
||||||
|
@ -53,15 +13,19 @@ println("[time ] ", tm.elapsedMSec()," ms");
|
||||||
tm.stamp();
|
tm.stamp();
|
||||||
println("[result] ", libfib.qfib(35));
|
println("[result] ", libfib.qfib(35));
|
||||||
println("[time ] ", tm.elapsedMSec()," ms");
|
println("[time ] ", tm.elapsedMSec()," ms");
|
||||||
# libfib.close();
|
println();
|
||||||
println("[result] ", libfib.fib(35));
|
|
||||||
println("[result] ", libfib.qfib(35));
|
func() {
|
||||||
# libfib.close();
|
for(var i = 0; i<256; i += 1) {
|
||||||
|
var tmp = []; # try trigger gc here to test delete ghost
|
||||||
|
}
|
||||||
|
println();
|
||||||
|
}();
|
||||||
|
|
||||||
var speed_test = func() {
|
var speed_test = func() {
|
||||||
var d = dylib.dlopen("libfib."~(os.platform()=="windows"? "dll":"so"));
|
var dd = dylib.dlopen("libfib."~(os.platform()=="windows"? "dll":"so"));
|
||||||
println("[dylib ] ", d);
|
println("[dylib ] ", dd);
|
||||||
var fd = d.quick_fib;
|
var fd = dd.quick_fib;
|
||||||
var vec_call = dylib.dlcall;
|
var vec_call = dylib.dlcall;
|
||||||
var invoke = dylib.limitcall(1);
|
var invoke = dylib.limitcall(1);
|
||||||
var tm = maketimestamp();
|
var tm = maketimestamp();
|
||||||
|
|
Loading…
Reference in New Issue