[ Date Prev][ Date Next][ Thread Prev][ Thread Next][ Date Index][ Thread Index]
Mangling: Back-referencing in compressions
- To: cxx-abi@xxxxxxxxxxxxxxxxxxxx
- Subject: Mangling: Back-referencing in compressions
- From: Martin von Loewis <loewis@xxxxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 21 Mar 2000 23:06:18 +0100
I still find the description of the compression scheme confusing,
especially the sentence:
All substitutable components are so numbered, including those that
have been substituted already, but the substitution occurs only if
"S<number>_" is strictly shorter than the unsubstituted encoding.
What I don't understand here is what exactly goes into the catalog, if
substitution occurs. Given
void foo(Outer::Inner::x, Outer::Inner::y, Outer::Other)
I get (starting with least recent)
Outer
Outer::Inner
Outer::Inner::x
so I can express the second parameter as S2_::y. After that, do I have a
catalog of
Outer, Outer::Inner, Outer::Inner::x
Outer, Outer::Inner, Outer::Inner::y
(ie. in case of substitution, all subcomponents went into the
catalog), or do I get
Outer, Outer::Inner, Outer::Inner::x
Outer::Inner, Outer::Inner::y
(i.e. only the entire substituted component goes into the
catalog). Depending on that, the external name would be either
_Z3fooN5Outer5Inner1xENS2_1yENS3_5OtherE or
_Z3fooN5Outer5Inner1xENS2_1yENS5_5OtherE
I think it would be sufficient to put only the entire component into
the catalog (*); its components are already in the catalog (further
back), so the can be identified as well.
Regards,
Martin
(*) This is different from what I wrote in an earlier message; I now
think there is no point in putting all elements of a deep structure
into the catalog, since that only results in a larger catalog, with no
benefit.
|