| author | Ruben Gonzalez <drifter01620@gmail.com> |
| Thu May 22 09:49:27 2014 -0400 (2014-05-22) | |
| changeset 4378 | 568f4497ef4a |
| parent 4031 | 852cf4415d12 |
| permissions | -rw-r--r-- |
| dvander@4013 | 1 |
// vim: set ts=8 sts=2 sw=2 tw=99 et: |
| dvander@2226 | 2 |
#ifndef _INCLUDE_SOURCEPAWN_JIT2_FUNCTION_H_ |
| dvander@2226 | 3 |
#define _INCLUDE_SOURCEPAWN_JIT2_FUNCTION_H_ |
| dvander@2226 | 4 |
|
| dvander@2226 | 5 |
#include <sp_vm_types.h> |
| dvander@4031 | 6 |
#include <am-vector.h> |
| dvander@4013 | 7 |
|
| dvander@4013 | 8 |
struct LoopEdge |
| dvander@4013 | 9 |
{ |
| dvander@4013 | 10 |
uint32_t offset; |
| dvander@4013 | 11 |
int32_t disp32; |
| dvander@4013 | 12 |
}; |
| dvander@2226 | 13 |
|
| dvander@2226 | 14 |
class JitFunction |
| dvander@2226 | 15 |
{ |
| dvander@4013 | 16 |
public: |
| dvander@4013 | 17 |
JitFunction(void *entry_addr, cell_t pcode_offs, LoopEdge *edges, uint32_t nedges); |
| dvander@4013 | 18 |
~JitFunction(); |
| dvander@4013 | 19 |
|
| dvander@4013 | 20 |
public: |
| dvander@4013 | 21 |
void *GetEntryAddress() const; |
| dvander@4013 | 22 |
cell_t GetPCodeAddress() const; |
| dvander@4013 | 23 |
uint32_t NumLoopEdges() const { |
| dvander@4013 | 24 |
return nedges_; |
| dvander@4013 | 25 |
} |
| dvander@4013 | 26 |
const LoopEdge &GetLoopEdge(size_t i) const { |
| dvander@4013 | 27 |
assert(i < nedges_); |
| dvander@4013 | 28 |
return edges_[i]; |
| dvander@4013 | 29 |
} |
| dvander@4013 | 30 |
|
| dvander@4013 | 31 |
private: |
| dvander@4013 | 32 |
void *m_pEntryAddr; |
| dvander@4013 | 33 |
cell_t m_PcodeOffs; |
| dvander@4013 | 34 |
LoopEdge *edges_; |
| dvander@4013 | 35 |
uint32_t nedges_; |
| dvander@2226 | 36 |
}; |
| dvander@2226 | 37 |
|
| dvander@2226 | 38 |
#endif //_INCLUDE_SOURCEPAWN_JIT2_FUNCTION_H_ |