aboutsummaryrefslogtreecommitdiff
path: root/kernel/cbytegen.ml
diff options
context:
space:
mode:
authorherbelin2010-05-09 14:48:55 +0000
committerherbelin2010-05-09 14:48:55 +0000
commitbf8f56f2a19fab3c7de947c0dc928e7b4f4ac6ff (patch)
tree26641b0d0c3057950cbe9d990b0a088e09ea9b09 /kernel/cbytegen.ml
parentb46df5d90fd3f4a878a1804c4ee0abb5098b71d1 (diff)
Added a few informations about file lineages (for the most part in kernel)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@13005 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/cbytegen.ml')
-rw-r--r--kernel/cbytegen.ml46
1 files changed, 30 insertions, 16 deletions
diff --git a/kernel/cbytegen.ml b/kernel/cbytegen.ml
index 68ee15ab7c..68f0d7936d 100644
--- a/kernel/cbytegen.ml
+++ b/kernel/cbytegen.ml
@@ -1,3 +1,17 @@
+(************************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(************************************************************************)
+
+(* $Id$ *)
+
+(* Author: Benjamin Grégoire as part of the bytecode-based virtual reduction
+ machine, Oct 2004 *)
+(* Extension: Arnaud Spiwack (support for native arithmetic), May 2005 *)
+
open Util
open Names
open Cbytecodes
@@ -7,15 +21,15 @@ open Declarations
open Pre_env
-(* Compilation des variables + calcul des variables libres *)
+(* Compilation des variables + calcul des variables libres *)
-(* Dans la machine virtuel il n'y a pas de difference entre les *)
+(* Dans la machine virtuelle il n'y a pas de difference entre les *)
(* fonctions et leur environnement *)
-(* Representation de l'environnements des fonctions : *)
+(* Representation de l'environnement des fonctions : *)
(* [clos_t | code | fv1 | fv2 | ... | fvn ] *)
(* ^ *)
-(* l'offset pour l'acces au variable libre est 1 (il faut passer le *)
+(* l'offset pour l'acces aux variables libres est 1 (il faut passer le *)
(* pointeur de code). *)
(* Lors de la compilation, les variables libres sont stock'ees dans *)
(* [in_env] dans l'ordre inverse de la representation machine, ceci *)
@@ -28,21 +42,21 @@ open Pre_env
(* Dans le corps de la fonction [arg1] est repr'esent'e par le de Bruijn *)
(* [n], [argn] par le de Bruijn [1] *)
-(* Representation des environnements des points fix mutuels : *)
+(* Representation des environnements des points fixes mutuels : *)
(* [t1|C1| ... |tc|Cc| ... |t(nbr)|C(nbr)| fv1 | fv2 | .... | fvn | type] *)
(* ^<----------offset---------> *)
(* type = [Ct1 | .... | Ctn] *)
-(* Ci est le code correspondant au corps du ieme point fix *)
-(* Lors de l'evaluation d'un point fix l'environnement est un pointeur *)
+(* Ci est le code correspondant au corps du ieme point fixe *)
+(* Lors de l'evaluation d'un point fixe l'environnement est un pointeur *)
(* sur la position correspondante a son code. *)
-(* Dans le corps de chaque point fix le de Bruijn [nbr] represente, *)
-(* le 1er point fix de la declaration mutuelle, le de Bruijn [1] le *)
+(* Dans le corps de chaque point fixe le de Bruijn [nbr] represente, *)
+(* le 1er point fixe de la declaration mutuelle, le de Bruijn [1] le *)
(* nbr-ieme. *)
(* L'acces a ces variables se fait par l'instruction [Koffsetclosure] *)
(* (decalage de l'environnement) *)
-(* Ceci permet de representer tout les point fix mutuels en un seul bloc *)
-(* [Ct1 | ... | Ctn] est un tableau contant le code d'evaluation des *)
+(* Ceci permet de representer les points fixes mutuels en un seul bloc *)
+(* [Ct1 | ... | Ctn] est un tableau contenant le code d'evaluation des *)
(* types des points fixes, ils sont utilises pour tester la conversion *)
(* Leur environnement d'execution est celui du dernier point fix : *)
(* [t1|C1| ... |tc|Cc| ... |t(nbr)|C(nbr)| fv1 | fv2 | .... | fvn | type] *)
@@ -59,7 +73,7 @@ open Pre_env
(* ... *)
(* fcofixnbr = [clos_t | codenbr | a1 |...| anbr | fv1 |...| fvn | type] *)
(* ^ *)
-(* Les block [ai] sont des fonctions qui accumulent leurs arguments : *)
+(* Les blocs [ai] sont des fonctions qui accumulent leurs arguments : *)
(* ai arg1 argp ---> *)
(* ai' = [A_t | accumulate | [Cfx_t | fcofixi] | arg1 | ... | argp ] *)
(* Si un tel bloc arrive sur un [match] il faut forcer l'evaluation, *)
@@ -68,10 +82,10 @@ open Pre_env
(* l'evaluation : *)
(* ai' <-- *)
(* [A_t | accumulate | [Cfxe_t |fcofixi|result] | arg1 | ... | argp ] *)
-(* L'avantage de cette representation est qu'elle permet d'evaluer qu'une *)
-(* fois l'application d'un cofix (evaluation lazy) *)
-(* De plus elle permet de creer facilement des cycles quand les cofix ne *)
-(* n'ont pas d'aruments, ex: *)
+(* L'avantage de cette representation est qu'elle permet de n'evaluer *)
+(* qu'une fois l'application d'un cofix (evaluation lazy) *)
+(* De plus elle permet de creer facilement des cycles quand les cofix *)
+(* n'ont pas d'argument, ex: *)
(* cofix one := cons 1 one *)
(* a1 = [A_t | accumulate | [Cfx_t|fcofix1] ] *)
(* fcofix1 = [clos_t | code | a1] *)