aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2017-11-20 15:33:45 +0100
committerGitHub <[email protected]>2017-11-20 15:33:45 +0100
commit9556949af97553ad99133d2198b8d92c18de98c7 (patch)
treef1c54591092346269c7b1bd7a5dfd9e7459b3d08 /erts/emulator
parentb64a07a11ea5e83fd207fc024d11dcb0c57f35a6 (diff)
parent8e8380865bb31c119e7f11fbdbbb14ea58ebbef2 (diff)
downloadotp-9556949af97553ad99133d2198b8d92c18de98c7.tar.gz
otp-9556949af97553ad99133d2198b8d92c18de98c7.tar.bz2
otp-9556949af97553ad99133d2198b8d92c18de98c7.zip
Merge PR-1632 from margnus1/hipe-receive-opt OTP-14785
HiPE: Optimise receives matching unique references
Diffstat (limited to 'erts/emulator')
-rw-r--r--erts/emulator/hipe/hipe_mkliterals.c3
-rw-r--r--erts/emulator/hipe/hipe_native_bif.c2
2 files changed, 5 insertions, 0 deletions
diff --git a/erts/emulator/hipe/hipe_mkliterals.c b/erts/emulator/hipe/hipe_mkliterals.c
index de00994d64..84889b3376 100644
--- a/erts/emulator/hipe/hipe_mkliterals.c
+++ b/erts/emulator/hipe/hipe_mkliterals.c
@@ -531,6 +531,9 @@ static const struct rts_param rts_params[] = {
1, offsetof(struct process, hipe.gc_is_unsafe)
#endif
},
+
+ { 54, "P_MSG_LAST", 1, offsetof(struct process, msg.last) },
+ { 55, "P_MSG_SAVED_LAST", 1, offsetof(struct process, msg.saved_last) },
};
#define NR_PARAMS ARRAY_SIZE(rts_params)
diff --git a/erts/emulator/hipe/hipe_native_bif.c b/erts/emulator/hipe/hipe_native_bif.c
index 99c34532b9..d6358eabf4 100644
--- a/erts/emulator/hipe/hipe_native_bif.c
+++ b/erts/emulator/hipe/hipe_native_bif.c
@@ -254,6 +254,8 @@ void hipe_handle_exception(Process *c_p)
/* Synthesized to avoid having to generate code for it. */
c_p->def_arg_reg[0] = exception_tag[GET_EXC_CLASS(c_p->freason)];
+ c_p->msg.saved_last = 0; /* No longer safe to use this position */
+
hipe_find_handler(c_p);
}