From 1f4549f35c69376a07360bd57ff06ed8f636d153 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 2 May 2006 22:51:03 +0000 Subject: 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 --- include/llvm/CodeGen/MachineCodeEmitter.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'include/llvm/CodeGen/MachineCodeEmitter.h') diff --git a/include/llvm/CodeGen/MachineCodeEmitter.h b/include/llvm/CodeGen/MachineCodeEmitter.h index 58e232d341..d26d7e773f 100644 --- a/include/llvm/CodeGen/MachineCodeEmitter.h +++ b/include/llvm/CodeGen/MachineCodeEmitter.h @@ -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. /// -- cgit v1.2.3