From 5440c67570b9d436301cdb2f8234730a1fa8287f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Tue, 21 Apr 2015 17:47:01 +0200
Subject: Teach beam_trim to handle map instructions

---
 lib/compiler/src/beam_trim.erl | 6 ++++++
 1 file changed, 6 insertions(+)

(limited to 'lib')

diff --git a/lib/compiler/src/beam_trim.erl b/lib/compiler/src/beam_trim.erl
index fad9c42584..8181e555a1 100644
--- a/lib/compiler/src/beam_trim.erl
+++ b/lib/compiler/src/beam_trim.erl
@@ -172,6 +172,10 @@ remap([{bif,Name,Fail,Ss,D}|Is], Map, Acc) ->
 remap([{gc_bif,Name,Fail,Live,Ss,D}|Is], Map, Acc) ->
     I = {gc_bif,Name,Fail,Live,[Map(S) || S <- Ss],Map(D)},
     remap(Is, Map, [I|Acc]);
+remap([{get_map_elements,Fail,M,{list,L0}}|Is], Map, Acc) ->
+    L = [Map(E) || E <- L0],
+    I = {get_map_elements,Fail,Map(M),{list,L}},
+    remap(Is, Map, [I|Acc]);
 remap([{bs_init,Fail,Info,Live,Ss0,Dst0}|Is], Map, Acc) ->
     Ss = [Map(Src) || Src <- Ss0],
     Dst = Map(Dst0),
@@ -275,6 +279,8 @@ frame_size([{kill,_}|Is], Safe) ->
     frame_size(Is, Safe);
 frame_size([{make_fun2,_,_,_,_}|Is], Safe) ->
     frame_size(Is, Safe);
+frame_size([{get_map_elements,{f,L},_,_}|Is], Safe) ->
+    frame_size_branch(L, Is, Safe);
 frame_size([{deallocate,N}|_], _) -> N;
 frame_size([{line,_}|Is], Safe) ->
     frame_size(Is, Safe);
-- 
cgit v1.2.3