package wasm_of_ocaml-compiler

  1. Overview
  2. Docs
type packed_type =
  1. | I8
  2. | I16
type heap_type =
  1. | Func
  2. | Extern
  3. | Any
  4. | Eq
  5. | I31
  6. | Type of var
type ref_type = {
  1. nullable : bool;
  2. typ : heap_type;
}
type value_type =
  1. | I32
  2. | I64
  3. | F32
  4. | F64
  5. | Ref of ref_type
type storage_type =
  1. | Value of value_type
  2. | Packed of packed_type
type 'typ mut_type = {
  1. mut : bool;
  2. typ : 'typ;
}
type field_type = storage_type mut_type
type global_type = value_type mut_type
type func_type = {
  1. params : value_type list;
  2. result : value_type list;
}
type str_type =
  1. | Struct of field_type list
  2. | Array of field_type
  3. | Func of func_type
type ('i32, 'i64, 'f32, 'f64) op =
  1. | I32 of 'i32
  2. | I64 of 'i64
  3. | F32 of 'f32
  4. | F64 of 'f64
type signage =
  1. | S
  2. | U
type int_un_op =
  1. | Clz
  2. | Ctz
  3. | Popcnt
  4. | Eqz
  5. | TruncSatF64 of signage
  6. | ReinterpretF
type int_bin_op =
  1. | Add
  2. | Sub
  3. | Mul
  4. | Div of signage
  5. | Rem of signage
  6. | And
  7. | Or
  8. | Xor
  9. | Shl
  10. | Shr of signage
  11. | Rotl
  12. | Rotr
  13. | Eq
  14. | Ne
  15. | Lt of signage
  16. | Gt of signage
  17. | Le of signage
  18. | Ge of signage
type float_un_op =
  1. | Neg
  2. | Abs
  3. | Ceil
  4. | Floor
  5. | Trunc
  6. | Nearest
  7. | Sqrt
  8. | Convert of [ `I32 | `I64 ] * signage
  9. | ReinterpretI
type float_bin_op =
  1. | Add
  2. | Sub
  3. | Mul
  4. | Div
  5. | Min
  6. | Max
  7. | CopySign
  8. | Eq
  9. | Ne
  10. | Lt
  11. | Gt
  12. | Le
  13. | Ge
type memarg = int32
type expression =
  1. | Const of (int32, int64, float, float) op
  2. | UnOp of (int_un_op, int_un_op, float_un_op, float_un_op) op * expression
  3. | BinOp of (int_bin_op, int_bin_op, float_bin_op, float_bin_op) op * expression * expression
  4. | I32WrapI64 of expression
  5. | I64ExtendI32 of signage * expression
  6. | F32DemoteF64 of expression
  7. | F64PromoteF32 of expression
  8. | LocalGet of var
  9. | LocalTee of var * expression
  10. | GlobalGet of var
  11. | BlockExpr of func_type * instruction list
  12. | Call of var * expression list
  13. | Seq of instruction list * expression
  14. | Pop of value_type
  15. | RefFunc of var
  16. | Call_ref of var * expression * expression list
  17. | RefI31 of expression
  18. | I31Get of signage * expression
  19. | ArrayNew of var * expression * expression
  20. | ArrayNewFixed of var * expression list
  21. | ArrayNewData of var * var * expression * expression
  22. | ArrayGet of signage option * var * expression * expression
  23. | ArrayLen of expression
  24. | StructNew of var * expression list
  25. | StructGet of signage option * var * int * expression
  26. | RefCast of ref_type * expression
  27. | RefTest of ref_type * expression
  28. | RefEq of expression * expression
  29. | RefNull of heap_type
  30. | Br_on_cast of int * ref_type * ref_type * expression
  31. | Br_on_cast_fail of int * ref_type * ref_type * expression
  32. | IfExpr of value_type * expression * expression * expression
  33. | Try of func_type * instruction list * (var * int * value_type) list
and instruction =
  1. | Drop of expression
  2. | LocalSet of var * expression
  3. | GlobalSet of var * expression
  4. | Loop of func_type * instruction list
  5. | Block of func_type * instruction list
  6. | If of func_type * expression * instruction list * instruction list
  7. | Br_table of expression * int list * int
  8. | Br of int * expression option
  9. | Br_if of int * expression
  10. | Return of expression option
  11. | CallInstr of var * expression list
  12. | Nop
  13. | Push of expression
  14. | Throw of var * expression
  15. | Rethrow of int
  16. | ArraySet of var * expression * expression * expression
  17. | StructSet of var * int * expression * expression
  18. | Return_call of var * expression list
  19. | Return_call_ref of var * expression * expression list
  20. | Event of Js_of_ocaml_compiler.Parse_info.t
    (*

    Location information

    *)
type import_desc =
  1. | Fun of func_type
  2. | Global of global_type
  3. | Tag of value_type
type type_field = {
  1. name : var;
  2. typ : str_type;
  3. supertype : var option;
  4. final : bool;
}
type module_field =
  1. | Function of {
    1. name : var;
    2. exported_name : string option;
    3. typ : func_type;
    4. param_names : var list;
    5. locals : (var * value_type) list;
    6. body : instruction list;
    }
  2. | Data of {
    1. name : var;
    2. contents : string;
    }
  3. | Global of {
    1. name : var;
    2. exported_name : string option;
    3. typ : global_type;
    4. init : expression;
    }
  4. | Tag of {
    1. name : var;
    2. typ : value_type;
    }
  5. | Import of {
    1. import_module : string;
    2. import_name : string;
    3. name : var;
    4. desc : import_desc;
    }
  6. | Type of type_field list
OCaml

Innovation. Community. Security.