diff options
author | Björn Gustavsson <[email protected]> | 2017-12-04 10:11:14 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2017-12-04 10:11:14 +0100 |
commit | 0bea90ec66c2721570d4d068f034919557e350d0 (patch) | |
tree | 7b6b5634146491f2d645a65d576e469f076cc1e5 /erts/emulator | |
parent | 16937d18834798ab77e0f2aaa302a3ef384639ae (diff) | |
parent | e4b486d24fcc5029b26fe576b9e373fc02b9098a (diff) | |
download | otp-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.tab | 7 | ||||
-rw-r--r-- | erts/emulator/beam/ops.tab | 7 |
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 # |