Kann node.js (oder eine andere v8-Schnittstelle oder ein Wrapper um v8) die generierte Assembly vom v8 JIT ausgeben?Dump v8 JIT-Ausgabe vom Knoten
Ich würde gerne sehen, wie die generierte Assembly für verschiedene Schnipsel aussieht.
Kann node.js (oder eine andere v8-Schnittstelle oder ein Wrapper um v8) die generierte Assembly vom v8 JIT ausgeben?Dump v8 JIT-Ausgabe vom Knoten
Ich würde gerne sehen, wie die generierte Assembly für verschiedene Schnipsel aussieht.
Sie müssen sicherstellen, dass node.js mit V8 Disassembler aktiviert ist. Debugbuilds werden standardmäßig aktiviert. Für die Freigabe (in den letzten genügend Knoten, GYP Build verwendet) baut können Sie es, indem Sie aktivieren:
GYP_DEFINES="v8_enable_disassembler=1 v8_object_print=1" ./configure
und Wiederaufbau Knoten.
Wenn Disassembler aktiviert Sie Flags wie --print-code
, --print-code-stubs
, --print-opt-code
und --code-comments
zu prüfen, den Code generiert durch V8 verwenden können.
Wenn Sie IR untersuchen möchten, das durch Optimieren des Compilers verwendet wird, verwenden Sie --trace-hydrogen
und sehen Sie sich hydrogen.cfg
an (es kann mit C1 Visualizer betrachtet werden).
Sind diese Informationen immer noch aktuell? –
@OleksiiRudenko ja, meistens. Warum? Heutzutage ist der Knoten mit Disassembler ausgestattet, der standardmäßig sowohl in Release als auch in Debug aktiviert ist (https://github.com/nodejs/node/blob/master/common.gypi#L21). Außerdem empfehle ich IRHydra (http://mrale.ph/irhydra/2) anstelle von C1 Visualizer - aber ansonsten sind alle Flags gleich. –
IRHydra sieht wirklich cool aus! Danke, es ist gut zu wissen, dass ich Knoten jetzt nicht neu kompilieren muss. Ich frage mich, ob IRHydra in Benchmark.js integriert ist? Ich meine, kann es irrelevante benchmark.js Code aus der Analyse ausschließen? Und macht es wirklich Sinn, Kompilationsartefakte direkt aus Benchmarks zu erfassen oder isolieren zu können? –
Ich habe es versucht, aber es gibt nichts aus: 'node --expose-debug-as = d -e" Funktion f() {return 1;}; d.Debug.disassemble (f) " ' – slipheed
Gibt es ein bestimmtes Snippet, das Sie untersuchen möchten? –