Abel
03/10/2021, 4:45 PMraulraja
03/10/2021, 5:05 PMdmitriy.novozhilov
03/10/2021, 7:13 PMdmitriy.novozhilov
03/10/2021, 7:17 PM:compiler:resolution
and :compiler:frontend
modules and :compiler:frontend.java
contains only part of resolution which is special for java interop (e.g. scopes for java classes), so they all work together and produces BindingContext (big map which contains information about all program) in pair to PSI. After that old backend takes PSI and BindingContext and generates bytecode over it, and JVM IR backend transforms PSI + BindingContext to IR and after that works with itdmitriy.novozhilov
03/10/2021, 7:18 PMYux
03/10/2021, 7:20 PMdmitriy.novozhilov
03/10/2021, 9:06 PMAbel
03/10/2021, 9:30 PMdmitriy.novozhilov
03/11/2021, 8:57 AM:compiler:resolution
is just one of modules of frontend, alongside with :compiler:frontend
(there was an idea to keep in different modules logic which depend and not depend on PSI, but we found later that core problem of old frontend not just PSI, but and descriptors also). Check simple diagram I made
if the compiler doesn't modify the PSI, where/when are all the transformations madeFrontend stores all information that it inferred (types, descriptors, diagnostics, constant evaluation, CFA results etc) in
BindingContext
, where (in most cases) PSI is a key to specific map in it which contains, for example, descriptorsAbel
03/11/2021, 10:10 AMdmitriy.novozhilov
03/11/2021, 10:15 AMConstantExpressionEvaluator
which is used in FE 1.0, and its results are reused in both backends
- IrInterpreter
-- new mechanism for constant evaluation of simple constant expressions and prototype of evaluating functions calls in compile time. It is used in pair FIR + IR backend right after transformation from FIR to IR (FIR doesn't have analog of ConstantExpressionEvaluator
by design)dmitriy.novozhilov
03/11/2021, 10:15 AMAbel
03/11/2021, 10:17 AMAbel
03/11/2021, 10:45 AMdmitriy.novozhilov
03/11/2021, 10:47 AMCode transformations
to Code analysis
in frontend block.Abel
03/11/2021, 10:48 AMraulraja
03/11/2021, 12:24 PMMichal Harakal
03/11/2021, 12:26 PMAbel
04/08/2021, 4:53 PMdmitriy.novozhilov
04/08/2021, 4:57 PMAbel
04/08/2021, 5:10 PMdmitriy.novozhilov
04/08/2021, 5:31 PMfrontend
boxAbel
04/08/2021, 5:34 PMdmitriy.novozhilov
04/08/2021, 7:48 PMfir2ir
Abel
04/09/2021, 2:47 PMAbel
04/09/2021, 4:00 PMdmitriy.novozhilov
04/09/2021, 4:14 PMandylamax
12/30/2021, 1:21 AMhfhbd
06/20/2022, 6:54 PMventura
01/28/2023, 10:23 AMventura
01/28/2023, 10:25 AMventura
01/28/2023, 10:26 AM