問題タブ [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.
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 コードをどのように決定しますか?
私の頭を悩ませてきたもう一つのこと。関数ではなくパスがコンパイルされるため、トレース コンパイラはより多くのメモリを必要としませんか? 別のパスのコンパイル済みコードを実際に再利用することはできないので、パスはおそらく単一の関数よりも大きくなるため、一般的なケースでは...
lua - Luajit または PUC Lua 5.1 を実行しているかどうかを実行時に検出するにはどうすればよいですか?
Lua プロジェクト用にいくつかのテスト スクリプトを作成しており、それらが利用可能なさまざまな Lua バージョンで正しく実行されることを確認したいと考えています。ユニット テスト フレームワークは、構成を誤ると間違った Lua バージョンを使用する可能性があるため、特に安全を確保し、テストを実行している Lua バージョンを実行時に確認したいと考えています。それを行う最善の方法は何ですか?
5.1 と 5.2 を区別する簡単な方法は_VERSION
グローバルをチェックすることですが、通常の Lua 5.1 と LuaJIT を区別するにはどうすればよいでしょうか?
lua - ガベージ コレクションでの luajit segfault
で定義されたユーザーデータに問題がありffi.metatype
ます。オブジェクトがガベージ コレクションされると、segfault が発生します。これがコードです。
ランニング :
何か不足していますか?__gc メタメソッドを定義する必要がありますか? もしそうなら、私はそこに何を入れるべきですか?
c++ - lua_open は luaJIT を使用して null を返します
最近の luaJIT を使用するとlua_open
、null
. これは、通常の lua ライブラリでは発生しません。
出力:0x0
luaJIT を機能させるにはどうすればよいですか?
SSCCE:
追加情報: ソースから OSX 10.9 にビルド (2.0.2 と git の両方を試した)make
とmake install
. コンパイラの使用:
(luajit コマンド ライン アプリケーションの使用は問題luajit
なく動作し、テスト スクリプトはエラーなしで実行されます。)
lua - MetaLua は LuaJIT で使用できますか?
MetaLua は LuaJIT で使用できますか?
もしそうなら、どうやって?
(信憑性のある情報は見つかりませんでした)