[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