package coq

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
module Label : sig ... end
type instruction =
  1. | Klabel of Label.t
  2. | Kacc of int
    (*

    accu = spn

    *)
  3. | Kenvacc of int
    (*

    accu = coq_envn

    *)
  4. | Koffsetclosure of int
    (*

    accu = &coq_envn

    *)
  5. | Kpush
    (*

    sp = accu :: sp

    *)
  6. | Kpop of int
    (*

    sp = skipn n sp

    *)
  7. | Kpush_retaddr of Label.t
    (*

    sp = pc :: coq_env :: coq_extra_args :: sp ; coq_extra_args = 0

    *)
  8. | Kshort_apply of int
    (*

    number of arguments (arguments on top of stack)

    *)
  9. | Kapply of int
    (*

    number of arguments (arguments on top of stack)

    *)
  10. | Kappterm of int * int
    (*

    number of arguments, slot size

    *)
  11. | Kreturn of int
    (*

    slot size

    *)
  12. | Kjump
  13. | Krestart
  14. | Kgrab of int
    (*

    number of arguments

    *)
  15. | Kgrabrec of int
    (*

    rec arg

    *)
  16. | Kclosure of Label.t * int
    (*

    label, number of free variables

    *)
  17. | Kclosurerec of int * int * Label.t array * Label.t array
    (*

    nb fv, init, lbl types, lbl bodies

    *)
  18. | Kclosurecofix of int * int * Label.t array * Label.t array
    (*

    nb fv, init, lbl types, lbl bodies

    *)
  19. | Kgetglobal of Names.Constant.t
  20. | Kconst of Vmvalues.structured_constant
  21. | Kmakeblock of int * Vmvalues.tag
    (*

    allocate an ocaml block. Index 0 ** is accu, all others are popped from ** the top of the stack

    *)
  22. | Kmakeswitchblock of Label.t * Label.t * Vmvalues.annot_switch * int
  23. | Kswitch of Label.t array * Label.t array
    (*

    consts,blocks

    *)
  24. | Kpushfields of int
  25. | Kfield of int
    (*

    accu = accun

    *)
  26. | Ksetfield of int
    (*

    accun = sp0 ; sp = pop sp

    *)
  27. | Kstop
  28. | Ksequence of bytecodes
  29. | Kproj of Names.Projection.Repr.t
  30. | Kensurestackcapacity of int
  31. | Kbranch of Label.t
    (*

    jump to label, is it needed ?

    *)
  32. | Kprim of CPrimitives.t * Constr.pconstant
  33. | Kcamlprim of CPrimitives.t * Label.t
and bytecodes = instruction list
val pp_bytecodes : bytecodes -> Pp.t
type fv_elem =
  1. | FVnamed of Names.Id.t
  2. | FVrel of int
  3. | FVuniv_var of int
  4. | FVevar of Evar.t
type fv = fv_elem array
val pp_fv_elem : fv_elem -> Pp.t