mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Add a method for allocating space from the code buffer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28064 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a11a92976a
commit
1f4549f35c
@ -140,6 +140,28 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
/// allocateSpace - Allocate a block of space in the current output buffer,
|
||||
/// returning null (and setting conditions to indicate buffer overflow) on
|
||||
/// failure. Alignment is the alignment in bytes of the buffer desired.
|
||||
void *allocateSpace(intptr_t Size, unsigned Alignment) {
|
||||
if (Alignment == 0) Alignment = 1;
|
||||
// Move the current buffer ptr up to the specified alignment.
|
||||
CurBufferPtr =
|
||||
(unsigned char*)(((intptr_t)CurBufferPtr+Alignment-1) & ~(Alignment-1));
|
||||
void *Result = CurBufferPtr;
|
||||
|
||||
// Allocate the space.
|
||||
CurBufferPtr += Size;
|
||||
|
||||
// Check for buffer overflow.
|
||||
if (CurBufferPtr >= BufferEnd) {
|
||||
CurBufferPtr = BufferEnd;
|
||||
Result = 0;
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
||||
/// getCurrentPCValue - This returns the address that the next emitted byte
|
||||
/// will be output to.
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user