| author | David Anderson <dvander@alliedmods.net> |
| Sun Oct 15 23:31:09 2006 +0000 (2006-10-15) | |
| changeset 117 | f1edbb5d485a |
| parent 116 | 4965c485f121 |
| child 118 | 0cfeb76486a2 |
| permissions | -rw-r--r-- |
| dvander@115 | 1 |
#ifndef _INCLUDE_SOURCEPAWN_COMPILER_TRACKER_H_ |
| dvander@115 | 2 |
#define _INCLUDE_SOURCEPAWN_COMPILER_TRACKER_H_ |
| dvander@115 | 3 |
|
| dvander@116 | 4 |
#define MEMUSE_STATIC 0 |
| dvander@116 | 5 |
#define MEMUSE_DYNAMIC 1 |
| dvander@115 | 6 |
|
| dvander@116 | 7 |
typedef struct memuse_s { |
| dvander@116 | 8 |
int type; /* MEMUSE_STATIC or MEMUSE_DYNAMIC */ |
| dvander@116 | 9 |
int size; /* size of array for static (0 for dynamic) */ |
| dvander@116 | 10 |
struct memuse_s *prev; /* previous block on the list */ |
| dvander@116 | 11 |
} memuse_t; |
| dvander@115 | 12 |
|
| dvander@116 | 13 |
typedef struct memuse_list_s { |
| dvander@116 | 14 |
struct memuse_list_s *prev; /* last used list */ |
| dvander@117 | 15 |
int list_id; |
| dvander@116 | 16 |
memuse_t *head; /* head of the current list */ |
| dvander@116 | 17 |
} memuse_list_t; |
| dvander@115 | 18 |
|
| dvander@116 | 19 |
/** |
| dvander@116 | 20 |
* Heap functions |
| dvander@116 | 21 |
*/ |
| dvander@115 | 22 |
void pushheaplist(); |
| dvander@116 | 23 |
memuse_list_t *popsaveheaplist(); |
| dvander@115 | 24 |
void popheaplist(); |
| dvander@115 | 25 |
int markheap(int type, int size); |
| dvander@115 | 26 |
|
| dvander@116 | 27 |
/** |
| dvander@116 | 28 |
* Stack functions |
| dvander@116 | 29 |
*/ |
| dvander@116 | 30 |
void pushstacklist(); |
| dvander@116 | 31 |
void popstacklist(); |
| dvander@116 | 32 |
int markstack(int type, int size); |
| dvander@117 | 33 |
/** |
| dvander@117 | 34 |
* Generates code to free stack usage, but does not pop the list. |
| dvander@117 | 35 |
* This is used for code like dobreak()/docont()/doreturn(). |
| dvander@117 | 36 |
* stop_id is the list at which to stop generating. |
| dvander@117 | 37 |
*/ |
| dvander@117 | 38 |
void genstackfree(int stop_id); |
| dvander@117 | 39 |
|
| dvander@117 | 40 |
/** |
| dvander@117 | 41 |
* Resets the stack list by freeing everything |
| dvander@117 | 42 |
*/ |
| dvander@117 | 43 |
void resetstacklist(); |
| dvander@116 | 44 |
|
| dvander@116 | 45 |
extern memuse_list_t *heapusage; |
| dvander@116 | 46 |
extern memuse_list_t *stackusage; |
| dvander@116 | 47 |
|
| dvander@115 | 48 |
#endif //_INCLUDE_SOURCEPAWN_COMPILER_TRACKER_H_ |