diff options
author | johnvg | 2013-04-09 14:51:23 +0000 |
---|---|---|
committer | johnvg | 2013-04-09 14:51:23 +0000 |
commit | cf7e0fea16182ced51f0acc1b98f7114d1e88e1b (patch) | |
tree | 4b8cbc73644f51f5d8b3f0ff4f619d9890782fd2 /frontend/unitype.dcl | |
parent | in 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.dcl | 7 |
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 |