<div dir="ltr">Ping.  Anyone with knowledge of detailed knowledge of the ManagedStatic implementation?<div><br></div><div style>The use-case we are looking at is getting rid of llvm_shutdown() by cleaning up the ManagedStatic data when the global destructors run.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Feb 9, 2013 at 5:25 PM, Justin Holewinski <span dir="ltr"><<a href="mailto:justin.holewinski@gmail.com" target="_blank">justin.holewinski@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I'm curious about the design rationale for how ManagedStatic instances are cleaned up, and I'm hoping someone can shed some light on it.<div>
<br></div><div>Currently, ManagedStatic objects are cleaned up when llvm_shutdown() traverses the global list of initialized objects and calls destroy() on each.  This leads to two questions:</div>
<div><br></div><div>1. An assertion enforces that the objects are deleted in reverse order of allocation.  Is there any hard requirement for this, or is it only because of the way the linked list is created?</div><div><br>

</div><div>2. Would anything change (functionally) if we simply called destroy() in the ManagedStatic destructor?  Wouldn't this be safer than relying on a client to call llvm_shutdown()?  It seems like the whole purpose of llvm_shutdown() is to allow clients to free the data allocated by ManagedStatic instances.  Could we not just give them an option, but by default clean up during global destruction?<span class="HOEnZb"><font color="#888888"><br clear="all">

<div><br></div>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div>
</div>