mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-01-04 01:21:45 +00:00
Extend RTDyld API to enable optionally precomputing the total amount of memory
required for all sections in a module. This can be useful when targets or
code-models place strict requirements on how sections must be laid out
in memory.
If RTDyldMemoryManger::needsToReserveAllocationSpace() is overridden to return
true then the JIT will call the following method on the memory manager, which
can be used to preallocate the necessary memory.
void RTDyldMemoryManager::reserveAllocationSpace(uintptr_t CodeSize,
uintptr_t DataSizeRO,
uintptr_t DataSizeRW)
Patch by Vaidas Gasiunas. Thanks very much Viadas!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201259 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -52,6 +52,20 @@ public:
|
||||
uintptr_t Size, unsigned Alignment, unsigned SectionID,
|
||||
StringRef SectionName, bool IsReadOnly) = 0;
|
||||
|
||||
/// Inform the memory manager about the total amount of memory required to
|
||||
/// allocate all sections to be loaded:
|
||||
/// \p CodeSize - the total size of all code sections
|
||||
/// \p DataSizeRO - the total size of all read-only data sections
|
||||
/// \p DataSizeRW - the total size of all read-write data sections
|
||||
///
|
||||
/// Note that by default the callback is disabled. To enable it
|
||||
/// redefine the method needsToReserveAllocationSpace to return true.
|
||||
virtual void reserveAllocationSpace(
|
||||
uintptr_t CodeSize, uintptr_t DataSizeRO, uintptr_t DataSizeRW) { }
|
||||
|
||||
/// Override to return true to enable the reserveAllocationSpace callback.
|
||||
virtual bool needsToReserveAllocationSpace() { return false; }
|
||||
|
||||
/// Register the EH frames with the runtime so that c++ exceptions work.
|
||||
///
|
||||
/// \p Addr parameter provides the local address of the EH frame section
|
||||
|
||||
Reference in New Issue
Block a user