- Source code:
foo(X, Y) ->
case X =:= $T orelse X =:= $\s of
true -> {ok, Y};
_ -> error
end.
Demonstrating the bug. | |
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] | |
Eshell V10.0 (abort with ^G) | |
1> c(hipe_bug, [from_asm,native]). | |
{ok,hipe_bug} | |
2> hipe_bug:run(). | |
size_object: matchstate term not allowedAborted (core dumped) |
-module(pt_benchmark). | |
-compile([export_all,nowarn_export_all]). | |
b() -> | |
%% run(fun pt_imm/1, fun pdict_imm/1), | |
%% run(fun pt/1, fun pdict/1), | |
%% run(fun pt_striped/1, fun pdict_striped/1), | |
%% run(fun pt_record/1, fun pdict_record/1), | |
run(fun ets_imm/1, fun pt_imm/1), | |
run(fun ets/1, fun pt/1), |
-module(bench). % -*- erlang -*-; | |
-mode(compile). | |
%% Based on the benchmark in https://github.com/erlang/otp/issues/5639. | |
main([]) -> | |
Data100B = crypto:strong_rand_bytes(100), | |
Data1MB = crypto:strong_rand_bytes(1024 * 1024), | |
io:format("== Testing with 100 B ==~n"), | |
test_encode(Data100B, 1_000_000), |