diff options
| author | Maxime Dénès | 2018-02-16 17:53:12 +0100 |
|---|---|---|
| committer | Maxime Dénès | 2018-02-23 15:51:40 +0100 |
| commit | 557c5a2938f16c0601f5a0323c66b78d2da01ee9 (patch) | |
| tree | 8dc727525696f27856ae241bec442769e99c8e58 /kernel/retroknowledge.ml | |
| parent | aa2653b5e6877547ece7a8d3051fc67414390240 (diff) | |
New IR in VM: Clambda.
This intermediate representation serves two purposes:
1- It is a preliminary step for primitive machine integers, as iterators
will be compiled to Clambda.
2- It makes the VM compilation passes closer to the ones of
native_compute. Once we unifiy the representation of values, we should
be able to factorize the lambda-code generation between the two
compilers, as well as the reification code.
This code was written by Benjamin Grégoire and myself.
Diffstat (limited to 'kernel/retroknowledge.ml')
| -rw-r--r-- | kernel/retroknowledge.ml | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/kernel/retroknowledge.ml b/kernel/retroknowledge.ml index 88cf93acc9..24d022d698 100644 --- a/kernel/retroknowledge.ml +++ b/kernel/retroknowledge.ml @@ -102,20 +102,18 @@ module Reactive = Map.Make (EntryOrd) type reactive_info = {(*information required by the compiler of the VM *) vm_compiling : (*fastcomputation flag -> continuation -> result *) - (bool -> Cbytecodes.comp_env -> constr array -> - int->Cbytecodes.bytecodes->Cbytecodes.bytecodes) + (bool -> Cinstr.lambda array -> Cinstr.lambda) option; vm_constant_static : (*fastcomputation flag -> constructor -> args -> result*) - (bool->constr array->Cbytecodes.structured_constant) + (bool -> constr array -> Cinstr.lambda) option; vm_constant_dynamic : (*fastcomputation flag -> constructor -> reloc -> args -> sz -> cont -> result *) - (bool->Cbytecodes.comp_env->Cbytecodes.block array->int-> - Cbytecodes.bytecodes->Cbytecodes.bytecodes) + (bool -> Cinstr.lambda array -> Cinstr.lambda) option; (* fastcomputation flag -> cont -> result *) - vm_before_match : (bool -> Cbytecodes.bytecodes -> Cbytecodes.bytecodes) option; + vm_before_match : (bool -> Cinstr.lambda -> Cinstr.lambda) option; (* tag (= compiled int for instance) -> result *) vm_decompile_const : (int -> constr) option; |
