aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/map_instrs.tab
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2019-03-21 12:10:11 +0100
committerGitHub <[email protected]>2019-03-21 12:10:11 +0100
commit3a9bf3eb739f11ed1acefe55858f20421d9f7462 (patch)
tree6b208d80355cbd70efead7a7309316758896c2d3 /erts/emulator/beam/map_instrs.tab
parentcf26ad7c81f013fda02233b8425618f50a8b9b5d (diff)
parentdb5e8bda8cad4f16e0573d23a3ab1e37cadf78c4 (diff)
downloadotp-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.tab28
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;