From dee7082b27bf1498706afc8c80e1e41267f60262 Mon Sep 17 00:00:00 2001 From: johnvg Date: Thu, 16 Aug 2012 09:18:54 +0000 Subject: optimize function get_mark git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2154 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d --- frontend/partition.icl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/frontend/partition.icl b/frontend/partition.icl index f10ccc3..74bada3 100644 --- a/frontend/partition.icl +++ b/frontend/partition.icl @@ -1,6 +1,3 @@ -/* - module owner: Diederik van Arkel -*/ implementation module partition import syntax, transform, utilities @@ -224,9 +221,16 @@ component_members_to_list NoComponentMembers get_mark max_fun_nr marks fun // :== marks.[fun] - :== case [m_mark \\ {m_fun,m_mark} <-: marks | m_fun == fun] of - [] -> max_fun_nr - [m:_] -> m + :== get_mark 0 marks fun max_fun_nr +where + get_mark :: !Int !{#Mark} !Int !Int -> Int + get_mark i marks fun max_fun_nr + | ifun + = get_mark (i+1) marks fun max_fun_nr + = marks.[i].m_mark + = max_fun_nr + set_mark marks fun val // :== { marks & [fun] = val} // :== { if (m_fun==fun) {m & m_mark = val} m \\ m=:{m_fun=m_fun} <-: marks} -- cgit v1.2.3