summaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/JITCodeEmitter.h
diff options
context:
space:
mode:
authorJeffrey Yasskin <jyasskin@google.com>2009-12-15 22:42:46 +0000
committerJeffrey Yasskin <jyasskin@google.com>2009-12-15 22:42:46 +0000
commit32d7e6ebde29faeea75ecb718b4281414b0eea0b (patch)
treee028decfe52b4e0740391a657d01b1bef54c2492 /include/llvm/CodeGen/JITCodeEmitter.h
parent6be413dd64c359f03b91321defceef9d641f1235 (diff)
downloadllvm-32d7e6ebde29faeea75ecb718b4281414b0eea0b.tar.gz
llvm-32d7e6ebde29faeea75ecb718b4281414b0eea0b.tar.bz2
llvm-32d7e6ebde29faeea75ecb718b4281414b0eea0b.tar.xz
Change indirect-globals to use a dedicated allocIndirectGV. This lets us
remove start/finishGVStub and the BufferState helper class from the MachineCodeEmitter interface. It has the side-effect of not setting the indirect global writable and then executable on ARM, but that shouldn't be necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91464 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/JITCodeEmitter.h')
-rw-r--r--include/llvm/CodeGen/JITCodeEmitter.h28
1 files changed, 5 insertions, 23 deletions
diff --git a/include/llvm/CodeGen/JITCodeEmitter.h b/include/llvm/CodeGen/JITCodeEmitter.h
index ea3e59beab..9c4e5b9670 100644
--- a/include/llvm/CodeGen/JITCodeEmitter.h
+++ b/include/llvm/CodeGen/JITCodeEmitter.h
@@ -68,29 +68,11 @@ public:
///
virtual bool finishFunction(MachineFunction &F) = 0;
- /// startGVStub - This callback is invoked when the JIT needs the address of a
- /// GV (e.g. function) that has not been code generated yet. The StubSize
- /// specifies the total size required by the stub. The BufferState must be
- /// passed to finishGVStub, and start/finish pairs with the same BufferState
- /// must be properly nested.
- ///
- virtual void startGVStub(BufferState &BS, const GlobalValue* GV,
- unsigned StubSize, unsigned Alignment = 1) = 0;
-
- /// startGVStub - This callback is invoked when the JIT needs the address of a
- /// GV (e.g. function) that has not been code generated yet. Buffer points to
- /// memory already allocated for this stub. The BufferState must be passed to
- /// finishGVStub, and start/finish pairs with the same BufferState must be
- /// properly nested.
- ///
- virtual void startGVStub(BufferState &BS, void *Buffer,
- unsigned StubSize) = 0;
-
- /// finishGVStub - This callback is invoked to terminate a GV stub and returns
- /// the start address of the stub. The BufferState must first have been
- /// passed to startGVStub.
- ///
- virtual void *finishGVStub(BufferState &BS) = 0;
+ /// allocIndirectGV - Allocates and fills storage for an indirect
+ /// GlobalValue, and returns the address.
+ virtual void *allocIndirectGV(const GlobalValue *GV,
+ const uint8_t *Buffer, size_t Size,
+ unsigned Alignment) = 0;
/// emitByte - This callback is invoked when a byte needs to be written to the
/// output stream.