[llvm] r191804 - This threads SectionName through the allocateCodeSection/allocateDataSection APIs, both in C++ and C land.
Eric Christopher
echristo at gmail.com
Tue Oct 1 18:57:42 PDT 2013
Cool deal. Thanks.
-eric
On Tue, Oct 1, 2013 at 6:47 PM, Filip Pizlo <fpizlo at apple.com> wrote:
> Fix landed in r191806.
>
> -Filip
>
>
> On Oct 1, 2013, at 6:32 PM, Eric Christopher <echristo at gmail.com> wrote:
>
> On Tue, Oct 1, 2013 at 6:30 PM, Filip Pizlo <fpizlo at apple.com> wrote:
>
> Yup, working on a fix. The main delay is that I'm building lldb for the
> first time, ever; the fix itself is trivial.
>
>
> Yep. :)
>
> Is it better in situations like this to roll out and then reland once a fix
> is in place? Or is hurrying with a fix, like I'm doing, an acceptable
> approach?
>
>
> A hurry up fix is fine, if it's going to be more than 20-30 minutes
> you'd probably want to revert to make sure that the bot doesn't start
> failing magically in the mean time. Revert and reapply is cheap as far
> as the version control system is concerned, but if it takes just as
> long to do that as to fix what broke...
>
> Thanks!
>
> -eric
>
> -Filip
>
>
> On Oct 1, 2013, at 6:27 PM, Eric Christopher <echristo at gmail.com> wrote:
>
> FWIW this appears to have broken lldb.
>
> http://lab.llvm.org:8011/builders/lldb-x86_64-debian-clang/builds/7750
>
> -eric
>
> On Tue, Oct 1, 2013 at 5:59 PM, Filip Pizlo <fpizlo at apple.com> wrote:
>
> Author: fpizlo
> Date: Tue Oct 1 19:59:25 2013
> New Revision: 191804
>
> URL: http://llvm.org/viewvc/llvm-project?rev=191804&view=rev
> Log:
> This threads SectionName through the allocateCodeSection/allocateDataSection
> APIs, both in C++ and C land.
> It's useful for the memory managers that are allocating a section to know
> what the name of the section is.
> At a minimum, this is useful for low-level debugging - it's customary for
> JITs to be able to tell you what
> memory they allocated, and as part of any such dump, they should be able to
> tell you some meta-data about
> what each allocation is for. This allows clients that supply their own
> memory managers to do this.
> Additionally, we also envision the SectionName being useful for passing
> meta-data from within LLVM to an LLVM
> client.
>
> This changes both the C and C++ APIs, and all of the clients of those APIs
> within LLVM. I'm assuming that
> it's safe to change the C++ API because that API is allowed to change. I'm
> assuming that it's safe to change
> the C API because we haven't shipped the API in a release yet (LLVM 3.3
> doesn't include the MCJIT memory
> management C API).
>
>
> Modified:
> llvm/trunk/include/llvm-c/ExecutionEngine.h
> llvm/trunk/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
> llvm/trunk/include/llvm/ExecutionEngine/SectionMemoryManager.h
> llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
> llvm/trunk/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
> llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.h
> llvm/trunk/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
> llvm/trunk/tools/lli/RecordingMemoryManager.cpp
> llvm/trunk/tools/lli/RecordingMemoryManager.h
> llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp
> llvm/trunk/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp
> llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp
> llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
> llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITMemoryManagerTest.cpp
>
> Modified: llvm/trunk/include/llvm-c/ExecutionEngine.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/ExecutionEngine.h?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm-c/ExecutionEngine.h (original)
> +++ llvm/trunk/include/llvm-c/ExecutionEngine.h Tue Oct 1 19:59:25 2013
> @@ -171,13 +171,14 @@ void *LLVMGetPointerToGlobal(LLVMExecuti
>
> /*===-- Operations on memory managers
> -------------------------------------===*/
>
> -typedef uint8_t *(*LLVMMemoryManagerAllocateCodeSectionCallback)(void
> *Opaque,
> - uintptr_t Size, unsigned
> Alignment,
> - unsigned SectionID);
> -typedef uint8_t *(*LLVMMemoryManagerAllocateDataSectionCallback)(void
> *Opaque,
> - uintptr_t Size, unsigned
> Alignment,
> - unsigned SectionID,
> LLVMBool IsReadOnly);
> -typedef LLVMBool (*LLVMMemoryManagerFinalizeMemoryCallback)(void *Opaque,
> char **ErrMsg);
> +typedef uint8_t *(*LLVMMemoryManagerAllocateCodeSectionCallback)(
> + void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + const char *SectionName);
> +typedef uint8_t *(*LLVMMemoryManagerAllocateDataSectionCallback)(
> + void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + const char *SectionName, LLVMBool IsReadOnly);
> +typedef LLVMBool (*LLVMMemoryManagerFinalizeMemoryCallback)(
> + void *Opaque, char **ErrMsg);
> typedef void (*LLVMMemoryManagerDestroyCallback)(void *Opaque);
>
> /**
>
> Modified: llvm/trunk/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/RTDyldMemoryManager.h?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/ExecutionEngine/RTDyldMemoryManager.h (original)
> +++ llvm/trunk/include/llvm/ExecutionEngine/RTDyldMemoryManager.h Tue Oct 1
> 19:59:25 2013
> @@ -38,14 +38,16 @@ public:
> /// executable code. The SectionID is a unique identifier assigned by the
> JIT
> /// engine, and optionally recorded by the memory manager to access a
> loaded
> /// section.
> - virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID) = 0;
> -
> + virtual uint8_t *allocateCodeSection(
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName) = 0;
> +
> /// Allocate a memory block of (at least) the given size suitable for
> data.
> /// The SectionID is a unique identifier assigned by the JIT engine, and
> /// optionally recorded by the memory manager to access a loaded section.
> - virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID, bool IsReadOnly)
> = 0;
> + virtual uint8_t *allocateDataSection(
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName, bool IsReadOnly) = 0;
>
> /// Register the EH frames with the runtime so that c++ exceptions work.
> virtual void registerEHFrames(StringRef SectionData);
>
> Modified: llvm/trunk/include/llvm/ExecutionEngine/SectionMemoryManager.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/SectionMemoryManager.h?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/ExecutionEngine/SectionMemoryManager.h
> (original)
> +++ llvm/trunk/include/llvm/ExecutionEngine/SectionMemoryManager.h Tue Oct
> 1 19:59:25 2013
> @@ -49,7 +49,8 @@ public:
> /// The value of \p Alignment must be a power of two. If \p Alignment is
> zero
> /// a default alignment of 16 will be used.
> virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID);
> + unsigned SectionID,
> + StringRef SectionName);
>
> /// \brief Allocates a memory block of (at least) the given size suitable
> for
> /// executable code.
> @@ -58,6 +59,7 @@ public:
> /// a default alignment of 16 will be used.
> virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> unsigned SectionID,
> + StringRef SectionName,
> bool isReadOnly);
>
> /// \brief Update section-specific memory permissions and other
> attributes.
>
> Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp Tue Oct 1
> 19:59:25 2013
> @@ -351,12 +351,13 @@ public:
> void *Opaque);
> virtual ~SimpleBindingMemoryManager();
>
> - virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID);
> -
> - virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID,
> - bool isReadOnly);
> + virtual uint8_t *allocateCodeSection(
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName);
> +
> + virtual uint8_t *allocateDataSection(
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName, bool isReadOnly);
>
> virtual bool finalizeMemory(std::string *ErrMsg);
>
> @@ -384,13 +385,17 @@ SimpleBindingMemoryManager::~SimpleBindi
> }
>
> uint8_t *SimpleBindingMemoryManager::allocateCodeSection(
> - uintptr_t Size, unsigned Alignment, unsigned SectionID) {
> - return Functions.AllocateCodeSection(Opaque, Size, Alignment, SectionID);
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName) {
> + return Functions.AllocateCodeSection(Opaque, Size, Alignment, SectionID,
> + SectionName.str().c_str());
> }
>
> uint8_t *SimpleBindingMemoryManager::allocateDataSection(
> - uintptr_t Size, unsigned Alignment, unsigned SectionID, bool isReadOnly)
> {
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName, bool isReadOnly) {
> return Functions.AllocateDataSection(Opaque, Size, Alignment, SectionID,
> + SectionName.str().c_str(),
> isReadOnly);
> }
>
>
> Modified: llvm/trunk/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JIT/JITMemoryManager.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/JIT/JITMemoryManager.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/JIT/JITMemoryManager.cpp Tue Oct 1
> 19:59:25 2013
> @@ -464,7 +464,7 @@ namespace {
>
> /// allocateCodeSection - Allocate memory for a code section.
> uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID) {
> + unsigned SectionID, StringRef SectionName)
> {
> // Grow the required block size to account for the block header
> Size += sizeof(*CurBlock);
>
> @@ -510,7 +510,8 @@ namespace {
>
> /// allocateDataSection - Allocate memory for a data section.
> uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID, bool IsReadOnly) {
> + unsigned SectionID, StringRef SectionName,
> + bool IsReadOnly) {
> return (uint8_t*)DataAllocator.Allocate(Size, Alignment);
> }
>
>
> Modified: llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.h?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.h (original)
> +++ llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.h Tue Oct 1 19:59:25 2013
> @@ -35,14 +35,15 @@ public:
>
> // Functions deferred to client memory manager
> virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID) {
> - return ClientMM->allocateCodeSection(Size, Alignment, SectionID);
> + unsigned SectionID, StringRef
> SectionName) {
> + return ClientMM->allocateCodeSection(Size, Alignment, SectionID,
> SectionName);
> }
>
> virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID, bool IsReadOnly)
> {
> + unsigned SectionID, StringRef
> SectionName,
> + bool IsReadOnly) {
> return ClientMM->allocateDataSection(Size, Alignment,
> - SectionID, IsReadOnly);
> + SectionID, SectionName,
> IsReadOnly);
> }
>
> virtual void registerEHFrames(StringRef SectionData) {
>
> Modified: llvm/trunk/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp Tue Oct 1
> 19:59:25 2013
> @@ -19,9 +19,10 @@
> namespace llvm {
>
> uint8_t *SectionMemoryManager::allocateDataSection(uintptr_t Size,
> - unsigned Alignment,
> - unsigned SectionID,
> - bool IsReadOnly) {
> + unsigned Alignment,
> + unsigned SectionID,
> + StringRef SectionName,
> + bool IsReadOnly) {
> if (IsReadOnly)
> return allocateSection(RODataMem, Size, Alignment);
> return allocateSection(RWDataMem, Size, Alignment);
> @@ -29,7 +30,8 @@ uint8_t *SectionMemoryManager::allocateD
>
> uint8_t *SectionMemoryManager::allocateCodeSection(uintptr_t Size,
> unsigned Alignment,
> - unsigned SectionID) {
> + unsigned SectionID,
> + StringRef SectionName) {
> return allocateSection(CodeMem, Size, Alignment);
> }
>
>
> Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp Tue Oct 1
> 19:59:25 2013
> @@ -182,8 +182,8 @@ void RuntimeDyldImpl::emitCommonSymbols(
> SymbolTableMap &SymbolTable) {
> // Allocate memory for the section
> unsigned SectionID = Sections.size();
> - uint8_t *Addr = MemMgr->allocateDataSection(TotalSize, sizeof(void*),
> - SectionID, false);
> + uint8_t *Addr = MemMgr->allocateDataSection(
> + TotalSize, sizeof(void*), SectionID, StringRef(), false);
> if (!Addr)
> report_fatal_error("Unable to allocate memory for common symbols!");
> uint64_t Offset = 0;
> @@ -278,8 +278,9 @@ unsigned RuntimeDyldImpl::emitSection(Ob
> if (IsRequired) {
> Allocate = DataSize + StubBufSize;
> Addr = IsCode
> - ? MemMgr->allocateCodeSection(Allocate, Alignment, SectionID)
> - : MemMgr->allocateDataSection(Allocate, Alignment, SectionID,
> IsReadOnly);
> + ? MemMgr->allocateCodeSection(Allocate, Alignment, SectionID, Name)
> + : MemMgr->allocateDataSection(Allocate, Alignment, SectionID, Name,
> + IsReadOnly);
> if (!Addr)
> report_fatal_error("Unable to allocate section memory!");
>
>
> Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp Tue Oct 1
> 19:59:25 2013
> @@ -1337,8 +1337,8 @@ void RuntimeDyldELF::finalizeLoad() {
> // Allocate memory for the section
> unsigned SectionID = Sections.size();
> size_t TotalSize = numGOTEntries * getGOTEntrySize();
> - uint8_t *Addr = MemMgr->allocateDataSection(TotalSize,
> getGOTEntrySize(),
> - SectionID, false);
> + uint8_t *Addr = MemMgr->allocateDataSection(
> + TotalSize, getGOTEntrySize(), SectionID, ".got", false);
> if (!Addr)
> report_fatal_error("Unable to allocate memory for GOT!");
> Sections.push_back(SectionEntry(".got", Addr, TotalSize, 0));
>
> Modified: llvm/trunk/tools/lli/RecordingMemoryManager.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lli/RecordingMemoryManager.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/tools/lli/RecordingMemoryManager.cpp (original)
> +++ llvm/trunk/tools/lli/RecordingMemoryManager.cpp Tue Oct 1 19:59:25 2013
> @@ -27,7 +27,8 @@ RecordingMemoryManager::~RecordingMemory
> }
>
> uint8_t *RecordingMemoryManager::
> -allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID)
> {
> +allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName) {
> // The recording memory manager is just a local copy of the remote target.
> // The alignment requirement is just stored here for later use. Regular
> // heap storage is sufficient here, but we're using mapped memory to work
> @@ -39,7 +40,8 @@ allocateCodeSection(uintptr_t Size, unsi
>
> uint8_t *RecordingMemoryManager::
> allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID, bool IsReadOnly) {
> + unsigned SectionID, StringRef SectionName,
> + bool IsReadOnly) {
> // The recording memory manager is just a local copy of the remote target.
> // The alignment requirement is just stored here for later use. Regular
> // heap storage is sufficient here, but we're using mapped memory to work
>
> Modified: llvm/trunk/tools/lli/RecordingMemoryManager.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lli/RecordingMemoryManager.h?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/tools/lli/RecordingMemoryManager.h (original)
> +++ llvm/trunk/tools/lli/RecordingMemoryManager.h Tue Oct 1 19:59:25 2013
> @@ -50,10 +50,11 @@ public:
> const_code_iterator code_end() const { return AllocatedCodeMem.end(); }
>
> uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID);
> + unsigned SectionID, StringRef SectionName);
>
> uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID, bool
> IsReadOnly);
> + unsigned SectionID, StringRef SectionName,
> + bool IsReadOnly);
>
> void *getPointerToNamedFunction(const std::string &Name,
> bool AbortOnFailure = true);
>
> Modified: llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp (original)
> +++ llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp Tue Oct 1 19:59:25 2013
> @@ -60,9 +60,10 @@ public:
> SmallVector<sys::MemoryBlock, 16> DataMemory;
>
> uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID);
> + unsigned SectionID, StringRef SectionName);
> uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID, bool IsReadOnly);
> + unsigned SectionID, StringRef SectionName,
> + bool IsReadOnly);
>
> virtual void *getPointerToNamedFunction(const std::string &Name,
> bool AbortOnFailure = true) {
> @@ -80,7 +81,8 @@ public:
>
> uint8_t *TrivialMemoryManager::allocateCodeSection(uintptr_t Size,
> unsigned Alignment,
> - unsigned SectionID) {
> + unsigned SectionID,
> + StringRef SectionName) {
> sys::MemoryBlock MB = sys::Memory::AllocateRWX(Size, 0, 0);
> FunctionMemory.push_back(MB);
> return (uint8_t*)MB.base();
> @@ -89,6 +91,7 @@ uint8_t *TrivialMemoryManager::allocateC
> uint8_t *TrivialMemoryManager::allocateDataSection(uintptr_t Size,
> unsigned Alignment,
> unsigned SectionID,
> + StringRef SectionName,
> bool IsReadOnly) {
> sys::MemoryBlock MB = sys::Memory::AllocateRWX(Size, 0, 0);
> DataMemory.push_back(MB);
>
> Modified: llvm/trunk/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp
> (original)
> +++ llvm/trunk/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp Tue
> Oct 1 19:59:25 2013
> @@ -281,11 +281,11 @@ TEST(JITMemoryManagerTest, TestManyStubs
> TEST(JITMemoryManagerTest, AllocateSection) {
> OwningPtr<JITMemoryManager> MemMgr(
> JITMemoryManager::CreateDefaultMemManager());
> - uint8_t *code1 = MemMgr->allocateCodeSection(256, 0, 1);
> - uint8_t *data1 = MemMgr->allocateDataSection(256, 16, 2, true);
> - uint8_t *code2 = MemMgr->allocateCodeSection(257, 32, 3);
> - uint8_t *data2 = MemMgr->allocateDataSection(256, 64, 4, false);
> - uint8_t *code3 = MemMgr->allocateCodeSection(258, 64, 5);
> + uint8_t *code1 = MemMgr->allocateCodeSection(256, 0, 1, StringRef());
> + uint8_t *data1 = MemMgr->allocateDataSection(256, 16, 2, StringRef(),
> true);
> + uint8_t *code2 = MemMgr->allocateCodeSection(257, 32, 3, StringRef());
> + uint8_t *data2 = MemMgr->allocateDataSection(256, 64, 4, StringRef(),
> false);
> + uint8_t *code3 = MemMgr->allocateCodeSection(258, 64, 5, StringRef());
>
> EXPECT_NE((uint8_t*)0, code1);
> EXPECT_NE((uint8_t*)0, code2);
>
> Modified: llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp (original)
> +++ llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp Tue Oct 1 19:59:25
> 2013
> @@ -135,13 +135,17 @@ public:
> EndFunctionBodyCall(F, FunctionStart, FunctionEnd));
> Base->endFunctionBody(F, FunctionStart, FunctionEnd);
> }
> - virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID, bool IsReadOnly)
> {
> - return Base->allocateDataSection(Size, Alignment, SectionID,
> IsReadOnly);
> + virtual uint8_t *allocateDataSection(
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName, bool IsReadOnly) {
> + return Base->allocateDataSection(
> + Size, Alignment, SectionID, SectionName, IsReadOnly);
> }
> - virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
> - unsigned SectionID) {
> - return Base->allocateCodeSection(Size, Alignment, SectionID);
> + virtual uint8_t *allocateCodeSection(
> + uintptr_t Size, unsigned Alignment, unsigned SectionID,
> + StringRef SectionName) {
> + return Base->allocateCodeSection(
> + Size, Alignment, SectionID, SectionName);
> }
> virtual bool finalizeMemory(std::string *ErrMsg) { return false; }
> virtual uint8_t *allocateSpace(intptr_t Size, unsigned Alignment) {
>
> Modified: llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp (original)
> +++ llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp Tue Oct 1
> 19:59:25 2013
> @@ -28,18 +28,20 @@ static bool didCallAllocateCodeSection;
>
> static uint8_t *roundTripAllocateCodeSection(void *object, uintptr_t size,
> unsigned alignment,
> - unsigned sectionID) {
> + unsigned sectionID,
> + const char *sectionName) {
> didCallAllocateCodeSection = true;
> return static_cast<SectionMemoryManager*>(object)->allocateCodeSection(
> - size, alignment, sectionID);
> + size, alignment, sectionID, sectionName);
> }
>
> static uint8_t *roundTripAllocateDataSection(void *object, uintptr_t size,
> unsigned alignment,
> unsigned sectionID,
> + const char *sectionName,
> LLVMBool isReadOnly) {
> return static_cast<SectionMemoryManager*>(object)->allocateDataSection(
> - size, alignment, sectionID, isReadOnly);
> + size, alignment, sectionID, sectionName, isReadOnly);
> }
>
> static LLVMBool roundTripFinalizeMemory(void *object, char **errMsg) {
>
> Modified:
> llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITMemoryManagerTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITMemoryManagerTest.cpp?rev=191804&r1=191803&r2=191804&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITMemoryManagerTest.cpp
> (original)
> +++ llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITMemoryManagerTest.cpp
> Tue Oct 1 19:59:25 2013
> @@ -19,10 +19,10 @@ namespace {
> TEST(MCJITMemoryManagerTest, BasicAllocations) {
> OwningPtr<SectionMemoryManager> MemMgr(new SectionMemoryManager());
>
> - uint8_t *code1 = MemMgr->allocateCodeSection(256, 0, 1);
> - uint8_t *data1 = MemMgr->allocateDataSection(256, 0, 2, true);
> - uint8_t *code2 = MemMgr->allocateCodeSection(256, 0, 3);
> - uint8_t *data2 = MemMgr->allocateDataSection(256, 0, 4, false);
> + uint8_t *code1 = MemMgr->allocateCodeSection(256, 0, 1, "");
> + uint8_t *data1 = MemMgr->allocateDataSection(256, 0, 2, "", true);
> + uint8_t *code2 = MemMgr->allocateCodeSection(256, 0, 3, "");
> + uint8_t *data2 = MemMgr->allocateDataSection(256, 0, 4, "", false);
>
> EXPECT_NE((uint8_t*)0, code1);
> EXPECT_NE((uint8_t*)0, code2);
> @@ -52,10 +52,10 @@ TEST(MCJITMemoryManagerTest, BasicAlloca
> TEST(MCJITMemoryManagerTest, LargeAllocations) {
> OwningPtr<SectionMemoryManager> MemMgr(new SectionMemoryManager());
>
> - uint8_t *code1 = MemMgr->allocateCodeSection(0x100000, 0, 1);
> - uint8_t *data1 = MemMgr->allocateDataSection(0x100000, 0, 2, true);
> - uint8_t *code2 = MemMgr->allocateCodeSection(0x100000, 0, 3);
> - uint8_t *data2 = MemMgr->allocateDataSection(0x100000, 0, 4, false);
> + uint8_t *code1 = MemMgr->allocateCodeSection(0x100000, 0, 1, "");
> + uint8_t *data1 = MemMgr->allocateDataSection(0x100000, 0, 2, "", true);
> + uint8_t *code2 = MemMgr->allocateCodeSection(0x100000, 0, 3, "");
> + uint8_t *data2 = MemMgr->allocateDataSection(0x100000, 0, 4, "", false);
>
> EXPECT_NE((uint8_t*)0, code1);
> EXPECT_NE((uint8_t*)0, code2);
> @@ -91,8 +91,8 @@ TEST(MCJITMemoryManagerTest, ManyAllocat
> for (unsigned i = 0; i < 10000; ++i) {
> const bool isReadOnly = i % 2 == 0;
>
> - code[i] = MemMgr->allocateCodeSection(32, 0, 1);
> - data[i] = MemMgr->allocateDataSection(32, 0, 2, isReadOnly);
> + code[i] = MemMgr->allocateCodeSection(32, 0, 1, "");
> + data[i] = MemMgr->allocateDataSection(32, 0, 2, "", isReadOnly);
>
> for (unsigned j = 0; j < 32; j++) {
> code[i][j] = 1 + (i % 254);
> @@ -130,8 +130,8 @@ TEST(MCJITMemoryManagerTest, ManyVariedA
> bool isReadOnly = i % 3 == 0;
> unsigned Align = 8 << (i % 4);
>
> - code[i] = MemMgr->allocateCodeSection(CodeSize, Align, i);
> - data[i] = MemMgr->allocateDataSection(DataSize, Align, i + 10000,
> + code[i] = MemMgr->allocateCodeSection(CodeSize, Align, i, "");
> + data[i] = MemMgr->allocateDataSection(DataSize, Align, i + 10000, "",
> isReadOnly);
>
> for (unsigned j = 0; j < CodeSize; j++) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
More information about the llvm-commits
mailing list