Merge remote-tracking branch 'origin/stable-2.0'
authorAndy Wingo <wingo@pobox.com>
Thu, 26 Apr 2012 21:40:57 +0000 (23:40 +0200)
committerAndy Wingo <wingo@pobox.com>
Thu, 26 Apr 2012 21:40:57 +0000 (23:40 +0200)
Conflicts:
test-suite/tests/cse.test

1  2 
module/language/tree-il/cse.scm
module/language/tree-il/effects.scm
module/language/tree-il/peval.scm
module/language/tree-il/primitives.scm
test-suite/tests/peval.test
test-suite/tests/tree-il.test

Simple merge
Simple merge
Simple merge
@@@ -47,9 -46,9 +47,9 @@@
      memq memv
      = < > <= >= zero?
      + * - / 1- 1+ quotient remainder modulo
-     ash logand logior logxor
+     ash logand logior logxor lognot
      not
 -    pair? null? list? symbol? vector? string? struct? number? char?
 +    pair? null? list? symbol? vector? string? struct? number? char? nil?
  
      complex? real? rational? inf? nan? integer? exact? inexact? even? odd?
  
    `(values
      eq? eqv? equal?
      = < > <= >= zero?
+     ash logand logior logxor lognot
      + * - / 1- 1+ quotient remainder modulo
      not
 -    pair? null? list? symbol? vector? struct? string? number? char?
 +    pair? null? list? symbol? vector? struct? string? number? char? nil
      complex? real? rational? inf? nan? integer? exact? inexact? even? odd?
      char<? char<=? char>=? char>?
      struct-vtable
        (((x y) #f #f #f () (_ _))
         _))))
  
 -  (pass-if-peval resolve-primitives
 +  (pass-if-peval
      (car '(1 2))
-     (const 1)))
+     (const 1))
+   ;; If we bail out when inlining an identifier because it's too big,
+   ;; but the identifier simply aliases some other identifier, then avoid
+   ;; residualizing a reference to the leaf identifier.  The bailout is
+   ;; driven by the recursive-effort-limit, which is currently 100.  We
+   ;; make sure to trip it with this recursive sum thing.
+   (pass-if-peval resolve-primitives
+     (let ((x (let sum ((n 0) (out 0))
+                (if (< n 10000)
+                    (sum (1+ n) (+ out n))
+                    out))))
+       ((lambda (y) (list y)) x))
+     (let (x) (_) (_)
+          (apply (primitive list) (lexical x _)))))
Simple merge