File: CodetreeFunctionsSig.sml

package info (click to toggle)
polyml 5.6-8
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 31,892 kB
  • ctags: 34,453
  • sloc: cpp: 44,983; ansic: 24,520; asm: 14,850; sh: 11,730; makefile: 551; exp: 484; python: 253; awk: 91; sed: 9
file content (76 lines) | stat: -rw-r--r-- 2,552 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
(*
    Copyright (c) 2012,13 David C.J. Matthews

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.
    
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.
    
    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*)

signature CodetreeFunctionsSig =
sig
    type codetree
    and codeBinding
    and loadForm
    and envSpecial

    type machineWord = Address.machineWord

    val mkLoadLocal: int -> codetree
    and mkLoadArgument: int -> codetree
    and mkLoadClosure: int -> codetree
 
    val mkEnv: codeBinding list * codetree -> codetree
    and mkInd: int * codetree -> codetree
    and mkVarField: int * codetree -> codetree
    and mkTuple: codetree list -> codetree
    and mkDatatype: codetree list -> codetree

    val CodeFalse: codetree and CodeTrue: codetree and CodeZero: codetree

    val mkSetContainer:     codetree * codetree * BoolVector.vector -> codetree
    val mkTupleFromContainer: int * int -> codetree

    val decSequenceWithFinalExp: codeBinding list -> codetree
    
    val sideEffectFree: codetree -> bool
    and reorderable: codetree -> bool
    and sideEffectFreeRTSCall: machineWord -> bool

    val makeConstVal: codetree -> codetree
    
    val evalue:    codetree -> machineWord option
    
    val findEntryInBlock: codetree * int * bool -> codetree
    
    val earlyRtsCall: machineWord -> bool

    val partitionMutableBindings: codeBinding -> codeBinding list

    type createClosure
    val makeClosure: unit -> createClosure
    and addToClosure: createClosure -> loadForm -> loadForm
    and extractClosure: createClosure -> loadForm list

    val findInline: Universal.universal list -> envSpecial
    val setInline: envSpecial -> Universal.universal list -> Universal.universal list

    structure Sharing:
    sig
        type codetree = codetree
        and codeBinding = codeBinding
        and loadForm = loadForm
        and createClosure = createClosure
        and envSpecial = envSpecial
    end

end;