aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2016-04-06 07:02:36 +0200
committerBjörn Gustavsson <[email protected]>2016-04-07 15:28:29 +0200
commit4f33597d52a0cef2e47b07578bc8a35a17c2f969 (patch)
treefb7dd1c6fe06bfe9f35ed128305b439cbdce5d17
parent72bec464764c919cbfbd2db1c86cce227b2b9c42 (diff)
downloadotp-4f33597d52a0cef2e47b07578bc8a35a17c2f969.tar.gz
otp-4f33597d52a0cef2e47b07578bc8a35a17c2f969.tar.bz2
otp-4f33597d52a0cef2e47b07578bc8a35a17c2f969.zip
Don't let the loader do the compiler's job
Optimizations that are possible to do by the compiler should be done by the compiler and not by the loader. If the compiler has done its job correctly, attempting to do the two transformations only wastes time.
-rw-r--r--erts/emulator/beam/beam_load.c7
-rw-r--r--erts/emulator/beam/ops.tab5
2 files changed, 0 insertions, 12 deletions
diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c
index bdb451a6fe..a98900460e 100644
--- a/erts/emulator/beam/beam_load.c
+++ b/erts/emulator/beam/beam_load.c
@@ -2736,13 +2736,6 @@ mixed_types(LoaderState* stp, GenOpArg Size, GenOpArg* Rest)
}
static int
-same_label(LoaderState* stp, GenOpArg Target, GenOpArg Label)
-{
- return Target.type = TAG_f && Label.type == TAG_u &&
- Target.val == Label.val;
-}
-
-static int
is_killed_apply(LoaderState* stp, GenOpArg Reg, GenOpArg Live)
{
return Reg.type == TAG_x && Live.type == TAG_u &&
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 78000160e3..485c072540 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -181,11 +181,6 @@ i_jump_on_val_zero y f I
i_jump_on_val x f I I
i_jump_on_val y f I I
-jump Target | label Lbl | same_label(Target, Lbl) => label Lbl
-
-is_ne_exact L1 S1 S2 | jump Fail | label L2 | same_label(L1, L2) => \
- is_eq_exact Fail S1 S2 | label L2
-
%macro: get_list GetList -pack
get_list x x x
get_list x x y