diff options
author | Björn Gustavsson <[email protected]> | 2019-03-21 12:10:11 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-03-21 12:10:11 +0100 |
commit | 3a9bf3eb739f11ed1acefe55858f20421d9f7462 (patch) | |
tree | 6b208d80355cbd70efead7a7309316758896c2d3 /erts/emulator/beam/map_instrs.tab | |
parent | cf26ad7c81f013fda02233b8425618f50a8b9b5d (diff) | |
parent | db5e8bda8cad4f16e0573d23a3ab1e37cadf78c4 (diff) | |
download | otp-3a9bf3eb739f11ed1acefe55858f20421d9f7462.tar.gz otp-3a9bf3eb739f11ed1acefe55858f20421d9f7462.tar.bz2 otp-3a9bf3eb739f11ed1acefe55858f20421d9f7462.zip |
Merge pull request #2188 from bjorng/bjorn/tune-beam-3
Tune BEAM instructions for the new compiler (part 3)
Diffstat (limited to 'erts/emulator/beam/map_instrs.tab')
-rw-r--r-- | erts/emulator/beam/map_instrs.tab | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/erts/emulator/beam/map_instrs.tab b/erts/emulator/beam/map_instrs.tab index c594a87298..5620d5a2d1 100644 --- a/erts/emulator/beam/map_instrs.tab +++ b/erts/emulator/beam/map_instrs.tab @@ -127,11 +127,21 @@ i_get_map_elements(Fail, Src, N) { } } -update_map_assoc(Src, Dst, Live, N) { +update_map_assoc := update_map_assoc.fetch.execute; + +update_map_assoc.head() { + Eterm map; +} + +update_map_assoc.fetch(Src) { + map = $Src; +} + +update_map_assoc.execute(Dst, Live, N) { Eterm res; Uint live = $Live; - reg[live] = $Src; + reg[live] = map; HEAVY_SWAPOUT; res = erts_gc_update_map_assoc(c_p, reg, live, $N, $NEXT_INSTRUCTION); HEAVY_SWAPIN; @@ -141,11 +151,21 @@ update_map_assoc(Src, Dst, Live, N) { $NEXT($NEXT_INSTRUCTION+$N); } -update_map_exact(Fail, Src, Dst, Live, N) { +update_map_exact := update_map_exact.fetch.execute; + +update_map_exact.head() { + Eterm map; +} + +update_map_exact.fetch(Src) { + map = $Src; +} + +update_map_exact.execute(Fail, Dst, Live, N) { Eterm res; Uint live = $Live; - reg[live] = $Src; + reg[live] = map; HEAVY_SWAPOUT; res = erts_gc_update_map_exact(c_p, reg, live, $N, $NEXT_INSTRUCTION); HEAVY_SWAPIN; |