diff options
author | Björn Gustavsson <bjorn@erlang.org> | 2021-10-13 09:23:11 +0200 |
---|---|---|
committer | Björn Gustavsson <bjorn@erlang.org> | 2021-10-14 04:59:22 +0200 |
commit | d4310157c0e14db24139e687c72762062395affe (patch) | |
tree | e4b5addbcd84fff8fda36d90c41bf6ab111401e8 | |
parent | 32580e8943ae3ad46d788ab29d03169cf606bae0 (diff) | |
download | erlang-d4310157c0e14db24139e687c72762062395affe.tar.gz |
fixup! compiler: Add a new instruction for creating binaries
-rw-r--r-- | lib/compiler/src/beam_validator.erl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/compiler/src/beam_validator.erl b/lib/compiler/src/beam_validator.erl index 050dc563eb..5ba6083516 100644 --- a/lib/compiler/src/beam_validator.erl +++ b/lib/compiler/src/beam_validator.erl @@ -999,13 +999,16 @@ vi({bs_create_bin,{f,Fail},Heap,Live,Unit,Dst,{list,List}}, Vst0) -> verify_live(Live, Vst0), verify_y_init(Vst0), verify_create_bin_list(List, Vst0), - Vst = heap_alloc(Heap, Vst0), + Vst = prune_x_regs(Live, Vst0), branch(Fail, Vst, + fun(FailVst0) -> + heap_alloc(0, FailVst0) + end, fun(SuccVst0) -> SuccVst1 = update_create_bin_list(List, SuccVst0), - SuccVst = prune_x_regs(Live, SuccVst1), + SuccVst = heap_alloc(Heap, SuccVst1), create_term(#t_bitstring{size_unit=Unit}, bs_create_bin, [], Dst, - SuccVst, SuccVst1) + SuccVst) end); vi({bs_init2,{f,Fail},Sz,Heap,Live,_,Dst}, Vst0) -> verify_live(Live, Vst0), |