diff --git a/LOG b/LOG index 79199a9c4a..6942081fb1 100644 --- a/LOG +++ b/LOG @@ -529,8 +529,11 @@ bytevector.ms, root-experr* - fixed typo in S_abnormal_exit schsig.c +- don't remove the pariah form in the cp0 pass + cp0.ss, + misc.ms - revert use of ephemerons in weak hashtables, add ephemeron hashtables newhash.ss, hashtable-types.ss, library.ss, primdata.ss, fasl.ss, fasl.c, gc.c, globals.h, - hash.ms, objects.stex, release_notes.stex + hash.ms, objects.stex, release_notes.stex \ No newline at end of file diff --git a/mats/misc.ms b/mats/misc.ms index 893424dbfd..2d79db35a5 100644 --- a/mats/misc.ms +++ b/mats/misc.ms @@ -4865,6 +4865,17 @@ (pariah 1) (* n (f (fx- n 1))))) 3628800) + ; make sure that cp0 doesn't remove the pariah form + (not (equivalent-expansion? + (parameterize ([run-cp0 (lambda (cp0 x) (cp0 x))]) + (expand/optimize + '(if (zero? (random 1000)) + (pariah (display 0)) + (display 1))) + (expand/optimize + '(if (zero? (random 1000)) + (display 0) + (display 1)))))) ) (mat $read-time-stamp-counter diff --git a/s/cp0.ss b/s/cp0.ss index b86eec2770..a192b17442 100644 --- a/s/cp0.ss +++ b/s/cp0.ss @@ -1055,7 +1055,7 @@ [(foreign ,conv ,name ,e (,arg-type* ...) ,result-type) (memoize (simple? e))] [(record-type ,rtd ,e) (memoize (simple? e))] [(record ,rtd ,rtd-expr ,e* ...) (memoize (and (simple? rtd-expr) (andmap simple? e*)))] - [(pariah) #t] + [(pariah) #f] [(profile ,src) #f] [(cte-optimization-loc ,box ,e) (memoize (simple? e))] [(moi) #t]