1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

MC: virtualise EmitWindowsUnwindTables

This makes EmitWindowsUnwindTables a virtual function and lowers the
implementation of the function to the X86WinCOFFStreamer.  This method is a
target specific operation.  This enables making the behaviour target dependent
by isolating it entirely to the target specific streamer.

llvm-svn: 214664
This commit is contained in:
Saleem Abdulrasool 2014-08-03 18:51:26 +00:00
parent 7b26bbada1
commit ca07b08496
3 changed files with 8 additions and 5 deletions

View File

@ -208,7 +208,7 @@ protected:
return CurrentWinFrameInfo;
}
void EmitWindowsUnwindTables();
virtual void EmitWindowsUnwindTables();
virtual void EmitRawTextImpl(StringRef String);

View File

@ -601,10 +601,6 @@ void MCStreamer::EmitRawText(const Twine &T) {
}
void MCStreamer::EmitWindowsUnwindTables() {
if (!getNumWinFrameInfos())
return;
MCWin64EHUnwindEmitter::Emit(*this);
}
void MCStreamer::Finish() {

View File

@ -20,6 +20,7 @@ public:
: MCWinCOFFStreamer(C, AB, *CE, OS) { }
void EmitWinEHHandlerData() override;
void EmitWindowsUnwindTables() override;
void FinishImpl() override;
};
@ -31,6 +32,12 @@ void X86WinCOFFStreamer::EmitWinEHHandlerData() {
MCWin64EHUnwindEmitter::EmitUnwindInfo(*this, getCurrentWinFrameInfo());
}
void X86WinCOFFStreamer::EmitWindowsUnwindTables() {
if (!getNumWinFrameInfos())
return;
MCWin64EHUnwindEmitter::Emit(*this);
}
void X86WinCOFFStreamer::FinishImpl() {
EmitFrames(nullptr);
EmitWindowsUnwindTables();