<br><br><div class="gmail_quote">On Sat, Dec 10, 2011 at 10:14 AM, Kostis Sagonas <span dir="ltr"><<a href="mailto:kostis@cs.ntua.gr">kostis@cs.ntua.gr</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
Thanks for the bug report.  This was mote than enough information to reproduce the compiler crash and pinpoint where it occurs.  For the file that contains it, it happens in function word/2 and I suggest that for the time being you modify the first clause of that function to contain _/binary instead of _/bits.  This will bypass the problem and I think it will allow cowboy to be compiled to native code.<br>

<br>
<br>
However, the native compiler crash should be fixed.  It really boils down to the following code:<br>
<br>
  -module(cowboy).<br>
  -export([f/1]).<br>
<br>
  f(<<42, _/bits>> = B) -> B.<br>
<br>
for which the BEAM compiler produces:<br>
<br>
  label 1:<br>
    {func_info,{atom,cowboy},{<u></u>atom,f},1}<br>
  label 2:<br>
    {test,bs_start_match2,{f,1},[{<u></u>x,0},1,0,{x,1}]}<br>
    {test,bs_match_string,{f,1},[{<u></u>x,1},8,<<"*">>]}<br>
    return<br>
<br>
This is obviously correct BEAM code, but I think it's suboptimal. I would have expected some lighter-weight instruction instead of a bs_match_string one, which presumably involves some loop in its implementation.  Bjorn what say you?<br>

<br>
Anyway, the crash is not due to that.  It's due to this instruction not being followed by some other one, like a bs_check_unit or a bs_test_tail.  This confuses the native code compiler.<br>
<br>
I will fix this, but I am afraid it's too late for R15B.<span class="HOEnZb"><font color="#888888"><br>
<br>
Kostis<br>
</font></span></blockquote></div><br><div>Hi!</div><div><br></div><div>Thanks for the quick reply and for verifying that my approach to working around the issue wasn't completely brain dead (better safe than sorry).</div>
<div><br></div><div>/ Magnus Klaar</div>