aboutsummaryrefslogtreecommitdiff
path: root/frontend/refmark.icl
diff options
context:
space:
mode:
authorjohnvg2007-12-21 12:33:15 +0000
committerjohnvg2007-12-21 12:33:15 +0000
commit7773f271275a52df7f1053a6adfd29d849611075 (patch)
tree8df42ffbac600f7a5332e1c9f222f6c2175e4df7 /frontend/refmark.icl
parentdon't mark strict and unboxed arrays as hyperstrict (causes incorrect (diff)
make function has_observing_type faster
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1695 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/refmark.icl')
-rw-r--r--frontend/refmark.icl11
1 files changed, 8 insertions, 3 deletions
diff --git a/frontend/refmark.icl b/frontend/refmark.icl
index 9f53f86..8b6f738 100644
--- a/frontend/refmark.icl
+++ b/frontend/refmark.icl
@@ -771,13 +771,18 @@ where
-> has_observing_type subst_type type_def_infos subst
has_observing_type (TA {type_index = {glob_object,glob_module}} type_args) type_def_infos subst
# {tdi_properties} = type_def_infos.[glob_module].[glob_object]
- = foldSt (\ {at_type} ok -> ok && has_observing_type at_type type_def_infos subst) type_args (tdi_properties bitand cIsHyperStrict <> 0)
+ = tdi_properties bitand cIsHyperStrict <> 0 && args_have_observing_type type_args type_def_infos subst
has_observing_type (TAS {type_index = {glob_object,glob_module}} type_args _) type_def_infos subst
# {tdi_properties} = type_def_infos.[glob_module].[glob_object]
- = foldSt (\ {at_type} ok -> ok && has_observing_type at_type type_def_infos subst) type_args (tdi_properties bitand cIsHyperStrict <> 0)
+ = tdi_properties bitand cIsHyperStrict <> 0 && args_have_observing_type type_args type_def_infos subst
has_observing_type type type_def_infos subst
= False
-
+
+ args_have_observing_type [{at_type}:type_args] type_def_infos subst
+ = has_observing_type at_type type_def_infos subst && args_have_observing_type type_args type_def_infos subst
+ args_have_observing_type [] type_def_infos subst
+ = True
+
instance <<< ReferenceCount
where
(<<<) file RC_Unused = file