Project

General

Profile

Revision ef34b4ae src/machine_code.ml

View differences:

src/machine_code.ml
165 165
let arrow_top_decl =
166 166
  {
167 167
    top_decl_desc = Node arrow_desc;
168
    top_decl_owner = Version.prefix;
169
    top_decl_itf = false;
168 170
    top_decl_loc = Location.dummy_loc
169 171
  }
170 172

  
......
224 226
    if ISet.exists (fun v -> v.var_id = id) m
225 227
    then StateVar var_id
226 228
    else LocalVar var_id
227
  with Not_found -> (* id is a constant *)
228
    LocalVar (Corelang.var_decl_of_const (Hashtbl.find Corelang.consts_table id))
229
  with Not_found ->
230
    try (* id is a constant *)
231
      LocalVar (Corelang.var_decl_of_const (const_of_top (Hashtbl.find Corelang.consts_table id)))
232
    with Not_found ->
233
      (* id is a tag *)
234
      Cst (Const_tag id)
229 235

  
230 236
let rec control_on_clock node ((m, si, j, d, s) as args) ck inst =
231 237
 match (Clocks.repr ck).cdesc with
......
446 452
let translate_decl nd sch =
447 453
  (*Log.report ~level:1 (fun fmt -> Printers.pp_node fmt nd);*)
448 454

  
449
(*
450
  let eqs_rev, remainder = 
451
    List.fold_left 
452
      (fun (accu, node_eqs_remainder) v -> 
453
	  if List.exists (fun eq -> List.mem v eq.eq_lhs) accu
454
	  then
455
	    (accu, node_eqs_remainder)
456
	  else
457
	    (*if   List.exists (fun vdecl -> vdecl.var_id = v) nd.node_locals
458
	      || List.exists (fun vdecl -> vdecl.var_id = v) nd.node_outputs
459
	    then*)
460
	      let eq_v, remainder = find_eq v node_eqs_remainder in
461
	      eq_v::accu, remainder
462
	    (* else it is a constant value, checked during typing phase
463
	    else	 
464
	      accu, node_eqs_remainder *)
465
      ) 
466
      ([], split_eqs) 
467
      sch 
468
  in
469
 *)
470 455
  let sorted_eqs = sort_equations_from_schedule nd sch in
471 456

  
472 457
  let init_args = ISet.empty, [], Utils.IMap.empty, List.fold_right (fun l -> ISet.add l) nd.node_locals ISet.empty, [] in
......
506 491
let translate_prog decls node_schs =
507 492
  let nodes = get_nodes decls in 
508 493
  List.map 
509
    (fun node -> 
494
    (fun decl -> 
495
     let node = node_of_top decl in
510 496
      let sch = (Utils.IMap.find node.node_id node_schs).Scheduling.schedule in
511 497
      translate_decl node sch 
512 498
    ) nodes

Also available in: Unified diff