diff options
author | Kostis Sagonas <[email protected]> | 2014-03-28 17:08:15 +0100 |
---|---|---|
committer | Kostis Sagonas <[email protected]> | 2014-03-28 17:08:15 +0100 |
commit | 3e8449e112be0fbd06786e14fd07148c1e8f5b53 (patch) | |
tree | 4c8e18c3e75837c5d1bfa74827a9b1443669070f /lib/compiler/src/beam_disasm.erl | |
parent | 8964e0f9430fba4f1827734f8e1551ef7c715d0a (diff) | |
download | otp-3e8449e112be0fbd06786e14fd07148c1e8f5b53.tar.gz otp-3e8449e112be0fbd06786e14fd07148c1e8f5b53.tar.bz2 otp-3e8449e112be0fbd06786e14fd07148c1e8f5b53.zip |
Support the translation of the is_map BEAM instruction to Icode
Diffstat (limited to 'lib/compiler/src/beam_disasm.erl')
-rw-r--r-- | lib/compiler/src/beam_disasm.erl | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/compiler/src/beam_disasm.erl b/lib/compiler/src/beam_disasm.erl index 4bdfe4e0c2..c45596f236 100644 --- a/lib/compiler/src/beam_disasm.erl +++ b/lib/compiler/src/beam_disasm.erl @@ -1030,6 +1030,7 @@ resolve_inst({gc_bif2,Args},Imports,_,_) -> [F,Live,Bif,A1,A2,Reg] = resolve_args(Args), {extfunc,_Mod,BifName,_Arity} = lookup(Bif+1,Imports), {gc_bif,BifName,F,Live,[A1,A2],Reg}; + %% %% New instruction in R14, gc_bif with 3 arguments %% @@ -1146,21 +1147,17 @@ resolve_inst({put_map_assoc,Args},_,_,_) -> [FLbl,Src,Dst,{u,N},{{z,1},{u,_Len},List0}] = Args, List = resolve_args(List0), {put_map_assoc,FLbl,Src,Dst,N,{list,List}}; - resolve_inst({put_map_exact,Args},_,_,_) -> [FLbl,Src,Dst,{u,N},{{z,1},{u,_Len},List0}] = Args, List = resolve_args(List0), {put_map_exact,FLbl,Src,Dst,N,{list,List}}; - -resolve_inst({is_map,Args0},_,_,_) -> +resolve_inst({is_map=I,Args0},_,_,_) -> [FLbl|Args] = resolve_args(Args0), - {test, is_map, FLbl, Args}; - + {test,I,FLbl,Args}; resolve_inst({has_map_fields,Args0},_,_,_) -> [FLbl,Src,{{z,1},{u,_Len},List0}] = Args0, List = resolve_args(List0), {test,has_map_fields,FLbl,Src,{list,List}}; - resolve_inst({get_map_elements,Args0},_,_,_) -> [FLbl,Src,{{z,1},{u,_Len},List0}] = Args0, List = resolve_args(List0), |