SlideShare a Scribd company logo
1 of 10
Download to read offline
Системы
динамической компиляции в
                     JVM




              Николай Иготти
Требования к компилятору

• Не требуется стандартом Java
• Основное поведенческое требование - прозрачность
• Функционально – только для повышения
  производительности
• Что делает компилятор?
• Степень управляемости
• Нежелательный источник недетерминизма




                                                 2
Что компилировать?

• Всѐ
• Классы
• Методы
• Базовые блоки
• Ещѐ?




                     3
Когда компилировать?
• Предварительно (AOT)
      Больше ресурсов на оптимизацию
      Предсказуемый результат, проще поиск ошибок в
       компиляторе
      Новый стандарт на промежуточное представление (или
       компиляция в существующие стандарты)
      Сложности деоптимизации

• На лету (JIT)
      Больше информации для оптимизации
        • Аппаратное обеспечение
        • Контекст компиляции
        • Типичное поведение
      Деоптимизация по мере необходимости
      Что компилировать (déjà vu)?
•   Комбинированные подходы
      Подсказки JITу
      Сохранение исходного байткода
                                                            4
Профилировка и динамическая
оптимизация
• Цикл разработки: написание – компиляция-
  отладка – профилировка – оптимизация
• Объекты оптимизации: hotspots, common
  paths, дорогие операции
• Чем может помочь динамический
  профилятор+компилятор:
   Обнаружение часто исполняемого кода
   Оптимизация под common path
   Исключение дорогих операций
   Реоптимизация при изменении нагрузки



                                             5
Простой компилятор

• Параметризированные шаблоны – кусочки
  машинного кода
• Трансляция сводится к последовательной
  замене байткодов на шаблоны
• Выигрыш:
   Не нужен диспетчер переходящий к
    следующему байткоду
   Можно хранить часто используемые
    значения, например TOS в машинных
    регистрах
   Ещѐ?

                                           6
Оптимизирующий комилятор

• Анализ реальной семантики байткода (в
  IR)
• Оптимизация:
   Стандартные компиляторные оптимизации
    (какие?)
   Инлайнинг
   Доступы к памяти
   Выделение машинных регистров
   Обработка NPE
   Блокировки
   Барьеры коллектора
   Построение кода оптимизированного под
    типичное исполнение и типичные данные
                                          7
Деоптимизация и
 реоптимизация
• Динамический компилятор делает
  оптимистичекие предположения
• Tempora mutantur…
• Может быть необходимо остановить
  исполнение скомпилированного кода и
  получить его состояние
• ... et nos mutamur in illis
• Заново породить код с учетом новых
  условий
• Продолжить исполнение кода из заданного
  состояния
                                            8
Компилятору необходимо
взаимодействие с…
• Коллектором
• Интерпретатором (если есть)
• Менеджером блокировок
• Менеджером исключений Ява
• Загрузчиком классов (зачем?)
• Отладчиком Ява (зачем?)
• Менеджером исключительных ситуаций ОС
• Коллектор релоцирует ссылки в
  порождѐнном коде

                                          9
Вопросы

• Чем ещѐ хорош AOT?
• Какой язык более “динамический” –
  Java или C++? Как это влияет на
  компиляторы с этих языков?
• Какие оптимизации осмысленны на
  уровне Java -> байткод, а какие на
  уровне байткод -> машинный код?
• Как reflection может влиять на дизайн
  компилятора (AOT?, JIT?)

                                          10

More Related Content

Viewers also liked

20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06
Computer Science Club
 
Mis objetos tecnologicos diego viviescas
Mis objetos tecnologicos diego viviescasMis objetos tecnologicos diego viviescas
Mis objetos tecnologicos diego viviescas
diegoviviescas
 
Д. М. Ицыксон. Вводный курс. Лекция 1
Д. М. Ицыксон. Вводный курс. Лекция 1Д. М. Ицыксон. Вводный курс. Лекция 1
Д. М. Ицыксон. Вводный курс. Лекция 1
Computer Science Club
 
