/[svn]/runtime/eval.ml
ViewVC logotype

Diff of /runtime/eval.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 712 by abate, Tue Jul 10 17:56:40 2007 UTC revision 713 by abate, Tue Jul 10 17:58:04 2007 UTC
# Line 27  Line 27 
27  let rec eval env e0 = match e0.Typed.exp_descr with  let rec eval env e0 = match e0.Typed.exp_descr with
28    | Typed.Forget (e,_) -> eval env e    | Typed.Forget (e,_) -> eval env e
29    | Typed.Var s -> (match Env.find s env with Value.Delayed x -> !x | x -> x)    | Typed.Var s -> (match Env.find s env with Value.Delayed x -> !x | x -> x)
30      | Typed.ExtVar _ -> assert false
31    | Typed.Apply (f,arg) ->  eval_apply (eval env f) (eval env arg)    | Typed.Apply (f,arg) ->  eval_apply (eval env f) (eval env arg)
32    | Typed.Abstraction a -> eval_abstraction env a    | Typed.Abstraction a -> eval_abstraction env a
33    | Typed.RecordLitt r -> Record (LabelMap.map (eval env) r)    | Typed.RecordLitt r -> Record (LabelMap.map (eval env) r)
# Line 291  Line 292 
292  let frame = ref 0  let frame = ref 0
293  let sp = ref 0  let sp = ref 0
294    
295    let comp_unit () =
296      let r = Array.sub !stack 0 !sp in
297      sp := 0;
298      r
299    
300  let dump ppf =  let dump ppf =
301    Format.fprintf ppf "sp = %i   frame = %i@." !sp !frame;    Format.fprintf ppf "sp = %i   frame = %i@." !sp !frame;
302    for i = 0 to !sp - 1 do    for i = 0 to !sp - 1 do
# Line 316  Line 322 
322    
323  let calls = ref 0  let calls = ref 0
324    
325    let from_comp_unit = ref (fun cu pos -> assert false)
326    
327  let eval_var env = function  let eval_var env = function
328    | Env i -> env.(i)    | Env i -> env.(i)
329    | Global i -> !stack.(i)    | Global i -> !stack.(i)
# Line 324  Line 332 
332    
333  let rec eval env = function  let rec eval env = function
334    | Var x -> eval_var env x    | Var x -> eval_var env x
335      | ExtVar (cu,pos) -> !from_comp_unit cu pos
336    | Apply (false,e1,e2) ->    | Apply (false,e1,e2) ->
337        let v1 = eval env e1 in        let v1 = eval env e1 in
338        let v2 = eval env e2 in        let v2 = eval env e2 in

Legend:
Removed from v.712  
changed lines
  Added in v.713

CVS Admin">CVS Admin
ViewVC Help
Powered by ViewVC 1.1.5