aboutsummaryrefslogtreecommitdiffstats
path: root/awk.h
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2017-04-12 11:45:44 +0300
committerArnold D. Robbins <arnold@skeeve.com>2017-04-12 11:45:44 +0300
commit8f83ab76a1d8861d9a992290f2691443d5169c89 (patch)
treeab97e5c6532b812c681121127694d6ece4a2e92d /awk.h
parent6ba1d42808efba4f381aaeec54211a7802b816ff (diff)
parent906ac1a525dd0f7ad87bafdaf882323938842760 (diff)
downloadegawk-8f83ab76a1d8861d9a992290f2691443d5169c89.tar.gz
egawk-8f83ab76a1d8861d9a992290f2691443d5169c89.tar.bz2
egawk-8f83ab76a1d8861d9a992290f2691443d5169c89.zip
Merge branch 'master' into feature/stringfix
Diffstat (limited to 'awk.h')
-rw-r--r--awk.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/awk.h b/awk.h
index 5e593da9..88a495aa 100644
--- a/awk.h
+++ b/awk.h
@@ -597,8 +597,7 @@ typedef enum lintvals {
/* --------------------------------Instruction ---------------------------------- */
typedef enum opcodeval {
- /* illegal entry == 0 */
- Op_illegal,
+ Op_illegal = 0, /* illegal entry */
/* binary operators */
Op_times,
@@ -783,6 +782,7 @@ typedef struct exp_instruction {
} x;
short source_line;
+ short pool_size; // memory management in symbol.c
OPCODE opcode;
} INSTRUCTION;
@@ -1031,9 +1031,19 @@ typedef struct srcfile {
int lasttok;
} SRCFILE;
+// structure for INSTRUCTION pool, needed mainly for debugger
+typedef struct instruction_pool {
+#define MAX_INSTRUCTION_ALLOC 3 // we don't call bcalloc with more than this
+ struct instruction_mem_pool {
+ struct instruction_block *block_list;
+ INSTRUCTION *free_space; // free location in active block
+ INSTRUCTION *free_list;
+ } pool[MAX_INSTRUCTION_ALLOC];
+} INSTRUCTION_POOL;
+
/* structure for execution context */
typedef struct context {
- INSTRUCTION pools;
+ INSTRUCTION_POOL pools;
NODE symbols;
INSTRUCTION rule_list;
SRCFILE srcfiles;