[LLVMdev] misc. patches
Reid Spencer
reid at x10sys.com
Mon Dec 13 08:21:58 PST 2004
Morten,
Patches applied! Thanks.
I'm not sure that the clear.patch has general applicability but I
applied it anyway since you seem to need this convenience function.
Reid.
On Mon, 2004-12-13 at 05:30, Morten Ofstad wrote:
> Hi,
>
> here are some minor patches that for various reasons I've not submitted
> yet - I'm just trying to clear my list of differences before christmas...
>
> First of all the clear.patch file contains a patch that enables the JIT
> to drop all global mappings. I need this because when I have N threads I
> compile N different versions of my functions using different memory
> areas for global variables - it's also useful in other dynamic
> recompilation scenarios.
>
> Next the warnings.patch file contains some minor modification to make
> Visual Studio shut up (and possibly to make LLVM more 64bit friendly). I
> chose to typedef a size_type on the LLVM containers that try to mimic
> the std:: containers, while in the other case I just made a simple cast.
>
> Finally the leaks.patch file contains a destructor for the
> JITMemoryManager that frees system memory and a minor modification to
> how one particular singleton object gets instantiated in CommandLine.cpp
> to stop the VS leak detector complaining.
>
> m.
>
> ______________________________________________________________________
> Index: lib/ExecutionEngine/JIT/JITEmitter.cpp
> ===================================================================
> RCS file: /var/cvs/llvm/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp,v
> retrieving revision 1.59
> diff -u -r1.59 JITEmitter.cpp
> --- lib/ExecutionEngine/JIT/JITEmitter.cpp 5 Dec 2004 07:19:16 -0000 1.59
> +++ lib/ExecutionEngine/JIT/JITEmitter.cpp 6 Dec 2004 10:34:21 -0000
> @@ -51,6 +51,7 @@
> unsigned char *CurStubPtr, *CurFunctionPtr;
> public:
> JITMemoryManager();
> + ~JITMemoryManager();
>
> inline unsigned char *allocateStub(unsigned StubSize);
> inline unsigned char *startFunctionBody();
> @@ -69,6 +70,10 @@
> CurStubPtr = CurFunctionPtr = FunctionBase;
> }
>
> +JITMemoryManager::~JITMemoryManager() {
> + sys::Memory::ReleaseRWX(MemBlock);
> +}
> +
> unsigned char *JITMemoryManager::allocateStub(unsigned StubSize) {
> CurStubPtr -= StubSize;
> if (CurStubPtr < MemBase) {
> Index: lib/Support/Timer.cpp
> ===================================================================
> RCS file: /var/cvs/llvm/llvm/lib/Support/Timer.cpp,v
> retrieving revision 1.33
> diff -u -r1.33 Timer.cpp
> --- lib/Support/Timer.cpp 19 Nov 2004 04:59:07 -0000 1.33
> +++ lib/Support/Timer.cpp 3 Dec 2004 14:30:24 -0000
> @@ -33,12 +33,10 @@
> // problem is that a Statistic<> object gets destroyed, which ends up calling
> // 'GetLibSupportInfoOutputFile()' (below), which calls this function.
> // LibSupportInfoOutputFilename used to be a global variable, but sometimes it
> -// would get destroyed before the Statistic, causing havoc to ensue. We "fix"
> -// this by creating the string the first time it is needed and never destroying
> -// it.
> +// would get destroyed before the Statistic, causing havoc to ensue.
> static std::string &getLibSupportInfoOutputFilename() {
> - static std::string *LibSupportInfoOutputFilename = new std::string();
> - return *LibSupportInfoOutputFilename;
> + static std::string LibSupportInfoOutputFilename;
> + return LibSupportInfoOutputFilename;
> }
>
> namespace {
>
> ______________________________________________________________________
> Index: include/llvm/Type.h
> ===================================================================
> RCS file: /var/cvs/llvm/llvm/include/llvm/Type.h,v
> retrieving revision 1.67
> diff -u -r1.67 Type.h
> --- include/llvm/Type.h 19 Nov 2004 16:39:04 -0000 1.67
> +++ include/llvm/Type.h 13 Dec 2004 13:11:57 -0000
> @@ -246,7 +246,8 @@
>
> /// getNumContainedTypes - Return the number of types in the derived type.
> ///
> - unsigned getNumContainedTypes() const { return ContainedTys.size(); }
> + typedef std::vector<PATypeHandle>::size_type size_type;
> + size_type getNumContainedTypes() const { return ContainedTys.size(); }
>
> //===--------------------------------------------------------------------===//
> // Static members exported by the Type class itself. Useful for getting
> Index: include/llvm/Value.h
> ===================================================================
> RCS file: /var/cvs/llvm/llvm/include/llvm/Value.h,v
> retrieving revision 1.66
> diff -u -r1.66 Value.h
> --- include/llvm/Value.h 27 Oct 2004 16:14:47 -0000 1.66
> +++ include/llvm/Value.h 6 Dec 2004 11:24:02 -0000
> @@ -89,8 +89,9 @@
> //
> typedef UseListIteratorWrapper use_iterator;
> typedef UseListConstIteratorWrapper use_const_iterator;
> + typedef iplist<Use>::size_type size_type;
>
> - unsigned use_size() const { return Uses.size(); }
> + size_type use_size() const { return Uses.size(); }
> bool use_empty() const { return Uses.empty(); }
> use_iterator use_begin() { return Uses.begin(); }
> use_const_iterator use_begin() const { return Uses.begin(); }
> Index: include/llvm/Support/CommandLine.h
> ===================================================================
> RCS file: /var/cvs/llvm/llvm/include/llvm/Support/CommandLine.h,v
> retrieving revision 1.40
> diff -u -r1.40 CommandLine.h
> --- include/llvm/Support/CommandLine.h 5 Dec 2004 05:17:34 -0000 1.40
> +++ include/llvm/Support/CommandLine.h 6 Dec 2004 10:08:04 -0000
> @@ -435,7 +435,7 @@
> typedef DataType parser_data_type;
>
> // Implement virtual functions needed by generic_parser_base
> - unsigned getNumOptions() const { return Values.size(); }
> + unsigned getNumOptions() const { return (unsigned)Values.size(); }
> const char *getOption(unsigned N) const { return Values[N].first; }
> const char *getDescription(unsigned N) const {
> return Values[N].second.second;
>
> ______________________________________________________________________
> Index: include/llvm/ExecutionEngine/ExecutionEngine.h
> ===================================================================
> RCS file: /var/cvs/llvm/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h,v
> retrieving revision 1.30
> diff -u -r1.30 ExecutionEngine.h
> --- include/llvm/ExecutionEngine/ExecutionEngine.h 22 Nov 2004 16:54:54 -0000 1.30
> +++ include/llvm/ExecutionEngine/ExecutionEngine.h 3 Dec 2004 13:50:59 -0000
> @@ -93,6 +93,13 @@
> }
> }
>
> + /// clearAllGlobalMappings - Clear all global mappings and start over again
> + /// use in dynamic compilation scenarios when you want to move globals
> + void clearAllGlobalMappings() {
> + GlobalAddressMap.clear();
> + GlobalAddressReverseMap.clear();
> + }
> +
> /// updateGlobalMapping - Replace an existing mapping for GV with a new
> /// address. This updates both maps as required.
> void updateGlobalMapping(const GlobalValue *GV, void *Addr) {
>
> ______________________________________________________________________
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20041213/a1eb77c4/attachment.sig>
More information about the llvm-dev
mailing list