diff options
author | Paul Guyot <[email protected]> | 2010-07-17 14:50:53 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2010-09-06 13:45:29 +0200 |
commit | 8bbcecd938f46127bc40ff7aed91d4e519d0cd5b (patch) | |
tree | 69a5542578ac615a6f5fbaaf4146467d59910e7a /erts/emulator/hipe/hipe_sparc_glue.S | |
parent | c4b4edaaf03ac12e12080cb4a3768edbb6ecf77d (diff) | |
download | otp-8bbcecd938f46127bc40ff7aed91d4e519d0cd5b.tar.gz otp-8bbcecd938f46127bc40ff7aed91d4e519d0cd5b.tar.bz2 otp-8bbcecd938f46127bc40ff7aed91d4e519d0cd5b.zip |
Fix call to erts_gc_after_bif_call in hipe glue
R12B-0 changed the signature of erts_gc_after_bif_call and it now
takes 4 parameters instead of 2 in R11B-5. Yet, the glue code was not
updated accordingly. As a result, the function erts_gc_after_bif_call
was called with garbage and would randomly cause a crash later in the
garbage collector code.
The fix consists in passing NULL and 0 for the third and fourth
parameters, since there is no term to add to rootset, recovering the
behaviour of R11B-5
(see otp_src_R11B-5/erts/emulator/beam/erl_gc.c, line 314).
(Includes assembly language fixes and code style improvements
suggested by Mikael Pettersson.)
Diffstat (limited to 'erts/emulator/hipe/hipe_sparc_glue.S')
-rw-r--r-- | erts/emulator/hipe/hipe_sparc_glue.S | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/erts/emulator/hipe/hipe_sparc_glue.S b/erts/emulator/hipe/hipe_sparc_glue.S index d1af5c43f5..73cefd4896 100644 --- a/erts/emulator/hipe/hipe_sparc_glue.S +++ b/erts/emulator/hipe/hipe_sparc_glue.S @@ -333,6 +333,8 @@ nbif_3_gc_after_bif: st TEMP_RA, [P+P_NRA] st NSP, [P+P_NSP] mov RA, TEMP_RA + mov 0, %o3 /* Pass 0 in arity */ + mov 0, %o2 /* Pass NULL in regs */ mov %o0, %o1 call erts_gc_after_bif_call mov P, %o0 /* delay slot */ |