summaryrefslogtreecommitdiff
path: root/lparser.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-03-09 10:57:37 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-03-09 10:57:37 -0300
commite3cf93ddb677fe9482563a5687d3bf3e05ca0407 (patch)
treec692a19e5597c785c198d558a07dd0571f3fa98c /lparser.h
parent88b306f495fa7034c708c6b75a355a6deee51c58 (diff)
downloadlua-github-e3cf93ddb677fe9482563a5687d3bf3e05ca0407.tar.gz
first implementation of "threaded code" for boolean operations
Diffstat (limited to 'lparser.h')
-rw-r--r--lparser.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/lparser.h b/lparser.h
index adc7f012..01332478 100644
--- a/lparser.h
+++ b/lparser.h
@@ -47,15 +47,21 @@
*/
typedef enum {
- VGLOBAL, /* info is constant index of global name */
- VLOCAL, /* info is stack index */
+ VGLOBAL,
+ VLOCAL,
VINDEXED,
- VEXP /* info is jump target if exp has internal jumps */
+ VEXP
} expkind;
typedef struct expdesc {
expkind k;
- int info;
+ union {
+ int index; /* VGLOBAL: `kstr' index of global name; VLOCAL: stack index */
+ struct {
+ int t; /* patch list of `exit when true' */
+ int f; /* patch list of `exit when false' */
+ } l;
+ } u;
} expdesc;