[Quipu-dev] quipu/quipu: Fix some tail calls

Zurück zum Archiv-Index

scmno****@osdn***** scmno****@osdn*****
Wed Jun 13 04:44:02 JST 2018


changeset 61350b8ffc08 in quipu/quipu
details: http://hg.osdn.jp/view/quipu/quipu?cmd=changeset;node=61350b8ffc08
user: Agustina Arzille <avarz****@riseu*****>
date: Tue Jun 12 16:43:54 2018 -0300
description: Fix some tail calls

diffstat:

 compiler.cpp |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (30 lines):

diff -r 803a3da59f2a -r 61350b8ffc08 compiler.cpp
--- a/compiler.cpp	Tue Jun 12 04:35:45 2018 +0000
+++ b/compiler.cpp	Tue Jun 12 16:43:54 2018 -0300
@@ -913,7 +913,7 @@
   object then = xcadr (x);
   object els = xcddr (x);
 
-  int r = this->compile_cond (env, tail, tst) & ~EVR_SE;
+  int r = this->compile_cond (env, false, tst) & ~EVR_SE;
 
   if (qp_unlikely (r == EVR_IRET))
     return (r);
@@ -936,7 +936,7 @@
 
   this->mark_label (el);
   if (xcdr (els) != NIL)
-    this->compile_if (env, false, els);
+    this->compile_if (env, tail, els);
   else
     this->compile_in (env, tail, xcar (els));
 
@@ -1383,7 +1383,7 @@
         else if (xcddr (expr) != NIL)
           specform_error (this->interp, "yield", SPECFORM_TOOMANY);
 
-        this->compile_in (env, true, xcadr (expr));
+        this->compile_in (env, false, xcadr (expr));
         this->emit (OPX_(MKCONT), intobj (1));
         this->emit (OPX_(RET));
         break;




More information about the Quipu-dev mailing list
Zurück zum Archiv-Index