'translator' - translates Java language bytecode into High-level Intermediate representation (aka HIR)
The bytecode translator is responsible for converting incoming bytecode instructions into a high-level intermediate representation. This IR is of a lower level than the bytecode and breaks complex bytecode operations into several simple instructions to expose more opportunities to later high-level optimization phases. For example, loading an object field is broken up into operations that perform a null check of the object reference, load the base address of the object, compute the address of the field, and load the value at that computed address.
Source files: src/translator/*
JavaTranslator::translateMethod() in JavaTranslator.cpp is for this translation. It scans all bytecodes one by one and generates Insts (HIR) associated with Nodes (BB) by calling ByteCodeParser::parse() in ByteCodeParser.h. Then it calls JavaFlowGraphBuilder::build() in JavaFlowGraphBuilder.cpp to build up the control flow graph.