/[mojave]/metaprl/theories/mc/mp_mc_fir_exp.ml
ViewVC logotype

Diff of /metaprl/theories/mc/mp_mc_fir_exp.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3589 by emre, Sat Apr 27 02:45:24 2002 UTC revision 3590 by emre, Sat Apr 27 19:52:38 2002 UTC
# Line 53  Line 53 
53   * Declarations.   * Declarations.
54   *************************************************************************)   *************************************************************************)
55    
56  (*  (*!
57   * Unary operations.   * @begin[doc]
58     * @terms
59     * @thysubsection{Unary operations}
60     *
61     * These are the unary operations in the FIR.  They are used in
62     * @hrefterm[letUnop] as the @tt{unop} subterm.  Each of the operators
63     * here can only be applied to values of a given type.  In instances
64     * where the type has precision and / or signing subterms
65     * (such as @hrefterm[tyRawInt]), the qualifiers in the operator
66     * must also match those of the type in order for the @hrefterm[letUnop]
67     * term to be well-formed.
68     *
69     * @tt{idOp} is a polymorphic identity operator.
70     * @end[doc]
71   *)   *)
72    
 (* Identity (polymorphic). *)  
   
73  declare idOp  declare idOp
74    
75  (* Naml ints. *)  (*!
76     * @begin[doc]
77     *
78     * @tt{uminusIntOp} is unary arithmetic negation and @tt{notIntOp}
79     * is bitwise negation.  They operate of values of type @hrefterm[tyInt].
80     * @end[doc]
81     *)
82    
83  declare uminusIntOp  declare uminusIntOp
84  declare notIntOp  declare notIntOp
85    
86  (* Bit fields. *)  (*!
87     * @begin[doc]
88     *
89     * Bit fields.
90     * @end[doc]
91     *)
92    
93  declare rawBitFieldOp{ 'int_precision; 'int_signed; 'int1; 'int2 }  declare rawBitFieldOp{ 'int_precision; 'int_signed; 'int1; 'int2 }
94    
95  (* Native ints. *)  (*!
96     * @begin[doc]
97     *
98     * @tt{uminusRawIntOp} and @tt{notRawIntOp} are analogous to
99     * @hrefterm[uminusIntOp] and @hrefterm[notIntOp], except they
100     * operate on values of type @hrefterm[tyRawInt].
101     * @end[doc]
102     *)
103    
104  declare uminusRawIntOp{ 'int_precision; 'int_signed }  declare uminusRawIntOp{ 'int_precision; 'int_signed }
105  declare notRawIntOp{ 'int_precision; 'int_signed }  declare notRawIntOp{ 'int_precision; 'int_signed }
# Line 110  Line 139 
139    
140  declare pointerOfBlockOp{ 'sub_block }  declare pointerOfBlockOp{ 'sub_block }
141    
142  (*  (*!
143   * Binary operations.   * @begin[doc]
144     * @thysubsection{Binary operations}
145     *
146     * These are the binary operations in the FIR.  They are used in
147     * @hrefterm[letBinop] as the @tt{binop} subterm.  Each of the operators
148     * here can only be applied to values of a given type.  In instances
149     * where the type has precision and / or signing subterms
150     * (such as @hrefterm[tyRawInt]), the qualifiers in the operator
151     * must also match those of the type in order for the @hrefterm[letBinop]
152     * term to be well-formed.
153     *
154     * @end[doc]
155   *)   *)
156    
157  (* Enums. *)  (* Enums. *)
# Line 198  Line 238 
238    
239  declare plusPointerOp{ 'sub_block; 'int_precision; 'int_signed }  declare plusPointerOp{ 'sub_block; 'int_precision; 'int_signed }
240    
241  (*  (*!
242   * Fields (frame labels).   * @begin[doc]
243     * @thysubsection{Fields (frame labels)}
244     *
245     * @end[doc]
246   *)   *)
247    
248  declare frameLabel{ 'label1; 'label2; 'label3 }  declare frameLabel{ 'label1; 'label2; 'label3 }
249    
250  (*  (*!
251   * Normal values.   * @begin[doc]
252     * @thysubsection{Normal values}
253     *
254     * @end[doc]
255   *)   *)
256    
257  declare atomNil{ 'ty }  declare atomNil{ 'ty }
# Line 218  Line 264 
264  declare atomConst{ 'ty; 'ty_var; 'int }  declare atomConst{ 'ty; 'ty_var; 'int }
265  declare atomVar{ 'var }  declare atomVar{ 'var }
266    
267  (*  (*!
268   * Allocation operators.   * @begin[doc]
269     * @thysubsection{Allocation operators}
270     *
271     * @end[doc]
272   *)   *)
273    
274  declare allocTuple{ 'tuple_class; 'ty; 'atom_list }  declare allocTuple{ 'tuple_class; 'ty; 'atom_list }
# Line 229  Line 278 
278  declare allocMalloc{ 'ty; 'atom }  declare allocMalloc{ 'ty; 'atom }
279  declare allocFrame{ 'var }  declare allocFrame{ 'var }
280    
281  (*  (*!
282   * Tail calls / operations.   * @begin[doc]
283     * @thysubsection{Tail calls / operations}
284     *
285     * @end[doc]
286   *)   *)
287    
288  declare tailSysMigrate{ 'int; 'atom1; 'atom2; 'var; 'atom_list }  declare tailSysMigrate{ 'int; 'atom1; 'atom2; 'var; 'atom_list }
# Line 238  Line 290 
290  declare tailAtomicRollback{ 'atom }  declare tailAtomicRollback{ 'atom }
291  declare tailAtomicCommit{ 'var; 'atom_list }  declare tailAtomicCommit{ 'var; 'atom_list }
292    
293  (*  (*!
294   * Predicates and assertions.   * @begin[doc]
295     * @thysubsection{Predicates and assertions}
296     *
297     * These terms encode the safety checks that an FIR program must
298     * perform in order to ensure that programs execute safely.
299     * @end[doc]
300   *)   *)
301    
302  declare isMutable{ 'var }  declare isMutable{ 'var }
# Line 247  Line 304 
304  declare boundsCheck{ 'subop; 'var; 'atom1; 'atom2 }  declare boundsCheck{ 'subop; 'var; 'atom1; 'atom2 }
305  declare elementCheck{ 'ty; 'subop; 'var; 'atom }  declare elementCheck{ 'ty; 'subop; 'var; 'atom }
306    
307  (*  (*!
308   * Debugging info.   * @begin[doc]
309     * @thysubsection{Debugging info}
310     *
311     * These terms are used to encode debugging information.
312     * @end[doc]
313   *)   *)
314    
315  declare debugLine{ 'string; 'int }  declare debugLine{ 'string; 'int }
# Line 257  Line 318 
318  declare debugString{ 'string }  declare debugString{ 'string }
319  declare debugContext{ 'debug_line; 'debug_vars }  declare debugContext{ 'debug_line; 'debug_vars }
320    
321  (*  (*!
322   * Expressions.   * @begin[doc]
323     * @thysubsection{Expressions}
324     *
325     * @end[doc]
326   *)   *)
327    
328  (* Primitive operations. *)  (* Primitive operations. *)
# Line 298  Line 362 
362    
363  declare debug{ 'debug_info; 'exp }  declare debug{ 'debug_info; 'exp }
364    
365  (*  (*!
366   * Function definition.   * @begin[doc]
367     * @thysubsection{Function definition}
368     *
369     * @end[doc]
370   *)   *)
371    
372  declare fundef{ 'debug_line; 'ty; 'var_list; 'exp }  declare fundef{ 'debug_line; 'ty; 'var_list; 'exp }
373    
374    (*! @docoff *)
375    
376  (*************************************************************************  (*************************************************************************
377   * Display forms.   * Display forms.
378   *************************************************************************)   *************************************************************************)

Legend:
Removed from v.3589  
changed lines
  Added in v.3590

  ViewVC Help
Powered by ViewVC 1.1.26