4
%% Copyright Ericsson AB 2007-2009. All Rights Reserved.
4
%% Copyright Ericsson AB 2007-2011. All Rights Reserved.
6
6
%% The contents of this file are subject to the Erlang Public License,
7
7
%% Version 1.1, (the "License"); you may not use this file except in
222
222
reverse(Acc, [I|Is]);
223
223
remap([{call_ext_last,Ar,Name,N}|Is], Map, Acc) ->
224
224
I = {call_ext_last,Ar,Name,Map({frame_size,N})},
225
reverse(Acc, [I|Is]).
225
reverse(Acc, [I|Is]);
226
remap([{line,_}=I|Is], Map, Acc) ->
227
remap(Is, Map, [I|Acc]).
227
229
remap_block([{set,Ds0,Ss0,Info}|Is], Map, Acc) ->
228
230
Ds = [Map(D) || D <- Ds0],
230
232
remap_block(Is, Map, [{set,Ds,Ss,Info}|Acc]);
231
233
remap_block([], _, Acc) -> reverse(Acc).
233
safe_labels([{label,L},{badmatch,{Tag,_}}|Is], Acc) when Tag =/= y ->
234
safe_labels(Is, [L|Acc]);
235
safe_labels([{label,L},{case_end,{Tag,_}}|Is], Acc) when Tag =/= y ->
236
safe_labels(Is, [L|Acc]);
237
safe_labels([{label,L},if_end|Is], Acc) ->
235
safe_labels([{label,L},{line,_},{badmatch,{Tag,_}}|Is], Acc) when Tag =/= y ->
236
safe_labels(Is, [L|Acc]);
237
safe_labels([{label,L},{line,_},{case_end,{Tag,_}}|Is], Acc) when Tag =/= y ->
238
safe_labels(Is, [L|Acc]);
239
safe_labels([{label,L},{line,_},if_end|Is], Acc) ->
238
240
safe_labels(Is, [L|Acc]);
239
241
safe_labels([{label,L},
240
242
{block,[{set,[{x,0}],[{Tag,_}],move}]},
241
244
{call_ext,1,{extfunc,erlang,error,1}}|Is], Acc) when Tag =/= y ->
242
245
safe_labels(Is, [L|Acc]);
243
246
safe_labels([_|Is], Acc) ->
321
324
frame_size([{deallocate,N}|_], _) -> N;
322
325
frame_size([{call_last,_,_,N}|_], _) -> N;
323
326
frame_size([{call_ext_last,_,_,N}|_], _) -> N;
327
frame_size([{line,_}|Is], Safe) ->
328
frame_size(Is, Safe);
324
329
frame_size([_|_], _) -> throw(not_possible).
326
331
frame_size_branch(0, Is, Safe) ->