V8

V8 用の C++ クラスラッパユーティリティを書いているところ

C++ オブジェクトを Javascript オブジェクトと関連付けるためのノウハウがある程度たまってきたので、Javascript 向けバインディングを作るためのユーティリティを書いてみています。 ATL のような形で継承したクラスを作り、必要なメソッドを実装すればク…

msvcrt=shared でビルドすると snapshot がとれない

C:\progs\v8\v8>scons mode=debug snapshot=on msvcrt=shared scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... ... cl /Foobj\debug\mksnapshot.obj /c src\mksnapshot.cc /nologo /W3 /WX /wd4355…

TryCatch のスコープではまること

V8 における文字列の評価処理は、だいたい次のような流れをとります。 const char* lpszScript = ...; HandleScope handle_scope; TryCatch try_catch; Local<Script> script = Script::Compile(String::New(lpszScript)); if (script.IsEmpty()) { ReportException(…

Weak handle にも Dispose の愛の手を

http://groups.google.com/group/v8-users/browse_thread/thread/d0c8bd822ce21f9e http://d.hatena.ne.jp/tossy-2/20090123/1232653840 最近の v8-users のログを見たらちょうど話題にあがっていたので、ちょっとエントリ修正。 上記エントリでデストラクタ…

V8 のバージョンがあがったようです

V8

昨日コミットされた r1243 で、バージョン文字列が 1.0.0 になったようです。 ライブラリをビルドしなおして、テスト用のアプリのほうも…とおもったら winmm.lib (timeGetTime() のため)が追加ライブラリに入ってなくてこけたり。前はなんでリンク通ってたん…

V8 のヒープの中身を覗き見る

参照がなくなったはずのオブジェクトがなかなか回収されないのでどうしたもんかと思い、昨日今日ととりあえずヒープの中に分け入っています。 GC 管理下のヒープの中身を覗くとか正直あまりやりたくはないのですが、表向きには参照がなくなっているはずなの…

V8 向け ActiveXObject、なんとか動いた

というわけで、先日からごそごそとやっている V8 用 COM/OLE 対応コードですが、なんか別の URL を使ってみたら動きました。悲しすぎる。 要するにどういうものかというと、OLE オートメーションに対応しているオブジェクトを Javascript コードからオブジェ…

ActiveXObject with V8 (続き)

Locale の問題とかいろいろ修正していたら、なんとなく動くようになった気がしますが、よくわからないエラーが出ているのでまだまだのようです。。。 > var o = new ActiveXObject('Msxml2.XMLHTTP') > o [ActiveXObject@021D3A68] > o.open function open()…

ActiveXObject with V8

今日はこんなことをやっています。 > var o = new ActiveXObject('Microsoft.XMLHTTP') > o ActiveXObject(021D3A68) > o.readyState 0 > o.open function () { [native code] } > o.open('GET', 'http://www.google.com/') Error: Error: Invoke(method) ex…

GC がちゃんと動いているところを見たい

ひとつ前のエントリで、GC のタイミングにあわせて裏にあるオブジェクトが解放されるような仕掛けを入れました…が、ちょっとやそっとでは(…という言い方も語弊があるかとは思いますが) GC がおこらないので、テストするのが面倒です。 こういうときは、GC を…

C/C++ オブジェクトを Javascript オブジェクトにエクスポートする

V8 の Embedder's Guide を見ると、C/C++ の関数を Javascript から使えるようにするやり方が解説されています。 Accessor のセクションにある Point の例をちょっと拡張すれば C/C++ のオブジェクトを Javascript のオブジェクトとして見せることができるよ…