harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Okonechnikov Konstantin" <okko73...@gmail.com>
Subject Re: [general] GSoC 2008 Refactor Java Bytecode Translator
Date Thu, 20 Mar 2008 17:15:52 GMT
>hm, and how is it going? :)

well, right now I modify [codegen]->stacklayout action. Callee-save
registers are always being saved/restored in the begining/end of the
method. But sometimes not all pathes use callee saved regs.
Motion of the spill code inside CFG can reduce memory calling rate.
(So called "shrink wrapping"
technique). I have
already implemented functions that collect info about callee save regs
usage in each block and find proper postion for spill code,
hope to finish the optimization to the end of April.

>seriously, what is your experience with the code?

I am familiar with common principles ( DRVLM,HIR, LIR, CFG etc)
and have expierience with codegenerator.

> ... there is a JavaLabelPrepass class that namely should only mark
>boundaries of basic blocks. But it does a lot more, for example,
>inferring types of variables. It is very complicated, makes
>unpredictable number of traversals through the bytecode, not easy to
>support.

Some questions.
As I
understood TranslatatorSession::translate() starts parsing calling
JavaTranslator::translateMethod(), right?
Then we parse bytecode using JavaByteCodeTranslator as parser
callback. When are JavaLabelPrepass methods called?
What is VariableIncarnation? What is SlotVar?

> ...IRBuilder separation necessity is reported as HARMONY-5500.
Looks like refactoring of JavaLabelPrepass and IRBuilder separation are
quite independent tasks. And separation is more important, isn't it?

>A good example of clean code that does similar things is Jitrino.JET
>compiler, but I did not investigate if it could be reused. Maybe you
>can first try to build IR by extending Jitrino.JET.
You mean modify or extend
JET in order to use instead of JavaByteCodeTranslator?

Best regards,
            Okonechnikov Konstantin.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message