mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-04 01:42:09 +00:00
Materialize the module before releasing it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8668 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dd7036d19a
commit
fdf148ea71
@ -11,17 +11,16 @@ class Function;
|
||||
class Module;
|
||||
|
||||
class AbstractModuleProvider {
|
||||
Module *M;
|
||||
|
||||
protected:
|
||||
Module *TheModule;
|
||||
AbstractModuleProvider();
|
||||
|
||||
public:
|
||||
virtual ~AbstractModuleProvider();
|
||||
|
||||
/// getModule - returns the module this provider is encapsulating
|
||||
/// getModule - returns the module this provider is encapsulating.
|
||||
///
|
||||
Module* getModule() { return M; }
|
||||
Module* getModule() { return TheModule; }
|
||||
|
||||
/// materializeFunction - make sure the given function is fully read.
|
||||
///
|
||||
@ -33,7 +32,13 @@ public:
|
||||
|
||||
/// releaseModule - no longer delete the Module* when provider is destroyed.
|
||||
///
|
||||
Module* releaseModule() { Module *tempM = M; M = 0; return tempM; }
|
||||
virtual Module* releaseModule() {
|
||||
// Since we're losing control of this Module, we must hand it back complete
|
||||
materializeModule();
|
||||
Module *tempM = TheModule;
|
||||
TheModule = 0;
|
||||
return tempM;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user