Skip to content

Instantly share code, notes, and snippets.

@bjorng
bjorng / TODO.md
Last active August 16, 2018 08:27
Informal to-do and bug list for new the new SSA-based compiler

TO DO

  • Source code:
foo(X, Y) ->
    case X =:= $T orelse X =:= $\s of
        true -> {ok, Y};
        _ -> error
 end.
@bjorng
bjorng / hipe_bug.S
Created August 20, 2018 14:13
A bug in HiPE when using the new SSA-based compiler
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)
@bjorng
bjorng / pt_benchmark.erl
Created October 17, 2018 08:08
Simple benchmarking of persistent terms
-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),
@bjorng
bjorng / base64_bench
Created September 6, 2022 04:42
Benchmarking for encoding and decoding Base64 binaries
-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),