2012-06-08 20 views
13

düğüm v8 JIT çıktısı Oluşturulmamış derleme v8 JIT öğesinden çıkış node.js (veya diğer v8 arabirimi veya v8 etrafındaki sarıcı) çıktısı alınabilir mi?Düğümden

Oluşturulan derlemenin çeşitli parçacıklar için neye benzediğini görmek istiyorum.

+0

Bunu denedim, ancak hiçbir şey çıkarmıyor: 'node --expose-debug-as = d -e" function f() {return 1;}; d.Debug.disassemble (f) " – slipheed

+0

, araştırmak istediğiniz belirli bir snippet var mı? –

cevap

22

node.js'nin V8 disassembler özelliği etkin olduğundan emin olmanız gerekir. Hata ayıklama yapıları varsayılan olarak etkinleşir. salınımı (GYP yapı kullanır son yeterince düğümünde) oluşturur için, yaparak etkinleştirebilirsiniz:

GYP_DEFINES="v8_enable_disassembler=1 v8_object_print=1" ./configure 

ve yeniden düğümü. Çözücü Eğer V8 tarafından oluşturulan kodu kontrol etmek --print-code, --print-code-stubs, --print-opt-code ve --code-comments gibi bayraklarını kullanabilirsiniz etkindir

.

Eğer derleyici kullanımı --trace-hydrogen en iyileştirerek kullanılan IR'yi araştırmak ve hydrogen.cfg'a bakmak isterseniz (C1 Visualizer ile görüntülenebilir).

+0

Bu bilgi hala güncel mi? –

+1

@OleksiiRudenko evet, çoğunlukla. niye ya? Bu günlerde düğüm, her iki sürümde ve hata ayıklayıcısında varsayılan olarak devre dışı bırakılmış olarak gelir (https://github.com/nodejs/node/blob/master/common.gypi#L21). Ayrıca C1 Visualizer yerine IRHydra (http://mrale.ph/irhydra/2) kullanmanızı öneririm - ancak aksi halde tüm bayraklar aynıdır. –

+1

IRHydra gerçekten harika görünüyor! Teşekkürler, şimdi düğümleri yeniden derlemem gerekmediğini bilmek güzel. IRHydra Benchmark.js ile entegre olup olmadığını merak ediyorum? Yani, alakasız benchmark.js kodunu analizden hariç tutabilir miyim? Ve derleme resimlerini doğrudan karşılaştırma ölçütlerinden yakalamak gerçekten mantıklı mıdır yoksa ayrı ayrı örnek oluşturmak için anlamlı mıdır? –