lvm.js

changeset 59
3ac959479e85
parent 58
40d0b0429428
child 60
430a0b155703
--- a/lvm.js	Fri Nov 19 03:37:51 2010 +0000
+++ b/lvm.js	Fri Nov 19 03:38:18 2010 +0000
@@ -16,6 +16,7 @@
 var OP_JMP = 22;
 var OP_LT = 24;
 var OP_TEST = 26;
+var OP_TESTSET = 27;
 var OP_CALL = 28;
 var OP_RETURN = 30;
 var OP_FORLOOP = 31;
@@ -481,6 +482,14 @@
 				if(RA_bool == (INS_C(instruction)!=0))
 					frame.pc++;
 				break;
+			case OP_TESTSET:
+				var RB = frame.reg[INS_B(instruction)];
+				var RB_bool = RB.type == "nil" || (RB.type == "boolean" && RB.value == false);
+				if(RB_bool == (INS_C(instruction)!=0))
+					frame.pc++;
+				else
+					frame.reg[INS_A(instruction)] = RB;
+				break;
 			case OP_JMP:
 				frame.pc+=INS_sBx(instruction);
 				break;

mercurial