[PATCH] D74300: [ORC] Add generic initializer/deinitializer support.

Stefan Gränitz via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 16 17:06:59 PST 2020


sgraenitz added a comment.

Will initializer symbols be looked up and run again when calling initialize() a second time on a JITDylib? More specifically, is it possible for a client to break this process down and initialize specific (or simply all uninitialized) MaterializationUnits? Otherwise, wouldn't it mean modules cannot be added (and initialized) to a JITDylib after initializiation (without re-init)?

  lli orc-lazy             can we also do this?
  
  add all modules          add some modules <--
  run all initializers     run their initializers <--
  lookup                   lookup
  materialize              materialize
  execute                  execute, 
  call-through             call-through
  lookup                   lookup
  materialize              add more modules <--
  execute                  run their initializers <--
  ...                      materialize
                           execute



> Can we think of any use for gating on initializers having run, or should we rip this part back out for now to simplify the patch?

Not sure if this is related?



================
Comment at: llvm/tools/lli/lli.cpp:927
   // Run any static constructors.
-  ExitOnErr(J->runConstructors());
+  ExitOnErr(J->initialize(J->getMainJITDylib()));
 
----------------
If we called this again, would it re-initialize everything?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74300/new/

https://reviews.llvm.org/D74300





More information about the llvm-commits mailing list