]> git.eshelyaron.com Git - emacs.git/commitdiff
add varbind support
authorAndrea Corallo <andrea_corallo@yahoo.it>
Tue, 21 May 2019 19:24:34 +0000 (21:24 +0200)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Jan 2020 10:33:37 +0000 (11:33 +0100)
src/comp.c

index 9713a6fd4594e3aa0b71c8e4b093f1a7f2afa39b..5bc2c8fa4e85132867da1e7f654bea16b092f8b1 100644 (file)
@@ -353,30 +353,34 @@ compile_f (const char *f_name, ptrdiff_t bytestr_length,
          }
          break;
 
+       case Bvarbind6:
+         op = FETCH;
+         goto varbind;
+
+       case Bvarbind7:
+         op = FETCH2;
+         goto varbind;
+
        case Bvarbind:
-         printf("Bvarbind\n");
-         break;
        case Bvarbind1:
-         printf("Bvarbind1\n");
-         break;
        case Bvarbind2:
-         printf("Bvarbind2\n");
-         break;
        case Bvarbind3:
-         printf("Bvarbind3\n");
-         break;
        case Bvarbind4:
-         printf("Bvarbind4\n");
-         break;
        case Bvarbind5:
-         printf("Bvarbind5\n");
-         break;
-       case Bvarbind6:
-         printf("Bvarbind6\n");
-         break;
-       case Bvarbind7:
-         printf("Bvarbind7\n");
-         break;
+         op -= Bvarbind;
+       varbind:
+         {
+           POP1;
+           args[1] = args[0];
+           args[0] = gcc_jit_context_new_rvalue_from_ptr(comp.ctxt,
+                                                         comp.lisp_obj,
+                                                         vectorp[op]);
+
+           res = jit_emit_call ("specbind", 2, args);
+           PUSH (gcc_jit_lvalue_as_rvalue (res));
+           break;
+         }
+
        case Bcall:
          printf("Bcall\n");
          break;