Доступ к сгенерированному Nashorn байт-коду

Nashorn переводит исходный код JavaScript прямо в память. Есть ли способ получить доступ к байт-коду только для чтения? (манипуляции не требуются). Если есть, пожалуйста, объясните подробно, так как у меня ограниченный опыт... Я знаю о javap, но он показывает только байт-код, специфичный для Java. Я хочу посмотреть, как Nashorn перевел байт-код javascript.


person Stradm    schedule 11.05.2015    source источник
comment
Вы пробовали смотреть документацию и исходный код для Nashorn?   -  person Antimony    schedule 12.05.2015


Ответы (1)


Вы можете использовать параметр командной строки Nashorn «-pc» или «--print-code». Nashorn напечатает сгенерированный байт-код в формате, подобном javap. Например:

jjs -pc hello.js

Если вы хотите иметь файлы .class (которые вы хотели бы просматривать/анализировать другими инструментами), вы можете использовать «-d» или «--dump-debug-dir», чтобы указать каталог, в котором сохраняются сгенерированные классы. Например,

jjs -d=tmp hello.js

создаст файлы .class в каталоге «tmp». Пожалуйста, найдите каталог "jdk/nashorn/internal/script" в указанном вами каталоге.

Обратите внимание, что вы не сможете манипулировать этими классами в автономном режиме и повторно загружать их в более позднем сеансе nashorn. Это просто средство отладки.

person A. Sundararajan    schedule 15.05.2015
comment
Я думаю, что сокращенная опция -pc была удалена (по крайней мере, она недоступна в 1.8.0_25-b17). --print-code все еще работает. jjs -xhelp получает полный список недокументированных опций. - person RichardTowers; 26.05.2015
comment
хм.. Ну, -pc все еще существует. Только что проверил со сборкой раннего доступа jdk1.8.0u60. - person A. Sundararajan; 28.05.2015