[pypy-svn] r44128 - pypy/branch/prolog-bytecode/pypy/lang/prolog/interpreter

cfbolz at codespeak.net cfbolz at codespeak.net
Sun Jun 10 23:01:42 CEST 2007


Author: cfbolz
Date: Sun Jun 10 23:01:41 2007
New Revision: 44128

Modified:
   pypy/branch/prolog-bytecode/pypy/lang/prolog/interpreter/interpreter.py
Log:
work less for user calls too


Modified: pypy/branch/prolog-bytecode/pypy/lang/prolog/interpreter/interpreter.py
==============================================================================
--- pypy/branch/prolog-bytecode/pypy/lang/prolog/interpreter/interpreter.py	(original)
+++ pypy/branch/prolog-bytecode/pypy/lang/prolog/interpreter/interpreter.py	Sun Jun 10 23:01:41 2007
@@ -66,7 +66,15 @@
 
     def unify_head(self, head):
         self.run(self.getcode(), True, 0, None)
-        self.result.unify(head, self.heap)
+        if isinstance(head, Term):
+            result = self.result
+            assert isinstance(result, Term)
+            i = 0
+            m = hint(len(head.args), promote=True)
+            while i < m:
+                hint(i, concrete=True)
+                result.args[i].unify(head.args[i], self.heap)
+                i += 1
         self.result = None
 
     def run_directly(self, continuation, choice_point=True):
@@ -264,6 +272,7 @@
             hint(i, concrete=True)
             stack.pop()
             i += 1
+        return result
 
     def CUT(self, stack, continuation):
         raise error.CutException(continuation)



More information about the Pypy-commit mailing list