Skip to content

Instantly share code, notes, and snippets.

#!/bin/sh
git filter-branch --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
if [ "$GIT_AUTHOR_EMAIL" = "[email protected]" ]
#!/bin/sh
#
# Suggested name for this script: git-clean-stale-branches
#
# This script will help to remove "stale" branches from a remote
# repository (by default the "origin" repository). Stale branches
# are any branches that does not exist in the local repository.
#
# This script should be run in the local repository. It will print
# out a git command to remove all branches from the remote repository
colorBlur(#we{es=Etab}=We) ->
L0 = array:sparse_foldl(
fun(E, #edge{vs=Va,ve=Vb}, A) ->
Left0 = wings_va:edge_attrs(E, left, We),
Right0 = wings_va:edge_attrs(E, right, We),
Left = def_color(wings_va:attr(color, Left0)),
Right = def_color(wings_va:attr(color, Right0)),
[{Va,Left},{Va,Right},{Vb,Left},{Vb,Right}|A]
end, [], Etab),
[{V,Color}|L] = lists:sort(L0),
-module(string_eqc).
-compile([export_all,nowarn_export_all]).
-include_lib("eqc/include/eqc.hrl").
%%%
%%% Test most new functions in the new string module (PR #1330).
%%%
flat_chardata() ->
@bjorng
bjorng / otp-diffable-asm
Last active August 31, 2017 05:31
Compile some OTP applications into a diff-friendly assembly format
#!/usr/bin/env escript
%% -*- erlang -*-
-mode(compile).
main(Args) ->
case Args of
[] ->
do_compile("asm");
[OutDir] ->
do_compile(OutDir);
@bjorng
bjorng / otp-asm-diff
Created April 25, 2017 10:36
Compare two directories of .S files, producing a summary of the change of function sizes
#!/usr/bin/env escript
%% -*- erlang -*-
-mode(compile).
-import(lists, [foreach/2]).
main([Old,New]) ->
Wc = filename:join(Old, "*.S"),
Files0 = filelib:wildcard(Wc),
Files = [filename:basename(F) || F <- Files0],
F = fun(Name) ->
@bjorng
bjorng / otp-bisect-ts
Last active January 3, 2022 08:23
Automate running git bisect in the otp repository
#!/bin/sh
git clean -dxfq
./otp_build autoconf
./configure
# Build the minimum number of applications.
OTP_SMALL_BUILD=true
export OTP_SMALL_BUILD
for app in asn1 hipe ic inets jinterface snmp; do
echo "Build faster" >lib/$app/SKIP
@bjorng
bjorng / beam-emu-vars
Last active September 27, 2017 11:02
Find out where important BEAM emulator variables are stored
#!/usr/bin/perl -w
use strict;
# Analyse beam_emu.s and try to find out the registers
# used for the important variables in process_main().
#
# Works for .s files from clang or gcc. For gcc, the -fverbose-asm
# option must be used.
#
# Example:
@bjorng
bjorng / hipe_bug.S
Last active August 13, 2018 08:16
Bug in HiPE for map matching
Demonstrating the bug.
The hipe_bug.S file was generated using the new SSA-based compiler.
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]), hipe_bug:run().
** exception error: {badmap,{cons,{arg,0},nil}}
in function hipe_bug:dig_out_fc/1
@bjorng
bjorng / same_line.erl
Created August 16, 2018 08:24
Core transform to set all line numbers to the same value (42). Useful for simulating huge Elixir macros.
-module(same_line).
-export([core_transform/2]).
%%
%% erlc -pa . '+{core_transform,same_line}' <filename>.erl
%%
core_transform(Core, _Options) ->
F = fun(Node) ->
case cerl:get_ann(Node) of