|  | //===------ JITDwarfEmitter.h - Write dwarf tables into memory ------------===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This file defines a JITDwarfEmitter object that is used by the JIT to | 
|  | // write dwarf tables to memory. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLVM_EXECUTION_ENGINE_JIT_DWARFEMITTER_H | 
|  | #define LLVM_EXECUTION_ENGINE_JIT_DWARFEMITTER_H | 
|  |  | 
|  | namespace llvm { | 
|  |  | 
|  | class Function; | 
|  | class JITCodeEmitter; | 
|  | class MachineFunction; | 
|  | class MachineModuleInfo; | 
|  | class MachineMove; | 
|  | class MCAsmInfo; | 
|  | class TargetData; | 
|  | class TargetMachine; | 
|  | class TargetRegisterInfo; | 
|  |  | 
|  | class JITDwarfEmitter { | 
|  | const TargetData* TD; | 
|  | JITCodeEmitter* JCE; | 
|  | const TargetRegisterInfo* RI; | 
|  | const MCAsmInfo *MAI; | 
|  | MachineModuleInfo* MMI; | 
|  | JIT& Jit; | 
|  | bool stackGrowthDirection; | 
|  |  | 
|  | unsigned char* EmitExceptionTable(MachineFunction* MF, | 
|  | unsigned char* StartFunction, | 
|  | unsigned char* EndFunction) const; | 
|  |  | 
|  | void EmitFrameMoves(intptr_t BaseLabelPtr, | 
|  | const std::vector<MachineMove> &Moves) const; | 
|  |  | 
|  | unsigned char* EmitCommonEHFrame(const Function* Personality) const; | 
|  |  | 
|  | unsigned char* EmitEHFrame(const Function* Personality, | 
|  | unsigned char* StartBufferPtr, | 
|  | unsigned char* StartFunction, | 
|  | unsigned char* EndFunction, | 
|  | unsigned char* ExceptionTable) const; | 
|  |  | 
|  | public: | 
|  |  | 
|  | JITDwarfEmitter(JIT& jit); | 
|  |  | 
|  | unsigned char* EmitDwarfTable(MachineFunction& F, | 
|  | JITCodeEmitter& JCE, | 
|  | unsigned char* StartFunction, | 
|  | unsigned char* EndFunction, | 
|  | unsigned char* &EHFramePtr); | 
|  |  | 
|  |  | 
|  | void setModuleInfo(MachineModuleInfo* Info) { | 
|  | MMI = Info; | 
|  | } | 
|  | }; | 
|  |  | 
|  |  | 
|  | } // end namespace llvm | 
|  |  | 
|  | #endif // LLVM_EXECUTION_ENGINE_JIT_DWARFEMITTER_H |