[pypy-svn] r18111 - pypy/dist/pypy/doc

arigo at codespeak.net arigo at codespeak.net
Mon Oct 3 18:19:34 CEST 2005

Author: arigo
Date: Mon Oct  3 18:19:31 2005
New Revision: 18111

Forgot phi operations in the rules.

Modified: pypy/dist/pypy/doc/draft-dynamic-language-translation.txt
--- pypy/dist/pypy/doc/draft-dynamic-language-translation.txt	(original)
+++ pypy/dist/pypy/doc/draft-dynamic-language-translation.txt	Mon Oct  3 18:19:31 2005
@@ -856,10 +856,20 @@
 where ``\/`` is the union in the lattice *A*.
+The above operator is first of all used to propagate bindings of
+variables across links between basic block in the control flow graphs.
+For every link mapping a variable *x* in the source block to a variable
+*y* in the target block, we generate the following rule (``phi`` is not
+a normal operation in our `Flow graph model`_; we abuse the notation)::
+         y = phi(x)
+      ----------------------------------------
+               merge_into(x,y)
 The purpose of the equivalence relation *E* is to force two identified
-variables to keep the same binding, as defined by the following rule
-(which is actually a schema of rules, one each pair of variables
+variables to keep the same binding.  The rationale for this is explained
+in the `Mutable objects`_ section below.  It is enforced by the
+following family of rules (one for each pair *(x,y)*)::
          (x~y) in E
@@ -1020,15 +1030,13 @@
     lookup_filter(NonPbcAnnotation, class) = NonPbcAnnotation
-XXX model and rules
-XXX constant propagation
 Prebuilt constants
+XXX constant arguments to operations
 Mutable objects

More information about the Pypy-commit mailing list