From bd479db2f8eea8b3aa7e7c801a802eb8457dd640 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 21 Jan 2010 07:55:42 +1300 Subject: [PATCH] Fix regression when forgetting classes --- basis/compiler/compiler.factor | 6 ++++-- core/classes/algebra/algebra.factor | 11 +++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/basis/compiler/compiler.factor b/basis/compiler/compiler.factor index 70a0676863..7fc171859c 100644 --- a/basis/compiler/compiler.factor +++ b/basis/compiler/compiler.factor @@ -184,8 +184,10 @@ SINGLETON: optimizing-compiler M: optimizing-compiler update-call-sites ( class generic -- words ) #! Words containing call sites with inferred type 'class' #! which inlined a method on 'generic' - compiled-generic-usage swap - '[ nip _ classes-intersect? ] assoc-filter keys ; + compiled-generic-usage swap '[ + nip dup forgotten-class? + [ drop f ] [ _ classes-intersect? ] if + ] assoc-filter keys ; M: optimizing-compiler recompile ( words -- alist ) [ diff --git a/core/classes/algebra/algebra.factor b/core/classes/algebra/algebra.factor index 5e29de464c..fe02e6b583 100644 --- a/core/classes/algebra/algebra.factor +++ b/core/classes/algebra/algebra.factor @@ -40,13 +40,12 @@ M: object normalize-class ; PRIVATE> -GENERIC: valid-class? ( obj -- ? ) +GENERIC: forgotten-class? ( obj -- ? ) -M: class valid-class? drop t ; -M: anonymous-union valid-class? members>> [ valid-class? ] all? ; -M: anonymous-intersection valid-class? participants>> [ valid-class? ] all? ; -M: anonymous-complement valid-class? class>> valid-class? ; -M: word valid-class? drop f ; +M: word forgotten-class? "forgotten" word-prop ; +M: anonymous-union forgotten-class? members>> [ forgotten-class? ] any? ; +M: anonymous-intersection forgotten-class? participants>> [ forgotten-class? ] any? ; +M: anonymous-complement forgotten-class? class>> forgotten-class? ; : class<= ( first second -- ? ) class<=-cache get [ (class<=) ] 2cache ;