shithub: libmujs

Download patch

ref: 1122d1f6479f0eba69bc72b6e9f7a772c9619592
parent: 50d5cb95abc045d219fa80e9b1f41470e2d86a89
author: Tor Andersson <[email protected]>
date: Sun Jan 12 07:52:26 EST 2014

Improve opcode naming.

--- a/jscompile.c
+++ b/jscompile.c
@@ -124,16 +124,16 @@
 {
 	switch (exp->type) {
 	case AST_IDENTIFIER:
-		emitstring(J, F, OP_VAR, exp->string);
+		emitstring(J, F, OP_AVAR, exp->string);
 		break;
 	case EXP_INDEX:
 		cexp(J, F, exp->a);
 		cexp(J, F, exp->b);
-		emit(J, F, OP_INDEX);
+		emit(J, F, OP_AINDEX);
 		break;
 	case EXP_MEMBER:
 		cexp(J, F, exp->a);
-		emitstring(J, F, OP_MEMBER, exp->b->string);
+		emitstring(J, F, OP_AMEMBER, exp->b->string);
 		break;
 	default:
 		jsC_error(J, exp, "invalid l-value in assignment");
@@ -144,7 +144,7 @@
 static void assignop(JF, js_Ast *exp, int opcode)
 {
 	clval(J, F, exp->a);
-	emit(J, F, OP_DUPLOAD);
+	emit(J, F, OP_DUP_LOAD);
 	cexp(J, F, exp->b);
 	emit(J, F, opcode);
 	emit(J, F, OP_STORE);
@@ -156,8 +156,7 @@
 
 	switch (exp->type) {
 	case AST_IDENTIFIER:
-		emitstring(J, F, OP_VAR, exp->string);
-		emit(J, F, OP_LOAD);
+		emitstring(J, F, OP_LOADVAR, exp->string);
 		break;
 
 	case AST_NUMBER: emitnumber(J, F, OP_CONST, exp->number); break;
@@ -181,14 +180,12 @@
 	case EXP_INDEX:
 		cexp(J, F, exp->a);
 		cexp(J, F, exp->b);
-		emit(J, F, OP_INDEX);
-		emit(J, F, OP_LOAD);
+		emit(J, F, OP_LOADINDEX);
 		break;
 
 	case EXP_MEMBER:
 		cexp(J, F, exp->a);
-		emitstring(J, F, OP_MEMBER, exp->b->string);
-		emit(J, F, OP_LOAD);
+		emitstring(J, F, OP_LOADMEMBER, exp->b->string);
 		break;
 
 	case EXP_CALL:
@@ -281,7 +278,7 @@
 		cexp(J, F, vardec->b);
 	else
 		emit(J, F, OP_UNDEF);
-	emitstring(J, F, OP_DEFVAR, vardec->a->string);
+	emitstring(J, F, OP_VARDEC, vardec->a->string);
 }
 
 static void cvardeclist(JF, js_Ast *list)
@@ -346,9 +343,9 @@
 
 	case STM_WITH:
 		cexp(J, F, stm->a);
-		emit(J, F, OP_PUSHWITH);
+		emit(J, F, OP_WITH);
 		cstm(J, F, stm->b);
-		emit(J, F, OP_POPWITH);
+		emit(J, F, OP_ENDWITH);
 		break;
 
 	// switch
--- a/jscompile.h
+++ b/jscompile.h
@@ -3,6 +3,9 @@
 
 enum
 {
+	OP_POP,
+	OP_DUP,
+
 	OP_CONST,
 	OP_UNDEF,
 	OP_NULL,
@@ -15,17 +18,24 @@
 	OP_OBJECT,
 	OP_OBJECTPUT,
 
-	OP_DEFVAR,
-	OP_VAR,
-	OP_INDEX,
-	OP_MEMBER,
+	OP_VARDEC,
+	OP_FUNDEC,
+	OP_FUNEXP,
+
+	OP_LOADVAR,
+	OP_LOADINDEX,
+	OP_LOADMEMBER,
+	OP_AVAR,
+	OP_AINDEX,
+	OP_AMEMBER,
+
 	OP_LOAD,
-	OP_DUPLOAD,
+	OP_DUP_LOAD,
 	OP_STORE,
 
 	OP_CALL,
+	OP_TCALL,
 	OP_NEW,
-	OP_CLOSURE,
 
 	OP_DELETE,
 	OP_VOID,
@@ -63,18 +73,17 @@
 	OP_DIV,
 	OP_MOD,
 
-	OP_JUMP,
-	OP_JTRUE,
-	OP_JFALSE,
-
 	OP_TRY,
 	OP_THROW,
 	OP_RETURN,
-	OP_PUSHWITH,
-	OP_POPWITH,
 	OP_DEBUGGER,
 
-	OP_POP,
+	OP_WITH,
+	OP_ENDWITH,
+
+	OP_JUMP,
+	OP_JTRUE,
+	OP_JFALSE,
 };
 
 struct js_Function
--- a/jsdump.c
+++ b/jsdump.c
@@ -620,13 +620,16 @@
 		switch (c) {
 		case OP_CONST:
 		case OP_OBJECTPUT:
-		case OP_DEFVAR:
-		case OP_VAR:
-		case OP_MEMBER:
+		case OP_VARDEC:
+		case OP_LOADVAR:
+		case OP_LOADMEMBER:
+		case OP_AVAR:
+		case OP_AMEMBER:
 			pc(' ');
 			jsC_dumpvalue(J, fun->klist[*p++]);
 			break;
 		case OP_CALL:
+		case OP_TCALL:
 		case OP_NEW:
 			printf(" %d", *p++);
 			break;