anchor.diff:  bytes_to_32(B4,B3,B2,B1) ->
     (B4 bsl 24) bor (B3 bsl 16) bor (B2 bsl 8) bor B1.
   
  -write_words([W|Rest], Addr) ->
  -  write_words(Rest, write_word(Addr, W));
  -write_words([], Addr) when is_integer(Addr) -> true.
  +write_words([W|Rest], Addr, WriteWord) ->
  +  write_words(Rest, WriteWord(Addr, W), WriteWord);
  +write_words([], Addr, _) when is_integer(Addr) -> true.
   
   write_bytes([B|Rest], Addr) ->
     hipe_bifs:write_u8(Addr, B),
  
positive.code: 
  %%----------------------------------------------------------------
  %%
  mk_trampoline_map([], []) -> []; % archs not using trampolines
  mk_trampoline_map(CalleeMFAs, Trampolines) ->
    SizeofLong =
      case erlang:system_info(hipe_architecture) of
        amd64 -> 8;
        ppc64 -> 8;
        _ -> 4
      end,
    mk_trampoline_map(tuple_size(CalleeMFAs), CalleeMFAs,
  		    Trampolines, SizeofLong, gb_trees:empty()).
  
  
negative.code: %%----------------------------------------------------------------
  %% Patch references to code labels in the data segment.
  %%
  patch_consts(Labels, DataAddress, CodeAddress, WriteWord) ->
    lists:foreach(fun (L) ->
  		    patch_label_or_labels(L, DataAddress, CodeAddress,
                                            WriteWord)
  		end, Labels).
  
  patch_label_or_labels({Pos,Offset}, DataAddress, CodeAddress, WriteWord) ->
    ?ASSERT(assert_local_patch(CodeAddress+Offset)),
    WriteWord(DataAddress+Pos, CodeAddress+Offset);
  patch_label_or_labels({sorted,Base,UnOrderdList}, DataAddress, CodeAddress,
                        WriteWord) ->
    sort_and_write(UnOrderdList, Base, DataAddress, CodeAddress, WriteWord).
  
  sort_and_write(UnOrderdList, Base, DataAddress, CodeAddress, WriteWord) ->
    WriteAndInc =
      fun ({_, Offset}, DataPos) ->
  	?ASSERT(assert_local_patch(CodeAddress+Offset)),
  	WriteWord(DataPos, CodeAddress+Offset)
      end,
    lists:foldl(WriteAndInc, DataAddress+Base, sort_on_representation(UnOrderdList)).
  
  