anchor.diff:  %% XXX: It appears this is used for inserting both code addresses
   %% and other data. In HiPE, code addresses are still 32-bit on
   %% some 64-bit machines.
  -write_word(DataAddress, DataWord) ->
  -  case erlang:system_info(hipe_architecture) of
  -    amd64 ->
  -      hipe_bifs:write_u64(DataAddress, DataWord),
  -      DataAddress+8;
  -    ppc64 ->
  -      hipe_bifs:write_u64(DataAddress, DataWord),
  -      DataAddress+8;
  -    _ ->
  -      hipe_bifs:write_u32(DataAddress, DataWord),
  -      DataAddress+4
  +write_word_fun(WordSize) ->
  +  case WordSize of
  +    8 ->
  +      fun (DataAddress, DataWord) ->
  +          hipe_bifs:write_u64(DataAddress, DataWord),
  +          DataAddress+8
  +      end;
  +    4 ->
  +      fun (DataAddress, DataWord) ->
  +          hipe_bifs:write_u32(DataAddress, DataWord),
  +          DataAddress+4
  +      end
     end.
   
   %%--------------------------------------------------------------------
  
positive.code: %% memory, and produces a ConstMap2 mapping each constant's ConstNo to
  %% its runtime address, tagged if the constant is a term.
  %%
  create_data_segment(DataAlign, DataSize, DataList) ->
    %%io:format("create_data_segment: \nDataAlign: ~p\nDataSize: ~p\nDataList: ~p\n",[DataAlign,DataSize,DataList]),
    DataAddress = hipe_bifs:alloc_data(DataAlign, DataSize),
    enter_data(DataList, [], DataAddress, DataSize).
  
  enter_data(List, ConstMap2, DataAddress, DataSize) ->
    case List of
      [ConstNo,Offset,Type,Data|Rest] when is_integer(Offset) ->
        %%?msg("Const ~w\n",[[ConstNo,Offset,Type,Data]]),
        ?ASSERT((Offset >= 0) and (Offset =< DataSize)),
        Res = enter_datum(Type, Data, DataAddress+Offset),
        enter_data(Rest, [{ConstNo,Res}|ConstMap2], DataAddress, DataSize);
      [] ->
        {DataAddress, ConstMap2}
    end.
  
  enter_datum(Type, Data, Address) ->
    case ?EXT2CONST_TYPE(Type) of
      term ->
        %% Address is unused for terms
        hipe_bifs:term_to_word(hipe_bifs:merge_term(Data));
      sorted_block ->
        L = lists:sort([hipe_bifs:term_to_word(Term) || Term <- Data]),
        write_words(L, Address),
        Address;
      block ->
        case Data of
  
negative.code: 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, 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),
  