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,17,20 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 version 2.1 as published by the Free Software Foundation.
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 mkIndContainer: 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: int -> bool
val makeConstVal: codetree -> codetree
val evalue: codetree -> machineWord option
val findEntryInBlock: codetree * int * bool -> codetree
val earlyRtsCall: int -> bool
val partitionMutualBindings: 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;
|