diff options
author | Jeffrey Yasskin <jyasskin@google.com> | 2009-10-27 00:03:05 +0000 |
---|---|---|
committer | Jeffrey Yasskin <jyasskin@google.com> | 2009-10-27 00:03:05 +0000 |
commit | 7a9034c4db248fe8b8cb82762881b51b221988d3 (patch) | |
tree | 730343fa9578d5b2ea0637b4cf330070aab8c0f7 /unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp | |
parent | f2becca90b832cc02345fba063b9b439b2be33ad (diff) |
Automatically do the equivalent of freeMachineCodeForFunction(F) when F is
being destroyed. This allows users to run global optimizations like globaldce
even after some functions have been jitted.
This patch also removes the Function* parameter to
JITEventListener::NotifyFreeingMachineCode() since it can cause that to be
called when the Function is partially destroyed. This change will be even more
helpful later when I think we'll want to allow machine code to actually outlive
its Function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85182 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp')
-rw-r--r-- | unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp b/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp index 87e3280cf9..dda86fbe39 100644 --- a/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp +++ b/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp @@ -37,7 +37,6 @@ struct FunctionEmittedEvent { }; struct FunctionFreedEvent { unsigned Index; - const Function *F; void *Code; }; @@ -56,8 +55,8 @@ struct RecordingJITEventListener : public JITEventListener { EmittedEvents.push_back(Event); } - virtual void NotifyFreeingMachineCode(const Function &F, void *OldPtr) { - FunctionFreedEvent Event = {NextIndex++, &F, OldPtr}; + virtual void NotifyFreeingMachineCode(void *OldPtr) { + FunctionFreedEvent Event = {NextIndex++, OldPtr}; FreedEvents.push_back(Event); } }; @@ -116,11 +115,9 @@ TEST_F(JITEventListenerTest, Simple) { << " contain some bytes."; EXPECT_EQ(2U, Listener.FreedEvents[0].Index); - EXPECT_EQ(F1, Listener.FreedEvents[0].F); EXPECT_EQ(F1_addr, Listener.FreedEvents[0].Code); EXPECT_EQ(3U, Listener.FreedEvents[1].Index); - EXPECT_EQ(F2, Listener.FreedEvents[1].F); EXPECT_EQ(F2_addr, Listener.FreedEvents[1].Code); F1->eraseFromParent(); @@ -164,7 +161,6 @@ TEST_F(JITEventListenerTest, MultipleListenersDontInterfere) { << " contain some bytes."; EXPECT_EQ(1U, Listener1.FreedEvents[0].Index); - EXPECT_EQ(F2, Listener1.FreedEvents[0].F); EXPECT_EQ(F2_addr, Listener1.FreedEvents[0].Code); // Listener 2. @@ -186,7 +182,6 @@ TEST_F(JITEventListenerTest, MultipleListenersDontInterfere) { << " contain some bytes."; EXPECT_EQ(2U, Listener2.FreedEvents[0].Index); - EXPECT_EQ(F2, Listener2.FreedEvents[0].F); EXPECT_EQ(F2_addr, Listener2.FreedEvents[0].Code); // Listener 3. @@ -201,7 +196,6 @@ TEST_F(JITEventListenerTest, MultipleListenersDontInterfere) { << " contain some bytes."; EXPECT_EQ(1U, Listener3.FreedEvents[0].Index); - EXPECT_EQ(F2, Listener3.FreedEvents[0].F); EXPECT_EQ(F2_addr, Listener3.FreedEvents[0].Code); F1->eraseFromParent(); @@ -228,7 +222,6 @@ TEST_F(JITEventListenerTest, MatchesMachineCodeInfo) { EXPECT_EQ(MCI.size(), Listener.EmittedEvents[0].Size); EXPECT_EQ(1U, Listener.FreedEvents[0].Index); - EXPECT_EQ(F, Listener.FreedEvents[0].F); EXPECT_EQ(F_addr, Listener.FreedEvents[0].Code); } |