Санкт-Петербургская группа тестирования JVM


« Верификация байт-код... | Main | Отладка агентов... »
20070131 среда Январь 31, 2007

Исходники Hotspot в массы!

Не так давно компания Sun Microsystems запустила проект openJDK—новую версию имплементации JDK, лицензированную под GPL v2 и основанную на недавно выпущенной JDK 6-й версии. Изначально были опубликованы только 2 компоненты—Hotspot и javac, но работа над интеграцией остальных идет полным ходом.

И первые плоды "freedom as in free speech" не заставили себя долго ждать—практически сразу исходный код стал доступен не только для скачивания. Появилась возможность совершенно свободно побраузить "индексированный" исходный код через веб интерфейс предоставляемый с помощью OpenGrok (как и в случае с OpenSolaris).

Встречайте: http://opengrok.neojava.org/hotspot

Какие бонусы это несет простым смертным? Одной из очень полезных особенностей OpenGrok является возможность осуществлять поиск по исходникам—полнотекстовый, типизированный (например, по идентификаторам) или по истории изменений. Так, например, теперь можно без особых ухищрений посмотреть текущий список параметров Hotspot или просто поискать интересующий параметр. А если Вам не чужд C/C++, не составит большого труда понять на что конкретный параметр влияет.

Объявление параметра выглядит следующим образом:

product(bool, JavaMonitorsInStackTrace, true, "Print info about Java monitor locks when the stacks are dumped")

где:

Различаются следующие типы параметров:

Значение по умолчанию ранее объявленного параметра может быть определено, например, так:

define_pd_global(bool, ImplicitNullChecks, true)

Допустимыми типами значений параметра являются следующие:

Ко всем объявленным параметрам можно получить доступ из командной строки (-XX:[+/-]имя_параметра - для бинарного параметра и -XX:имя_параметра=новое_значение_параметра). Например, '-XX:-BackgroundCompilation' или '-XX:PermSize=16m'.

В коде же Hotspot их значения используются напрямую. Например, так:

if (BackgroundCompilation) {
...
} else {
...
}

Соответственно, простой поиск в исходном коде по названию параметра выдаст все места, где он используется.

Осталось только узнать где искать объявления параметров. Так как Hotspot разрабатывается для целого ряда платформ, в нем существует как кроссплатформенный (находится в 'src/share/**'), так и платформозависимый код('src/cpu/**', 'src/os/**' и 'src/os_cpu/**'). Соответственно, объявления параметров распределены в зависимости от того на какой код они влияют:

Относительный путь к файлу Описание
src/share/vm/runtime/globals.hpp
src/share/vm/runtime/globals_core.hpp
общие параметры
src/share/vm/c1/c1_globals.hpp
src/share/vm/opto/c2_globals.hpp
параметры, специфичные для одного из JIT-компиляторов
src/os/linux/vm/globals_linux.hpp
src/os/linux/vm/c1_globals_linux.hpp
src/os/linux/vm/c2_globals_linux.hpp
src/os/solaris/vm/globals_solaris.hpp
src/os/solaris/vm/c1_globals_solaris.hpp
src/os/solaris/vm/c2_globals_solaris.hpp
src/os/win32/vm/globals_win32.hpp
src/os/win32/vm/c1_globals_win32.hpp
src/os/win32/vm/c2_globals_win32.hpp
параметры, специфичные для некоторой ОС
src/cpu/amd64/vm/globals_amd64.hpp
src/cpu/amd64/vm/c2_globals_amd64.hpp
src/cpu/i486/vm/globals_i486.hpp
src/cpu/i486/vm/c1_globals_i486.hpp
src/cpu/i486/vm/c2_globals_i486.hpp
src/cpu/sparc/vm/globals_sparc.hpp
src/cpu/sparc/vm/c1_globals_sparc.hpp
src/cpu/sparc/vm/c2_globals_sparc.hpp
параметры, специфичные для некоторой архитектуры
src/os_cpu/linux_i486/vm/globals_linux_i486.hpp
src/os_cpu/linux_amd64/vm/globals_linux_amd64.hpp
src/os_cpu/solaris_i486/vm/globals_solaris_i486.hpp
src/os_cpu/solaris_amd64/vm/globals_solaris_amd64.hpp
src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp
src/os_cpu/win32_i486/vm/globals_win32_i486.hpp
src/os_cpu/win32_amd64/vm/globals_win32_amd64.hpp
параметры, специфичные для конкретной платформы

 

Владимир Иванов

опубликовал vmrobot ( янв 31 2007, 11:25:34 AM MSK ) Permalink Комментарии [2]

Trackback URL: http://blogs.sun.com/vmrobot/entry/%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_hotspot_%D0%B2_%D0%BC%D0%B0%D1%81%D1%81%D1%8B
Комментарии:

FIX: < uintx—целое положительное число > uintx—целое неотрицательное число :)

опубликовал Elijah Epifanov Январь 31, 2007 at 02:28 PM MSK #

The fix is applied ;-) Thanks!

опубликовал Vladimir Ivanov Февраль 12, 2007 at 09:18 PM MSK #

Опубликовать комментарий:

Имя
E-Mail:
URL:

Ваш комментарий:

HTML Syntax: Отключен

Хиты страниц за сегодня: 53