[erlang-bugs] Native compilation hangs with rm-reverse-eta-conversion

Kostis Sagonas <>
Tue Mar 12 20:07:46 CET 2013

On 01/23/2013 12:49 PM, Anthony Ramine wrote:
> Hi,
> The bytecode invariant that I broke is the fact that a function cannot be used as
> a closure and as a normal function both at the same time, thus the eta-abstraction
> is needed by HiPE.
> Fredrik, for the time being you should probably revert rm-reverse-eta-conversion
> because I don't think I'll be able to make HiPE work with the eta-abstraction in
> that much time.
> Kostis, could you give me directions on how to make HiPE not need the intermediate
> closures when doing fun Name/Arity?

Thanks to Anthony repeatedly prompting me to look into this and sending 
me a minimal example to test and to Bjorn Gustavsson for checking the 
code of hipe_icode_coordinator, today I adapted the assumptions of the 
native code compiler and simplified the code that computes escaping 
functions. The following hipe patch should be included in OTP:

   git fetch git://github.com/kostis/otp.git hipe-cleanup-escaping

After its inclusion, Anthony's patch that removes the automatic 
eta-abstraction for function references from the BEAM compiler can 
probably be included without any problems.


More information about the erlang-bugs mailing list