aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-12-04 10:11:14 +0100
committerBjörn Gustavsson <[email protected]>2017-12-04 10:11:14 +0100
commit0bea90ec66c2721570d4d068f034919557e350d0 (patch)
tree7b6b5634146491f2d645a65d576e469f076cc1e5 /erts/emulator
parent16937d18834798ab77e0f2aaa302a3ef384639ae (diff)
parente4b486d24fcc5029b26fe576b9e373fc02b9098a (diff)
downloadotp-0bea90ec66c2721570d4d068f034919557e350d0.tar.gz
otp-0bea90ec66c2721570d4d068f034919557e350d0.tar.bz2
otp-0bea90ec66c2721570d4d068f034919557e350d0.zip
Merge branch 'bjorn/compiler/clean-up-codegen'
* bjorn/compiler/clean-up-codegen: bs_match_SUITE: Cover more clauses in v3_codegen:bs_rename_ctx/4 Clean up and comment code generation for basic blocks Stop trying to maximize the use of x(0) Clean up collection of basic blocks
Diffstat (limited to 'erts/emulator')
-rw-r--r--erts/emulator/beam/instrs.tab7
-rw-r--r--erts/emulator/beam/ops.tab7
2 files changed, 12 insertions, 2 deletions
diff --git a/erts/emulator/beam/instrs.tab b/erts/emulator/beam/instrs.tab
index c17d1a8f69..d934abb217 100644
--- a/erts/emulator/beam/instrs.tab
+++ b/erts/emulator/beam/instrs.tab
@@ -542,6 +542,13 @@ put_list(Hd, Tl, Dst) {
HTOP += 2;
}
+update_list(Hd, Dst) {
+ HTOP[0] = $Hd;
+ HTOP[1] = $Dst;
+ $Dst = make_list(HTOP);
+ HTOP += 2;
+}
+
i_put_tuple := i_put_tuple.make.fill;
i_put_tuple.make(Dst) {
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 3df91056cb..c30af029ce 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -503,6 +503,10 @@ i_put_tuple xy I
#
put_list Const=c n Dst => move Const x | put_list x n Dst
+put_list Src Dst=x Dst => update_list Src Dst
+
+update_list xyc x
+
put_list x n x
put_list y n x
put_list x x x
@@ -525,8 +529,6 @@ put_list c y x
# The following put_list instructions using x(0) are frequently used.
-put_list y r r
-put_list x r r
put_list r n r
put_list r n x
put_list r x x
@@ -537,6 +539,7 @@ put_list x x r
put_list s s d
%hot
+
#
# Some more only used by the emulator
#