2012-01-22 35 views
2

SpiderMonkeyでスレッドデバッグダンプを有効にしようとしています。 jsinterp.cppファイルを編集しています。基本的には、次のように私は をやろうとしています物事は、次のとおりです。Spidermonkeyのスレッディング

  1. は(解釈のメインループの前にJSScriptをキャッチ)が始まります。
  2. 別のスレッドを開きます。
  3. このスレッドでは、スクリプトでjs_Disassembleを呼び出して マシンコードを取得します。
  4. マシンコードをファイルに書き込みます。

スレッド化されたバージョンを試す理由は、単にパフォーマンスのためです。 問題です。 disassmebleを実行して の出力を同じスレッドに書き込むと、いくつかのアドオンが「応答なし」になります。単一の スレッドで出力を得ることができますが、それは遅すぎます。

私はhttps://developer.mozilla.org/en/Making_Cross-Thread_Calls_Using_Runnables のチュートリアルに従ってスレッドを作成しました。しかし、私が構築したとき、私は11 "未解決の 外部シンボルエラーに直面した。再び、いくつかのグーグルの後に、私は XPCOM_GLUEを#define XPCOM_GLUE 1で設定していました。しかし、今度は に "base class nsRunnable not defined"という新しい問題があります。私は 解決策を見つけることができません。

ご協力いただければ幸いです。 ありがとう、

答えて

0

安全に別のスレッドを使用することはできません。ガベージコレクションはメインスレッドで実行され、JSScriptをあなたの下から収集することができます。その後、プロセスがクラッシュします。

js_Interpretブラウザが<script>を実行しているか、関数またはonclick=イベントリスナーを呼び出すだけで、SpiderMonkeyがインタプリタに入るたびに呼び出されます。だから、おそらく同じスクリプトを何回もダンプすることになるでしょう。たぶんそれがとても遅い理由です。コンパイル時にバイトコードをダンプすることを検討してください。