summary refs log tree commit diff
path: root/lisc/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'lisc/parse.c')
-rw-r--r--lisc/parse.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/lisc/parse.c b/lisc/parse.c
index 526e55e..0d647c1 100644
--- a/lisc/parse.c
+++ b/lisc/parse.c
@@ -303,7 +303,7 @@ closeblk()
 static PState
 parseline(PState ps)
 {
-	Ref arg[NPred] = {0};
+	Ref arg[NPred] = {R};
 	Blk *blk[NPred];
 	Phi *phi;
 	Ref r;
@@ -311,7 +311,6 @@ parseline(PState ps)
 	Blk *b;
 	int op, i;
 
-	assert(arg[0] == R);
 	do
 		t = next();
 	while (t == TNL);
@@ -347,7 +346,7 @@ parseline(PState ps)
 	case TJez:
 		curb->jmp.type = JJez;
 		r = parseref();
-		if (r == R)
+		if (req(r, R))
 			err("invalid argument for jez jump");
 		curb->jmp.arg = r;
 		expect(TComma);
@@ -400,7 +399,7 @@ parseline(PState ps)
 				blk[i] = findblk(tokval.str);
 			}
 			arg[i] = parseref();
-			if (arg[i] == R)
+			if (req(arg[i], R))
 				err("invalid instruction argument");
 			i++;
 			t = peek();
@@ -475,12 +474,12 @@ parsefn(FILE *f)
 static void
 printref(Ref r, Fn *fn, FILE *f)
 {
-	switch (r&RMask) {
+	switch (r.type) {
 	case RSym:
-		fprintf(f, "%%%s", fn->sym[r>>RShift].name);
+		fprintf(f, "%%%s", fn->sym[r.val].name);
 		break;
 	case RConst:
-		fprintf(f, "%d", r>>RShift);
+		fprintf(f, "%d", r.val);
 		break;
 	}
 }