lightning
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lightning] Change to how register liveness is calculated after jit_jmpr


From: Paulo César Pereira de Andrade
Subject: [Lightning] Change to how register liveness is calculated after jit_jmpr or jit_jmpi(absolute_address)
Date: Mon, 1 Sep 2014 17:03:30 -0300

 Hi,

  This may affect some lightning usage, most likely for good, but
is a significant change.

  Previously lightning would mark as live all registers that it
did not know the state whenever reaching a jit_jmpr, or a
jit_jmpi to an absolute address.

  The problem is that it usually would mark all registers as
live, leaving no option to the register allocator for code
after a jit_jmpr, that would be likely due to a back jump to
just after the jit_jmpr. And this is exactly how the
experimental language at https://github.com/pcpa/owl calls
class virtual methods.

  So, now it basically will treat jit_jmpr, or jit_jmpi to an absolute
address as a function call, and only consider live JIT_Vn registers.
It on purpose also marks all JIT_Rx and JIT_Fx as dead, even if
jit_callee_p(that-reg) is true, what happens in a few backends, so,
if that could be a problem, please let me know.

  The previous behaviour was really a bug, and was uncovered by the
change in lightning 2.0.5 to force use of jit_class_nospill on
temporaries that are used to compute a conditional jump (or actual
address to jump).

Thanks,
Paulo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]