Add a method for allocating space from the code buffer.

llvm-svn: 28064
This commit is contained in:
Chris Lattner 2006-05-02 22:51:03 +00:00
parent 233391f5f5
commit ee1a61810c
1 changed files with 22 additions and 0 deletions

View File

@ -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.
///