From 5470330c451361a546193b0deca1eee3e601bda5 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 13 Nov 2009 07:17:00 -0600 Subject: [PATCH] Fix another problem with call( inline caching --- core/compiler/units/units.factor | 6 ++++-- core/definitions/definitions.factor | 8 ++++++++ core/words/words.factor | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/compiler/units/units.factor b/core/compiler/units/units.factor index a46e846b0d..9ffb98a383 100644 --- a/core/compiler/units/units.factor +++ b/core/compiler/units/units.factor @@ -127,8 +127,8 @@ M: object bump-effect-counter* drop f ; bi ; : bump-effect-counter? ( -- ? ) - changed-effects get old-definitions get first assoc-intersect assoc-empty? not - new-definitions get first [ drop bump-effect-counter* ] assoc-any? + changed-effects get new-words get assoc-diff assoc-empty? not + changed-definitions get [ drop bump-effect-counter* ] assoc-any? or ; : bump-effect-counter ( -- ) @@ -156,6 +156,7 @@ PRIVATE> H{ } clone changed-effects set H{ } clone outdated-generics set H{ } clone outdated-tuples set + H{ } clone new-words set H{ } clone new-classes set [ finish-compilation-unit ] [ ] cleanup ] with-scope ; inline @@ -168,6 +169,7 @@ PRIVATE> H{ } clone outdated-generics set H{ } clone forgotten-definitions set H{ } clone outdated-tuples set + H{ } clone new-words set H{ } clone new-classes set new-definitions set old-definitions set diff --git a/core/definitions/definitions.factor b/core/definitions/definitions.factor index d815b9609d..597b195c36 100644 --- a/core/definitions/definitions.factor +++ b/core/definitions/definitions.factor @@ -21,8 +21,16 @@ SYMBOL: changed-generics SYMBOL: outdated-generics +SYMBOL: new-words + SYMBOL: new-classes +: new-word ( word -- ) + dup new-words get set-in-unit ; + +: new-word? ( word -- ? ) + new-words get key? ; + : new-class ( word -- ) dup new-classes get set-in-unit ; diff --git a/core/words/words.factor b/core/words/words.factor index 24a95853da..712e3ba558 100755 --- a/core/words/words.factor +++ b/core/words/words.factor @@ -135,7 +135,7 @@ M: word reset-word ] tri ; : ( name vocab -- word ) - 2dup [ hashcode ] bi@ bitxor >fixnum (word) ; + 2dup [ hashcode ] bi@ bitxor >fixnum (word) dup new-word ; : gensym ( -- word ) "( gensym )" f \ gensym counter >fixnum (word) ;