ファイナライザ
C++レベルのオブジェクトはデストラクタが呼ばれリソースを閉じられるんで、Xtalレベルでファイナライザが必要な場面は少ない、それなのにファイナライザのためにGCが複雑になり、遅くなってしまっていた。
下のようにファイナライザの中で自身を他の変数に代入したとする。
temp: null;
Foo: class{
finalize: method(){
temp = this;
}
}
Xtalはこのような「ファイナライザの実行で復活するオブジェクト」を考慮したGCにしており*1、複雑度が増していた。