Projeto de Restauração Urbana do Bairro Cosme Velho
Projeto de Restauração Urbana do Bairro Cosme VelhoProjeto de Restauração Urbana do Bairro Cosme Velho
Projeto de Restauração Urbana do Bairro Cosme Velho
AAA_Azevedo Agência de Arquitetura
 
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Bente Kalsnes
 
Programa de Navidad Ciudad de Gáldar 2012
Programa de Navidad Ciudad de Gáldar 2012Programa de Navidad Ciudad de Gáldar 2012
Programa de Navidad Ciudad de Gáldar 2012
Nuestras Islas Canarias
 

Viewers also liked (20)

Hackers del mundo
Hackers del mundoHackers del mundo
Hackers del mundo
 
Lenguaje de opinion (2)
Lenguaje de opinion (2)Lenguaje de opinion (2)
Lenguaje de opinion (2)
 
Työssäoppimispaikkaan perehtyminen mobiilielokuvan avulla
Työssäoppimispaikkaan perehtyminen mobiilielokuvan avullaTyössäoppimispaikkaan perehtyminen mobiilielokuvan avulla
Työssäoppimispaikkaan perehtyminen mobiilielokuvan avulla
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06
 
Tipos de marketing anderson villarreal
Tipos de marketing anderson villarrealTipos de marketing anderson villarreal
Tipos de marketing anderson villarreal
 
MINIEMPRESA ATENA
MINIEMPRESA ATENAMINIEMPRESA ATENA
MINIEMPRESA ATENA
 
El software-sesión 03
El software-sesión 03El software-sesión 03
El software-sesión 03
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2
 
Sistemas de ecuaciones_Morochovilla_Act4
Sistemas de ecuaciones_Morochovilla_Act4Sistemas de ecuaciones_Morochovilla_Act4
Sistemas de ecuaciones_Morochovilla_Act4
 
Mis objetos tecnologicos diego viviescas
Mis objetos tecnologicos diego viviescasMis objetos tecnologicos diego viviescas
Mis objetos tecnologicos diego viviescas
 
Los medios de transporte
Los medios de transporteLos medios de transporte
Los medios de transporte
 
Paralegal AA degree
Paralegal AA degreeParalegal AA degree
Paralegal AA degree
 
DR NORMAN VINCENT PEALE WAS NOT ANTI-CATHOLIC
DR NORMAN VINCENT PEALE WAS NOT ANTI-CATHOLICDR NORMAN VINCENT PEALE WAS NOT ANTI-CATHOLIC
DR NORMAN VINCENT PEALE WAS NOT ANTI-CATHOLIC
 
Bbhita
BbhitaBbhita
Bbhita
 
One piece volume 02(009-017)
One piece volume 02(009-017)One piece volume 02(009-017)
One piece volume 02(009-017)
 
Д. М. Ицыксон. Вводный курс. Лекция 1
Д. М. Ицыксон. Вводный курс. Лекция 1Д. М. Ицыксон. Вводный курс. Лекция 1
Д. М. Ицыксон. Вводный курс. Лекция 1
 
Projeto de Restauração Urbana do Bairro Cosme Velho
Projeto de Restauração Urbana do Bairro Cosme VelhoProjeto de Restauração Urbana do Bairro Cosme Velho
Projeto de Restauração Urbana do Bairro Cosme Velho
 
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
 
UOP Diploma
UOP DiplomaUOP Diploma
UOP Diploma
 
Programa de Navidad Ciudad de Gáldar 2012
Programa de Navidad Ciudad de Gáldar 2012Programa de Navidad Ciudad de Gáldar 2012
Programa de Navidad Ciudad de Gáldar 2012
 

Similar to 20100307 virtualization igotti_lecture05

CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Computer Science Club
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
Dmitry Buzdin
 
PHP 5.4 - особенности перехода
PHP 5.4 - особенности переходаPHP 5.4 - особенности перехода
PHP 5.4 - особенности перехода
Roman Pronskiy
 

Similar to 20100307 virtualization igotti_lecture05 (20)

CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
 
