問題タブ [luajit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4562 参照

lua - LuaJIT のトレース コンパイラはどのように機能しますか?

特に JIT と LuaJIT のトレース コンパイラについて調べたところ、いくつかの疑問が生じました。

私が理解していることから、LuaJIT の JIT は Java の HotSpot のようにホット メソッドをコンパイルせず、ループから発生するホット パスをコンパイルします。これは、何かがループから発生していない場合 (たとえば、C API から Lua 関数を呼び出している場合)、コードがジットされないということですか? そして、別のループにぶつかるとどうなりますか? 2 番目のループへのパスが JIT され、そのループからの新しいパスも JIT されますか、それとも 2 番目のループが同じパスの一部になりますか?

インタプリタはどのようにして最適なホット パスを選択しますか? int -> 文字列のハッシュテーブルがあるとしましょう。ここで、x が 3 と 5 である table[x] を呼び出して、それらがホット パスになり、jitted になったと想像してください。インタプリタは、x が 4 である table[x] に対して呼び出す jitted コードをどのように決定しますか?

私の頭を悩ませてきたもう一つのこと。関数ではなくパスがコンパイルされるため、トレース コンパイラはより多くのメモリを必要としませんか? 別のパスのコンパイル済みコードを実際に再利用することはできないので、パスはおそらく単一の関数よりも大きくなるため、一般的なケースでは...

0 投票する
1 に答える
3306 参照

lua - Luajit または PUC Lua 5.1 を実行しているかどうかを実行時に検出するにはどうすればよいですか?

Lua プロジェクト用にいくつかのテスト スクリプトを作成しており、それらが利用可能なさまざまな Lua バージョンで正しく実行されることを確認したいと考えています。ユニット テスト フレームワークは、構成を誤ると間違った Lua バージョンを使用する可能性があるため、特に安全を確保し、テストを実行している Lua バージョンを実行時に確認したいと考えています。それを行う最善の方法は何ですか?

5.1 と 5.2 を区別する簡単な方法は_VERSIONグローバルをチェックすることですが、通常の Lua 5.1 と LuaJIT を区別するにはどうすればよいでしょうか?

0 投票する
1 に答える
545 参照

lua - ガベージ コレクションでの luajit segfault

で定義されたユーザーデータに問題がありffi.metatypeます。オブジェクトがガベージ コレクションされると、segfault が発生します。これがコードです。

ランニング :

何か不足していますか?__gc メタメソッドを定義する必要がありますか? もしそうなら、私はそこに何を入れるべきですか?

0 投票する
1 に答える
2548 参照

c++ - lua_open は luaJIT を使用して null を返します

最近の luaJIT を使用するとlua_opennull. これは、通常の lua ライブラリでは発生しません。

出力:0x0

luaJIT を機能させるにはどうすればよいですか?

SSCCE:

追加情報: ソースから OSX 10.9 にビルド (2.0.2 と git の両方を試した)makemake install. コンパイラの使用:

(luajit コマンド ライン アプリケーションの使用は問題luajitなく動作し、テスト スクリプトはエラーなしで実行されます。)

0 投票する
2 に答える
1489 参照

lua - MetaLua は LuaJIT で使用できますか?

MetaLua は LuaJIT で使用できますか?

もしそうなら、どうやって?

(信憑性のある情報は見つかりませんでした)