timotheecour added inline comments.

================
Comment at: source/Plugins/Language/D/DLanguage.cpp:108
+
+    auto fun0=lib2->getFun<decltype(d_initialize)>("d_initialize");
+    (*fun0)();
----------------
johanengelen wrote:
> timotheecour wrote:
> > johanengelen wrote:
> > > Would it help to initialize druntime using a static module constructor in 
> > > the lldbdplugin dll?
> > > (then you can also do de-init using a static module destructor)
> > I don't really like static module constructor because it adds cyclic 
> > dependencies, see for vibe.d moving away from it: 
> > https://forum.dlang.org/post/qtabwblpaqwpteyst...@forum.dlang.org
> > explicit calling `d_initialize` is simple enough.
> > 
> > 
> > 
> Module ctors don't add cyclic dependencies by themselves. There is also no 
> danger of that here.
> How do you de-initialize druntime? (without de-init, there is a big mem leak)
> Module ctors don't add cyclic dependencies by themselves. There is also no 
> danger of that here.

* We can have cyclic dependencies but not when Module ctors are involved; see 
previous argument I made with vibe.d, or other threads (eg 
https://forum.dlang.org/post/rrcshskphugsvksao...@forum.dlang.org).

* Also, current code allows for liblldbplugin.d to be imported from another 
module whereas it would cause complications if it contained a module ctor that 
would initialize druntime.

calling `d_initialize` as I'm doing works fine.



================
Comment at: source/Plugins/Language/D/DLanguage.cpp:108
+
+    auto fun0=lib2->getFun<decltype(d_initialize)>("d_initialize");
+    (*fun0)();
----------------
timotheecour wrote:
> johanengelen wrote:
> > timotheecour wrote:
> > > johanengelen wrote:
> > > > Would it help to initialize druntime using a static module constructor 
> > > > in the lldbdplugin dll?
> > > > (then you can also do de-init using a static module destructor)
> > > I don't really like static module constructor because it adds cyclic 
> > > dependencies, see for vibe.d moving away from it: 
> > > https://forum.dlang.org/post/qtabwblpaqwpteyst...@forum.dlang.org
> > > explicit calling `d_initialize` is simple enough.
> > > 
> > > 
> > > 
> > Module ctors don't add cyclic dependencies by themselves. There is also no 
> > danger of that here.
> > How do you de-initialize druntime? (without de-init, there is a big mem 
> > leak)
> > Module ctors don't add cyclic dependencies by themselves. There is also no 
> > danger of that here.
> 
> * We can have cyclic dependencies but not when Module ctors are involved; see 
> previous argument I made with vibe.d, or other threads (eg 
> https://forum.dlang.org/post/rrcshskphugsvksao...@forum.dlang.org).
> 
> * Also, current code allows for liblldbplugin.d to be imported from another 
> module whereas it would cause complications if it contained a module ctor 
> that would initialize druntime.
> 
> calling `d_initialize` as I'm doing works fine.
> 
> How do you de-initialize druntime? (without de-init, there is a big mem leak)

There is no memory leak because d_initialize once (using c++11 static 
initialization pattern) and is intended to last for duration of application; so 
druntime will be initialized only once, upon 1st use.

I've however added d_terminate in case a future PR wants to de-initialize 
druntime (eg in DLanguage::Terminate)


https://reviews.llvm.org/D44321



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to