aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_emu.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2014-05-20 18:35:21 +0200
committerSverker Eriksson <[email protected]>2014-05-20 18:35:29 +0200
commit7d78f2563e4ef9f7f165b1ba06212c6f09167809 (patch)
tree3927758f799cd787a74bc655f4903371971f2605 /erts/emulator/beam/beam_emu.c
parent50556f5e37cd866ecba39be22d94c32e88d358cb (diff)
parent0799ae534f61aef1a47d751d48a09c8b49995e7a (diff)
downloadotp-7d78f2563e4ef9f7f165b1ba06212c6f09167809.tar.gz
otp-7d78f2563e4ef9f7f165b1ba06212c6f09167809.tar.bz2
otp-7d78f2563e4ef9f7f165b1ba06212c6f09167809.zip
Merge branch 'sverk/hipe-global-trace-bug'
OTP-11939 * sverk/hipe-global-trace-bug: erts: Remove some dead hipe specific code erts: Fix global tracing of beam function when called from hipe code erts: Save some space in process struct for hipe
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r--erts/emulator/beam/beam_emu.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c
index 1026e5f649..9b251a6ad1 100644
--- a/erts/emulator/beam/beam_emu.c
+++ b/erts/emulator/beam/beam_emu.c
@@ -4993,14 +4993,14 @@ get_map_elements_fail:
* ... remainder of original BEAM code
*/
ASSERT(I[-5] == (Uint) OpCode(i_func_info_IaaI));
- c_p->hipe.ncallee = (void(*)(void)) I[-4];
+ c_p->hipe.u.ncallee = (void(*)(void)) I[-4];
cmd = HIPE_MODE_SWITCH_CMD_CALL | (I[-1] << 8);
++hipe_trap_count;
goto L_hipe_mode_switch;
}
OpCase(hipe_trap_call_closure): {
ASSERT(I[-5] == (Uint) OpCode(i_func_info_IaaI));
- c_p->hipe.ncallee = (void(*)(void)) I[-4];
+ c_p->hipe.u.ncallee = (void(*)(void)) I[-4];
cmd = HIPE_MODE_SWITCH_CMD_CALL_CLOSURE | (I[-1] << 8);
++hipe_trap_count;
goto L_hipe_mode_switch;
@@ -5034,7 +5034,10 @@ get_map_elements_fail:
case HIPE_MODE_SWITCH_RES_RETURN:
ASSERT(is_value(reg[0]));
MoveReturn(reg[0], r(0));
- case HIPE_MODE_SWITCH_RES_CALL:
+ case HIPE_MODE_SWITCH_RES_CALL_EXPORTED:
+ c_p->i = c_p->hipe.u.callee_exp->addressv[erts_active_code_ix()];
+ /*fall through*/
+ case HIPE_MODE_SWITCH_RES_CALL_BEAM:
SET_I(c_p->i);
r(0) = reg[0];
Dispatch();