aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/hipe/hipe_ppc_glue.S
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2014-04-25 23:02:26 +0200
committerSverker Eriksson <[email protected]>2014-04-29 16:17:56 +0200
commitc4cdb1847e09d1153a6044d7a6aac05db4fad515 (patch)
tree6bbb66be7b53e2532caee29ee0ff455416e9b2af /erts/emulator/hipe/hipe_ppc_glue.S
parent23246d73bbd3188e2c0a45408b9bd29fd034ccaf (diff)
downloadotp-c4cdb1847e09d1153a6044d7a6aac05db4fad515.tar.gz
otp-c4cdb1847e09d1153a6044d7a6aac05db4fad515.tar.bz2
otp-c4cdb1847e09d1153a6044d7a6aac05db4fad515.zip
erts: Fix global tracing of beam function when called from hipe code
Make hipe to beam calls use export entry. Makes it a lot easier to handle global tracing correctly (breakpoints in export entry). A beam function should now be traced correctly regardless how it is called. This will also fix a SEGV crash when a hipe stub is made pointing into a traced export entry and tracing is then stopped which clears the export entry causing the hipe stub to execute beam instruction NULL. This commit assumes that hipe code never calls local beam functions, which should be the case nowadays as we only hipe compile entire modules.
Diffstat (limited to 'erts/emulator/hipe/hipe_ppc_glue.S')
-rw-r--r--erts/emulator/hipe/hipe_ppc_glue.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/erts/emulator/hipe/hipe_ppc_glue.S b/erts/emulator/hipe/hipe_ppc_glue.S
index 6f0217c738..0c337a14df 100644
--- a/erts/emulator/hipe/hipe_ppc_glue.S
+++ b/erts/emulator/hipe/hipe_ppc_glue.S
@@ -296,7 +296,7 @@ CSYM(hipe_ppc_throw_to_native):
* which should look as follows:
*
* stub for f/N:
- * <set r12 to f's BEAM code address>
+ * <set r12 to f's export entry address>
* <set r0 to N>
* b nbif_callemu
*
@@ -312,10 +312,10 @@ CSYM(hipe_ppc_throw_to_native):
*/
GLOBAL(ASYM(nbif_callemu))
ASYM(nbif_callemu):
- STORE r12, P_BEAM_IP(P)
+ STORE r12, P_CALLEE_EXP(P)
STORE r0, P_ARITY(P)
STORE_ARG_REGS
- li r3, HIPE_MODE_SWITCH_RES_CALL
+ li r3, HIPE_MODE_SWITCH_RES_CALL_EXPORTED
b .suspend_exit
/*