I think my optimism may have got the better of me. The CLR has a mechanism to
handle internal references, but I don't believe this answers your question or
solves your issue. The CLI GC handles interior references to objects even in C#
for "byref" paramaters, but only for interior references on the stack. Here are
some potentially useful references:
(see the bottom of this for comments on Rotor)
http://blogs.msdn.com/joelpob/archive/2004/02/26/80776.aspxhttp://ksrenevasan.blogspot.com/2005/08/incomplete-rotor-gc-notes.htmlPartition I, section 12.4.1.5.2, it talks about byref and lifetimes.
Partition II, section 12, it talks about interfaces and mentions MI.
----
However, it occurs to me that in C++ MI you may need interior pointers that are
not on the stack. Your concern may be well-founded, as the snippets I can find
only talk about Rotor tracing interior references which are on the stack.
Perhaps someone with more knowledge can offer a more complete (or accurate)
answer.
-- Juro Jon wrote:
> I don't know much of CLI specification so I may be missing something
> trivial. Java GC assumes that all pointers point to some "header" to
> identity the memory object. Since Java is single inheritance a pointer
> always points to the head of a full object, but for C++ multiple inheritance
> it may be pointing to an embedded part and need to be adjusted to find the
> full object. Are you saying that the CLI GC or typesystem has some way to do
> this adjustment?
_______________________________________________
Mono-gc-list maillist -
Mono-gc-list@...
http://lists.ximian.com/mailman/listinfo/mono-gc-list