diff --git a/lib/src/ffi.dart b/lib/src/ffi.dart index f7c8d36..f667520 100644 --- a/lib/src/ffi.dart +++ b/lib/src/ffi.dart @@ -27,14 +27,9 @@ abstract class JSRef { _refCount++; } - bool _released = false; - void free() { _refCount--; - if (_refCount < 0 && !_released){ - _released = true; - destroy(); - } + if (_refCount < 0) destroy(); } void destroy(); diff --git a/lib/src/object.dart b/lib/src/object.dart index e939489..c81d311 100644 --- a/lib/src/object.dart +++ b/lib/src/object.dart @@ -150,12 +150,8 @@ class _JSObject extends JSRef { } /// JS function wrapper -class _JSFunction extends _JSObject implements JSInvokable, _IsolateEncodable, Finalizable { - _JSFunction(Pointer ctx, Pointer val) : super(ctx, val) { - _finalizer.attach(this, this); - } - - static final _finalizer = Finalizer<_JSFunction>((f) => f.free()); +class _JSFunction extends _JSObject implements JSInvokable, _IsolateEncodable { + _JSFunction(Pointer ctx, Pointer val) : super(ctx, val); @override invoke(List arguments, [dynamic thisVal]) {