Достъп до байт код, генериран от 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 все още съществува afaik. Току-що проверено с компилация за ранен достъп jdk1.8.0u60. - person A. Sundararajan; 28.05.2015