diff options
author | Björn Gustavsson <bjorn@erlang.org> | 2021-10-15 05:07:18 +0200 |
---|---|---|
committer | Björn Gustavsson <bjorn@erlang.org> | 2021-10-15 05:07:18 +0200 |
commit | 1da312e1dae516d04ef100fa9f5bd37c6b8966af (patch) | |
tree | dd768413c58be92d40b2c59f6e8a140f6e835d97 | |
parent | 08f397986125047900a18275cc04a8c440f1c5ce (diff) | |
download | erlang-1da312e1dae516d04ef100fa9f5bd37c6b8966af.tar.gz |
wip
-rw-r--r-- | erts/emulator/beam/emu/beam_emu.c | 7 | ||||
-rw-r--r-- | erts/emulator/beam/emu/bs_instrs.tab | 8 |
2 files changed, 8 insertions, 7 deletions
diff --git a/erts/emulator/beam/emu/beam_emu.c b/erts/emulator/beam/emu/beam_emu.c index ec71dd2088..dd35859559 100644 --- a/erts/emulator/beam/emu/beam_emu.c +++ b/erts/emulator/beam/emu/beam_emu.c @@ -717,7 +717,7 @@ erts_beam_jump_table(void) void erts_prepare_bs_construct_fail_info(Process* c_p, const BeamInstr* p, Eterm reason, Eterm Info) { - Eterm* hp = HeapFragOnlyAlloc(c_p, MAP3_SZ+3+1); + Eterm* hp; Eterm cause_tuple; Eterm op; Eterm error_info; @@ -758,8 +758,9 @@ erts_prepare_bs_construct_fail_info(Process* c_p, const BeamInstr* p, Eterm reas break; } - cause_tuple = TUPLE3(hp, make_small(segment), op, Info); - hp += 4; + hp = HeapFragOnlyAlloc(c_p, MAP3_SZ+4+1); + cause_tuple = TUPLE4(hp, make_small(segment), op, Info, NIL); + hp += 5; error_info = MAP3(hp, am_cause, cause_tuple, am_function, am_format_bs_fail, diff --git a/erts/emulator/beam/emu/bs_instrs.tab b/erts/emulator/beam/emu/bs_instrs.tab index bcd46052af..5202096f9c 100644 --- a/erts/emulator/beam/emu/bs_instrs.tab +++ b/erts/emulator/beam/emu/bs_instrs.tab @@ -333,13 +333,13 @@ i_new_bs_put_float(Fail, Sz, Flags, Src) { Eterm flags = $Flags; Sint _size; $BS_GET_UNCHECKED_FIELD_SIZE(sz, (flags >> 3), $BADARG($Fail), _size); - if (!erts_new_bs_put_float(c_p, ($Src), _size, flags)) { + if (is_value(erts_new_bs_put_float(c_p, ($Src), _size, flags))) { $BADARG($Fail); } } i_new_bs_put_float_imm(Fail, Sz, Flags, Src) { - if (!erts_new_bs_put_float(c_p, ($Src), ($Sz), ($Flags))) { + if (is_value(erts_new_bs_put_float(c_p, ($Src), ($Sz), ($Flags)))) { $BADARG($Fail); } } @@ -1211,14 +1211,14 @@ i_bs_create_bin(Fail, Alloc, Live, Dst, N) { $BS_LOAD_FLAGS(p, flags); $BS_LOAD_SIZE(p, Size); $BS_GET_UNCHECKED_FIELD_SIZE(Size, unit, $BADARG($Fail), _size); - if (!erts_new_bs_put_float(c_p, Src, _size, flags)) { + if (is_value(erts_new_bs_put_float(c_p, Src, _size, flags))) { $BS_FAIL_INFO($Fail, BADARG, c_p->fvalue); } break; case BSC_FLOAT_FIXED_SIZE: $BS_LOAD_FLAGS(p, flags); $BS_LOAD_FIXED_SIZE(p, Size); - if (!erts_new_bs_put_float(c_p, Src, Size, flags)) { + if (is_value(erts_new_bs_put_float(c_p, Src, Size, flags))) { $BS_FAIL_INFO($Fail, BADARG, c_p->fvalue); } break; |