aboutsummaryrefslogtreecommitdiff
path: root/frontend/unitype.dcl
diff options
context:
space:
mode:
authorjohnvg2013-04-09 14:51:23 +0000
committerjohnvg2013-04-09 14:51:23 +0000
commitcf7e0fea16182ced51f0acc1b98f7114d1e88e1b (patch)
tree4b8cbc73644f51f5d8b3f0ff4f619d9890782fd2 /frontend/unitype.dcl
parentin lazy record selector offsets for the garbage collector, swap the offsets, (diff)
optimize fusion, reduce memory used of fusion (from iTask branch):
allow integers and strings as consumer for generic functions (to optimize use of generic info). use PR_CurriedFunction instead of PR_Curried for local macro functions that are good producers. check the arity of the function to be generated already in determineProducer, if too large, don't yield a producer which will be rejected later, to allow optimization of producers in subsequent arguments. optimize trivial function calls (with arguments) before optimizing arguments, treat constant function as trivial function. if a function call has two identical arguments, generate a specialized function that shares these parameters. specialize functions with zero arity constructor arguments, if the function is a generic function, or the constructor is a generic constructor. git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2232 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/unitype.dcl')
-rw-r--r--frontend/unitype.dcl7
1 files changed, 6 insertions, 1 deletions
diff --git a/frontend/unitype.dcl b/frontend/unitype.dcl
index 438637e..abdc0db 100644
--- a/frontend/unitype.dcl
+++ b/frontend/unitype.dcl
@@ -52,7 +52,12 @@ tryToMakeUnique :: !Int !*Coercions -> (!Bool, !*Coercions)
uniquenessErrorVar :: !FreeVar !FunctionBody !String !*ErrorAdmin -> *ErrorAdmin
-liftSubstitution :: !*{! Type} !{# CommonDefs }!{# BOOLVECT } !Int !*TypeHeaps !*TypeDefInfos -> (*{! Type}, !Int, !*TypeHeaps, !*TypeDefInfos)
+liftOfferedSubstitutions :: !AType !AType !{#CommonDefs} !{#BOOLVECT} !Int !*{!Type} !*TypeDefInfos !*TypeHeaps
+ -> (!Int,!*{!Type},!*TypeDefInfos,!*TypeHeaps)
+
+liftSubstitution :: !*{!Type} !{#CommonDefs}!{#BOOLVECT} !Int !*TypeHeaps !*TypeDefInfos -> (*{!Type}, !Int, !*TypeHeaps, !*TypeDefInfos)
+
+liftRemainingSubstitutions :: !*{!Type} !{#CommonDefs }!{#BOOLVECT} !Int !*TypeHeaps !*TypeDefInfos -> (*{!Type}, !Int, !*TypeHeaps, !*TypeDefInfos)
:: ExpansionState =
{ es_type_heaps :: !.TypeHeaps