dvander@4013: // vim: set ts=8 sts=2 sw=2 tw=99 et: dvander@2226: #ifndef _INCLUDE_SOURCEPAWN_JIT2_FUNCTION_H_ dvander@2226: #define _INCLUDE_SOURCEPAWN_JIT2_FUNCTION_H_ dvander@2226: dvander@2226: #include dvander@4031: #include dvander@4013: dvander@4013: struct LoopEdge dvander@4013: { dvander@4013: uint32_t offset; dvander@4013: int32_t disp32; dvander@4013: }; dvander@2226: dvander@2226: class JitFunction dvander@2226: { dvander@4013: public: dvander@4013: JitFunction(void *entry_addr, cell_t pcode_offs, LoopEdge *edges, uint32_t nedges); dvander@4013: ~JitFunction(); dvander@4013: dvander@4013: public: dvander@4013: void *GetEntryAddress() const; dvander@4013: cell_t GetPCodeAddress() const; dvander@4013: uint32_t NumLoopEdges() const { dvander@4013: return nedges_; dvander@4013: } dvander@4013: const LoopEdge &GetLoopEdge(size_t i) const { dvander@4013: assert(i < nedges_); dvander@4013: return edges_[i]; dvander@4013: } dvander@4013: dvander@4013: private: dvander@4013: void *m_pEntryAddr; dvander@4013: cell_t m_PcodeOffs; dvander@4013: LoopEdge *edges_; dvander@4013: uint32_t nedges_; dvander@2226: }; dvander@2226: dvander@2226: #endif //_INCLUDE_SOURCEPAWN_JIT2_FUNCTION_H_