JVM: краткий курс общей анатомии
JVM: краткий курс общей анатомииJVM: краткий курс общей анатомии
JVM: краткий курс общей анатомии
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
JPHP - О проекте на простом языке
JPHP - О проекте на простом языкеJPHP - О проекте на простом языке
JPHP - О проекте на простом языке
 
Platov
PlatovPlatov
Platov
 
Практические приёмы оптимизации .NET-приложений
Практические приёмы оптимизации .NET-приложенийПрактические приёмы оптимизации .NET-приложений
Практические приёмы оптимизации .NET-приложений
 
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Roslyn Code Analysis
Roslyn Code AnalysisRoslyn Code Analysis
Roslyn Code Analysis
 
PHP 5.4 - особенности перехода
PHP 5.4 - особенности переходаPHP 5.4 - особенности перехода
PHP 5.4 - особенности перехода
 

More from Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
 

More from Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

Recently uploaded

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 

Recently uploaded (9)

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 

20100307 virtualization igotti_lecture05

  • 2. Требования к компилятору • Не требуется стандартом Java • Основное поведенческое требование - прозрачность • Функционально – только для повышения производительности • Что делает компилятор? • Степень управляемости • Нежелательный источник недетерминизма 2
  • 3. Что компилировать? • Всѐ • Классы • Методы • Базовые блоки • Ещѐ? 3
  • 4. Когда компилировать? • Предварительно (AOT)  Больше ресурсов на оптимизацию  Предсказуемый результат, проще поиск ошибок в компиляторе  Новый стандарт на промежуточное представление (или компиляция в существующие стандарты)  Сложности деоптимизации • На лету (JIT)  Больше информации для оптимизации • Аппаратное обеспечение • Контекст компиляции • Типичное поведение  Деоптимизация по мере необходимости  Что компилировать (déjà vu)? • Комбинированные подходы  Подсказки JITу  Сохранение исходного байткода 4
  • 5. Профилировка и динамическая оптимизация • Цикл разработки: написание – компиляция- отладка – профилировка – оптимизация • Объекты оптимизации: hotspots, common paths, дорогие операции • Чем может помочь динамический профилятор+компилятор:  Обнаружение часто исполняемого кода  Оптимизация под common path  Исключение дорогих операций  Реоптимизация при изменении нагрузки 5
  • 6. Простой компилятор • Параметризированные шаблоны – кусочки машинного кода • Трансляция сводится к последовательной замене байткодов на шаблоны • Выигрыш:  Не нужен диспетчер переходящий к следующему байткоду  Можно хранить часто используемые значения, например TOS в машинных регистрах  Ещѐ? 6
  • 7. Оптимизирующий комилятор • Анализ реальной семантики байткода (в IR) • Оптимизация:  Стандартные компиляторные оптимизации (какие?)  Инлайнинг  Доступы к памяти  Выделение машинных регистров  Обработка NPE  Блокировки  Барьеры коллектора  Построение кода оптимизированного под типичное исполнение и типичные данные 7
  • 8. Деоптимизация и реоптимизация • Динамический компилятор делает оптимистичекие предположения • Tempora mutantur… • Может быть необходимо остановить исполнение скомпилированного кода и получить его состояние • ... et nos mutamur in illis • Заново породить код с учетом новых условий • Продолжить исполнение кода из заданного состояния 8
  • 9. Компилятору необходимо взаимодействие с… • Коллектором • Интерпретатором (если есть) • Менеджером блокировок • Менеджером исключений Ява • Загрузчиком классов (зачем?) • Отладчиком Ява (зачем?) • Менеджером исключительных ситуаций ОС • Коллектор релоцирует ссылки в порождѐнном коде 9
  • 10. Вопросы • Чем ещѐ хорош AOT? • Какой язык более “динамический” – Java или C++? Как это влияет на компиляторы с этих языков? • Какие оптимизации осмысленны на уровне Java -> байткод, а какие на уровне байткод -> машинный код? • Как reflection может влиять на дизайн компилятора (AOT?, JIT?) 10