[erlang-questions] picky dialyzer
Ulf Wiger
ulf.wiger@REDACTED
Fri Jan 14 15:56:34 CET 2011
Ouch! What say you, Kostis? Waiting for the comeback from Dialyzer. :)
Of course now I'm also curious what leads to such a weird limit as 256
arguments… obviously, 0 args is allowed, so the range 0..256 does at
least make my eyebrow twitch a little. Björn?
BR,
Ulf
On 14 Jan 2011, at 15:40, Björn Gustavsson wrote:
> On Thu, Jan 13, 2011 at 2:09 PM, Kostis Sagonas <kostis@REDACTED> wrote:
>> Ulf Wiger wrote:
>>>
>>> On 13 Jan 2011, at 12:09, Kostis Sagonas wrote:
>>> ....
>>>>
>>>> mfa() is an alias for {atom(),atom(),byte()}.
>>>
>>> Ahh, as in {Module, Function, Arity}?
>>>
>>> In the System Limits of the Efficiency Guide, it says that you can have
>>> 256 arguments in a function or fun. Since dialyzer is never wrong, I will
>>> assume that the Efficiency Guide is? :)
>>
>> Let's see...
>>
>> %%=========================================================
>> -module(f_256).
>>
>> -export([f/256]).
>>
>> f(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_)
>> -> ok.
>> %%==========================================================
>>
>>
>> % erlc f_256.erl
>> % ~/HiPE/otp/bin/erl
>> Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
>> [hipe] [kernel-poll:false]
>>
>> Eshell V5.8.3 (abort with ^G)
>> 1> l(f_256).
>> {"Kernel pid
>> terminated",application_controller,"{application_terminated,kernel,shutdown}"}
>>
>> Crash dump was written to: erl_crash.dump
>> Kernel pid terminated (application_controller)
>> ({application_terminated,kernel,shutdown})
>>
>
> Works fine for me:
>
> $ erlc f_256.erl
> $ /ldisk/bjorn/otp/bin/erl
> Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
> [kernel-poll:false]
>
> Eshell V5.8.3 (abort with ^G)
> 1> l(f_256).
> {module,f_256}
> 2>
>
>
> If I try to load a function with 257 arguments, the loader will
> refuse to load the file:
>
> Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
> [kernel-poll:false]
>
> Eshell V5.8.3 (abort with ^G)
> 1> c(f_257).
>
> =ERROR REPORT==== 14-Jan-2011::15:34:45 ===
> beam/beam_load.c(2115): Error loading function f_257:f/257: op
> i_func_info: IaaI:
> too many arguments: 257
>
> {error,badfile}
>
> =ERROR REPORT==== 14-Jan-2011::15:34:45 ===
> Loading of /home/bjorn/test/f_257.beam failed: badfile
> 2>
>
>
> (Hint: Note that HiPE is not enabled in the
> emulator I used.)
>
> --
> Björn Gustavsson, Erlang/OTP, Ericsson AB
Ulf Wiger, CTO, Erlang Solutions, Ltd.
http://erlang-solutions.com
More information about the erlang-bugs
mailing list