aboutsummaryrefslogtreecommitdiffstats
path: root/awk.h
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2017-04-12 11:45:05 +0300
committerArnold D. Robbins <arnold@skeeve.com>2017-04-12 11:45:05 +0300
commit4b68f4ebe7381644e5652a88a5104a10f10f66a7 (patch)
treee242d76e4f41cd63466cf044edcc5868b810ccda /awk.h
parentbb25148a8e3c8d953f632eb635669abaccedc9a4 (diff)
parent906ac1a525dd0f7ad87bafdaf882323938842760 (diff)
downloadegawk-4b68f4ebe7381644e5652a88a5104a10f10f66a7.tar.gz
egawk-4b68f4ebe7381644e5652a88a5104a10f10f66a7.tar.bz2
egawk-4b68f4ebe7381644e5652a88a5104a10f10f66a7.zip
Merge branch 'master' into feature/api-mpfr
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 69f6ae65..084e7dda 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;