diff options
Diffstat (limited to 'bytecomp/lambda.ml')
-rw-r--r-- | bytecomp/lambda.ml | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/bytecomp/lambda.ml b/bytecomp/lambda.ml index e12b6f458..0425799cb 100644 --- a/bytecomp/lambda.ml +++ b/bytecomp/lambda.ml @@ -4,36 +4,55 @@ open Typedtree type primitive = Pidentity + (* Globals *) | Pgetglobal of Ident.t | Psetglobal of Ident.t + (* Operations on heap blocks *) | Pmakeblock of int | Pfield of int | Psetfield of int * bool - | Pccall of primitive_description + | Pfloatfield of int + | Psetfloatfield of int + (* External call *) + | Pccall of Primitive.description + (* Exceptions *) | Praise + (* Boolean operations *) | Psequand | Psequor | Pnot + (* Integer operations *) | Pnegint | Paddint | Psubint | Pmulint | Pdivint | Pmodint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintcomp of comparison | Poffsetint of int | Poffsetref of int + (* Float operations *) | Pintoffloat | Pfloatofint | Pnegfloat | Paddfloat | Psubfloat | Pmulfloat | Pdivfloat | Pfloatcomp of comparison - | Pstringlength | Pgetstringchar | Psetstringchar - | Psafegetstringchar | Psafesetstringchar - | Pvectlength | Pgetvectitem | Psetvectitem of bool - | Psafegetvectitem | Psafesetvectitem of bool + (* String operations *) + | Pstringlength | Pstringrefu | Pstringsetu | Pstringrefs | Pstringsets + (* Array operations *) + | Pmakearray of array_kind + | Parraylength of array_kind + | Parrayrefu of array_kind + | Parraysetu of array_kind + | Parrayrefs of array_kind + | Parraysets of array_kind + (* Compaction of sparse switches *) | Ptranslate of (int * int * int) array and comparison = Ceq | Cneq | Clt | Cgt | Cle | Cge +and array_kind = + Pgenarray | Paddrarray | Pintarray | Pfloatarray + type structured_constant = Const_base of constant - | Const_block of int * structured_constant list | Const_pointer of int + | Const_block of int * structured_constant list + | Const_float_array of string list type lambda = Lvar of Ident.t |