substitutions

Martin von Loewis loewis at informatik.hu-berlin.de
Wed Apr 19 18:10:46 UTC 2000


> But we don't have the string 2C12C3 in the encoding, if C1::C2 already
> appear before, we need to reuse (let say that C1 is a long enough name)
> the C1 preffix, so we only have S<nc1>2C2 appearing in the encoding.
> And probably some map indicating that C1::C3 is encoded with that
> string.

IMO, the back-references always refer to the original expanded names,
in some interal form. Conceptually, you have C1::C3 in the compression
table, not 2C12C3 (and neither S<n>_2C3).

> 4Temp 
>   I
>     N 6C1xxxx 2C2 E 
>     N S1_ 2C3 ES
>     i
>     N S2_ 2C4 E // S2_ -> S1_ 2C3, let's call S2_ S<C13n>_ instead.
>   E

> Now imagine, instead of "int", we have something very 
> big that generate a 5 digit (or more) C13n (sure, it's 
> a big number, it won't append very often) so that 
> strlen( "S<C13n>_2C4" ) > strlen ("S1_ 2C3")

> At that point, I don't see what to write instead of "S<C13n>_2C4".

The procedure is as follows:

1. Do you have a compression for C1xxxx::C3::C4? No.
2. Do you have a compression for C1xxxx::C3? Yes, S<C13n>.
   Is it shorter than 6C1xxxx2C3? Let's assume it isn't.
3. Do you have a compression for C1xxxx? Yes, S<C13n+3> (correct me if
   I'm wrong). Is it shorter than C1xxxx? Certainly not.
4. Use the uncompressed version, i.e.
   N6C1xxxx2C32C4E, putting new entries into the compression list,
   namely
   C1xxxx
   C1xxxx::C3
   C1xxxx::C3::C4
   which can be done as you encode them, after finding out that you
   cannot compress them.

Regards,
Martin




More information about the cxx-abi-dev mailing list