возьмем к примеру то же самое приложеньице что и раньше: pic.twitter.com/SnD07OlYYc
Так же работают профайлер, code coverage, memory analysis. twitter.com/jsunderhood/st…
А имплементация выглядит так что в дерево вставляются дополнительные вершины по маркерам. Типа на statement можно вешать брейкпоинт. И всё, эти вершины предоставляет имплементация инструмента и они знают как он, например дебаггер, работает.
Таким образом языки получают поддержку инструментария практически нахаляву.
То есть даром. И наоборот, если вы делаете какой-то инструмент для разработчиков, интеграция с граальвм даст вам поддержку несколько языков сразу. Включая конечно JavaScript