{"push_id":3059405970,"size":2,"distinct_size":2,"ref":"refs/heads/bjorn/compiler/sort-moves","head":"d056caeebc8b59804e6cfa2ff98c225f0b868251","before":"e7a341f9ad374baa7149637dad10dbfc2b6f0ac4","commits":[{"sha":"7ae8b221ef89ed1140d734d0acca329773a02403","author":{"name":"Björn Gustavsson","email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org"},"message":"Sort move instructions on the Y register\n\nSort sequences of `move` instructions on the Y register.\n\nWhen moving from X registers to Y registers, having the instructions\nsorted on Y registers give the loader more opportunities to use\n`move_window{3,4,5}` instructions. For examples, the following five\ninstructions:\n\n    move_xy x(2) y(0)\n    move_xy x(1) y(1)\n    move_xy x(0) y(2)\n    move_xy x(5) y(3)\n    move_xy x(4) y(4)\n\ncan be replaced with:\n\n    move_window5_xxxxxy x(2) x(1) x(0) x(5) x(4) y(0)\n\nWhen the Y registers are not ordered so that `move_window5` can be\nused, the loader would typically combine the first three moves to a\n`move3_xyxyxy` instruction and the last two moves to a\n`move2_par_xyxy` instruction.\n\nWhen moving from Y registers to X registers, sorting on the Y\nregisters could potentially be more cache-friendly. It could also\nbe worthwhile investigating a new `move_window` instruction in\nthe BEAM interpreter that could move values from contiguous Y registers\nto X registers.\n\nNote that `scripts/diffable` can generate diffable dissambly files for\nthe loaded BEAM code:\n\n    $ scripts/diffable --dis 0\n    $ scripts/diffable --dis 1\n    $ diff -u 0 1","distinct":true,"url":"https://api.github.com/repos/bjorng/otp/commits/7ae8b221ef89ed1140d734d0acca329773a02403"},{"sha":"d056caeebc8b59804e6cfa2ff98c225f0b868251","author":{"name":"Björn Gustavsson","email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org"},"message":"Update primary bootstrap","distinct":true,"url":"https://api.github.com/repos/bjorng/otp/commits/d056caeebc8b59804e6cfa2ff98c225f0b868251"}]}
{"actor":{"display_login":"bjorng"}}