Вопросы по теме 'jvm-bytecode'
Подписи байт-кода Java
Как часть компилятора для языка программирования, над которым я работаю, я наткнулся на общие подписи в байт-коде, который я пытаюсь разобрать и преобразовать в AST. Алгоритм синтаксического анализа в основном работает, но, кажется, есть особый...
1346 просмотров
schedule
16.08.2022
Почему нет инструкции ICMP?
Как некоторые из вас, возможно, знают, у нас есть множество кодов операций для сравнения различных типов примитивных значений:
LCMP
FCMPL
FCMPG
DCMPL
DCMPG
IFEQ
IFNE
IFLT
IFGE
IFGT
IFLE
IF_ICMPEQ
IF_ICMPNE
IF_ICMPLT
IF_ICMPGE
IF_ICMPGT
IF_ICMPLE...
700 просмотров
schedule
16.05.2023
Возможна оптимизация последовательности байт-кода
Я генерирую последовательность байт-кода после встроенного вызова нескольких методов. В начале встроенного метода я сначала сопоставил существующие индексы переменных с новыми номерами локальных переменных на случай любого исключения во встроенном...
120 просмотров
schedule
30.11.2022
Что означает инструментарий AOT?
Я знаю, что такое инструментарий байт-кода. Это просто изменение байт-кодов файлов .class во время выполнения, которое, по-видимому, доступно, начиная с JDK 1.5. Однако говорят, что это происходит во время загрузки класса, а не во время выполнения....
608 просмотров
schedule
26.04.2024
Разделение InsnList на базовые блоки
В ASM Tree API у меня есть InsnList, содержащий список инструкций в методе.
Я хочу разделить это на базовые блоки: последовательность инструкций, в которой каждая инструкция, кроме последней, имеет ровно одного преемника, и такая, что никакая...
342 просмотров
schedule
10.04.2023
Есть ли умный способ определить длину инструкций байт-кода Java?
Я создаю инструмент статического анализа для Java, и есть некоторая информация о программах, которые я анализирую, которую будет легче получить, если я смогу получить ее из байт-кода в .class файлах.
Меня не волнуют все до единой инструкции ,...
945 просмотров
schedule
07.01.2023
null или пустая лямбда как значение по умолчанию
какое решение лучше? использовать обнуляемую лямбду или передать пустую лямбду в качестве параметра по умолчанию? kotlin как-то оптимизирует пустую лямбду? или создать новый экземпляр, который ничего не делает?
class Test1(val action: () ->...
15277 просмотров
schedule
24.09.2022
Как получить файл класса (в формате спецификации) во время выполнения с помощью JVMTI?
Я работаю над исследовательским проектом, который включает в себя отзывы профилировщика Hotspot. В настоящее время я работаю над агентом JVMTI, который должен иметь следующие функции:
слушайте любое скомпилированное событие загрузки.
Извлеките...
559 просмотров
schedule
08.12.2022
Получить MethodHandle из лямбда-объекта
Из java.lang.invoke.LambdaMetafactory :
Рекомендуемый механизм для оценки лямбда-выражений состоит в том, чтобы преобразовать тело лямбда-выражения в метод, вызвать сайт вызова invokedynamic, список статических аргументов которого описывает...
650 просмотров
schedule
23.02.2023
ASM пропускает классы, если COMPUTE_FRAMES установлен в ClassWriter
Я работаю над агентом Java, который запускается вместе с плагином maven-surfire. Агент должен иметь возможность внедрять вызовы методов с помощью библиотеки ASM в загруженные методы в трех разных точках: 1) в начале каждого метода; 2) В конце...
464 просмотров
schedule
23.04.2023
Использование invokedynamic — что происходит под капотом?
Задний план
В настоящее время я пишу JVM на С# исключительно для академических целей (и, возможно, для создания смешанного приложения .NET и Java/Scala в будущем).
Контекст
Я пишу простой класс JAVA :
public class test
{
public...
784 просмотров
schedule
21.03.2022
ASM: VisitLabel генерирует слишком много меток и инструкций nop
В документации ASM говорится, что метка представляет собой базовый блок и является узлом в графе управления. Поэтому я тестирую метод visitLabel на этом простом примере:
public static void main(String[] args) {
int x = 3, y = 4;
if (x...
404 просмотров
schedule
31.12.2022
Информация о типах для примитивных типов в полиморфных типах
Учитывая следующий объект:
object Foo {
val bar: List[Int] = List(1, 2, 3)
}
Когда мы компилируем этот файл в байт-код JVM, из-за стирания типов и из-за того, что Java не поддерживает примитивные типы в качестве параметров для универсальных...
68 просмотров
schedule
12.09.2022
Преимущества производительности перекомпиляции старого проекта Java с последней версией Java
Имеет ли смысл перекомпилировать проект с новой (java 11) целевой версией с точки зрения производительности, если он будет запускаться на java 11, а исходный код останется прежним (java 8)?
<plugin>...
221 просмотров
schedule
28.04.2023
Извлечение тега типа с помощью Witness
Я провожу некоторые эксперименты с Witness и теперь пытаюсь понять, как это работает. Рассмотрим следующий пример:
import shapeless.syntax.singleton._
import shapeless.labelled.FieldType
import shapeless.Witness
def main(args : Array[String]):...
76 просмотров
schedule
03.09.2022
ASM не сообщает о постоянных инструкциях
Я пытаюсь использовать библиотеку ASM для чтения байтового кода и перевода его в другой формат. Начнем с простого тестового класса, содержащего этот метод:
public static double square(double a) {
return a * a;
}
Который компилируется в...
41 просмотров
schedule
08.02.2023
Реализация метода ByteBuddy, который создает новый объект
Я использую Byte Buddy 1.9.0 в качестве генератора кода для языка программирования на основе Xtext, и я изо всех сил пытаюсь создать байт-код для метода, который создает экземпляр "анонимного" класса. Для всех намерений и целей я пытаюсь, чтобы Byte...
373 просмотров
schedule
27.09.2022
Компиляция/разборка Java без создания постоянного пула?
У меня возникли проблемы с пониманием использования некоторых инструкций байт-кода Java, частично из-за отсутствия примеров. Вместо этого я использую javac или Jasmin для компиляции обычного Java-кода, а затем использую javap -c для проверки...
73 просмотров
schedule
13.04.2023
Как игнорировать инструментальные геттеры/сеттеры при использовании ASM?
Я использую библиотеку ASM для инструментовки некоторых классов. Я создаю свой собственный экземпляр MethodVisitor и переопределяю некоторые из его методов, например. visitCode() , который вызывается, когда MethodVisitor находится в начале...
170 просмотров
schedule
06.12.2022