anchor.diff:  -define(TAG_HEADER_REFC_BIN,((16#8 bsl ?TAG_PRIMARY_SIZE) bor ?TAG_PRIMARY_HEADER)).
   -define(TAG_HEADER_HEAP_BIN,((16#9 bsl ?TAG_PRIMARY_SIZE) bor ?TAG_PRIMARY_HEADER)).
   -define(TAG_HEADER_SUB_BIN, ((16#A bsl ?TAG_PRIMARY_SIZE) bor ?TAG_PRIMARY_HEADER)).
  +-define(TAG_HEADER_HASHMAP, ((16#B bsl ?TAG_PRIMARY_SIZE) bor ?TAG_PRIMARY_HEADER)).
   -define(TAG_HEADER_EXTERNAL_PID, ((16#C bsl ?TAG_PRIMARY_SIZE) bor ?TAG_PRIMARY_HEADER)).
   -define(TAG_HEADER_EXTERNAL_PORT,((16#D bsl ?TAG_PRIMARY_SIZE) bor ?TAG_PRIMARY_HEADER)).
   -define(TAG_HEADER_EXTERNAL_REF, ((16#E bsl ?TAG_PRIMARY_SIZE) bor ?TAG_PRIMARY_HEADER)).
  
positive.code: test_bitstr(X, TrueLab, FalseLab, Pred) ->
    Tmp = hipe_rtl:mk_new_reg_gcsafe(),
    HalfTrueLab = hipe_rtl:mk_new_label(),
    Mask = ?TAG_HEADER_MASK - ?BINARY_XXX_MASK,
    [test_is_boxed(X, hipe_rtl:label_name(HalfTrueLab), FalseLab, Pred),
     HalfTrueLab,
     get_header(Tmp, X),
     mask_and_compare(Tmp, Mask, ?TAG_HEADER_REFC_BIN, TrueLab, FalseLab, Pred)].
  
  test_binary(X, TrueLab, FalseLab, Pred) ->
    Tmp1 = hipe_rtl:mk_new_reg_gcsafe(),
    Tmp2 = hipe_rtl:mk_new_reg_gcsafe(),
    IsBoxedLab = hipe_rtl:mk_new_label(),
    IsBitStrLab = hipe_rtl:mk_new_label(),
    IsSubBinLab =  hipe_rtl:mk_new_label(),
    Mask = ?TAG_HEADER_MASK - ?BINARY_XXX_MASK,
  
negative.code:    IsBoxedLab,
     get_header(Tmp1, X),
     mask_and_compare(Tmp1, Mask, ?TAG_HEADER_REFC_BIN,
  		    hipe_rtl:label_name(AndNotHashmapLab), FalseLab, Pred),
     AndNotHashmapLab,
     mask_and_compare(Tmp1, ?TAG_HEADER_MASK, ?TAG_HEADER_HASHMAP,
  		    FalseLab, hipe_rtl:label_name(IsBitStrLab), Pred),
     IsBitStrLab,
     mask_and_compare(Tmp1, ?TAG_HEADER_MASK, ?TAG_HEADER_SUB_BIN,
  		    hipe_rtl:label_name(IsSubBinLab), TrueLab, 0.5),
  