aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
authorAndrea Corallo2019-07-21 12:11:45 +0200
committerAndrea Corallo2020-01-01 11:33:56 +0100
commit976357769fe33e36afb37d5cd663587f46e88d0e (patch)
tree13beed5682127eac738abd665e19a2024168335d /src/comp.c
parent759a15d446b7f728d2d146cb1bfd6d722df9e998 (diff)
downloademacs-976357769fe33e36afb37d5cd663587f46e88d0e.tar.gz
emacs-976357769fe33e36afb37d5cd663587f46e88d0e.zip
rework arg parsing on the C side
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/comp.c b/src/comp.c
index 152a0e61808..edc35cf8b0e 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -1055,7 +1055,8 @@ static void
1055emit_limple_inst (Lisp_Object inst) 1055emit_limple_inst (Lisp_Object inst)
1056{ 1056{
1057 Lisp_Object op = XCAR (inst); 1057 Lisp_Object op = XCAR (inst);
1058 Lisp_Object arg0 = SECOND (inst); 1058 Lisp_Object args = XCDR (inst);
1059 Lisp_Object arg0 = XCAR (args);
1059 gcc_jit_rvalue *res; 1060 gcc_jit_rvalue *res;
1060 1061
1061 if (EQ (op, Qblock)) 1062 if (EQ (op, Qblock))
@@ -1071,10 +1072,10 @@ emit_limple_inst (Lisp_Object inst)
1071 } 1072 }
1072 else if (EQ (op, Qcond_jump)) 1073 else if (EQ (op, Qcond_jump))
1073 { 1074 {
1074 /* Conditional branch. */ 1075 /* Conditional branch. */
1075 gcc_jit_rvalue *test = emit_mvar_val (arg0); 1076 gcc_jit_rvalue *test = emit_mvar_val (arg0);
1076 gcc_jit_block *target1 = retrive_block (THIRD (inst)); 1077 gcc_jit_block *target1 = retrive_block (SECOND (args));
1077 gcc_jit_block *target2 = retrive_block (FORTH (inst)); 1078 gcc_jit_block *target2 = retrive_block (THIRD (args));
1078 1079
1079 emit_cond_jump (emit_NILP (test), target2, target1); 1080 emit_cond_jump (emit_NILP (test), target2, target1);
1080 } 1081 }
@@ -1087,7 +1088,7 @@ emit_limple_inst (Lisp_Object inst)
1087 else if (EQ (op, Qset)) 1088 else if (EQ (op, Qset))
1088 { 1089 {
1089 EMACS_UINT slot_n = XFIXNUM (FUNCALL1 (comp-mvar-slot, arg0)); 1090 EMACS_UINT slot_n = XFIXNUM (FUNCALL1 (comp-mvar-slot, arg0));
1090 Lisp_Object arg1 = THIRD (inst); 1091 Lisp_Object arg1 = SECOND (args);
1091 1092
1092 if (EQ (Ftype_of (arg1), Qcomp_mvar)) 1093 if (EQ (Ftype_of (arg1), Qcomp_mvar))
1093 res = emit_mvar_val (arg1); 1094 res = emit_mvar_val (arg1);
@@ -1107,7 +1108,7 @@ emit_limple_inst (Lisp_Object inst)
1107 { 1108 {
1108 /* Ex: (=par #s(comp-mvar 2 0 nil nil nil) 0). */ 1109 /* Ex: (=par #s(comp-mvar 2 0 nil nil nil) 0). */
1109 EMACS_UINT slot_n = XFIXNUM (FUNCALL1 (comp-mvar-slot, arg0)); 1110 EMACS_UINT slot_n = XFIXNUM (FUNCALL1 (comp-mvar-slot, arg0));
1110 EMACS_UINT param_n = XFIXNUM (THIRD (inst)); 1111 EMACS_UINT param_n = XFIXNUM (SECOND (args));
1111 gcc_jit_rvalue *param = 1112 gcc_jit_rvalue *param =
1112 gcc_jit_param_as_rvalue (gcc_jit_function_get_param (comp.func, 1113 gcc_jit_param_as_rvalue (gcc_jit_function_get_param (comp.func,
1113 param_n)); 1114 param_n));
@@ -1119,7 +1120,7 @@ emit_limple_inst (Lisp_Object inst)
1119 else if (EQ (op, Qsetimm)) 1120 else if (EQ (op, Qsetimm))
1120 { 1121 {
1121 /* EX: (=imm #s(comp-mvar 9 1 t 3 nil) 3). */ 1122 /* EX: (=imm #s(comp-mvar 9 1 t 3 nil) 3). */
1122 Lisp_Object arg1 = THIRD (inst); 1123 Lisp_Object arg1 = SECOND (args);
1123 EMACS_UINT slot_n = XFIXNUM (FUNCALL1 (comp-mvar-slot, arg0)); 1124 EMACS_UINT slot_n = XFIXNUM (FUNCALL1 (comp-mvar-slot, arg0));
1124 gcc_jit_block_add_assignment (comp.block, 1125 gcc_jit_block_add_assignment (comp.block,
1125 NULL, 1126 NULL,