Ignore:
Timestamp:
Jan 19, 2011, 6:23:27 PM (9 years ago)
Author:
campbell
Message:

Port memory spaces changes to latest prototype compiler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Deliverables/D2.3/8051-memoryspaces-branch/src/clight/clightInterpret.ml

    r453 r460  
    3434  | Tfloat _            -> assert false (* Not supported *)
    3535  | Tpointer _          -> Mem.ptr_size
    36   | Tarray (t,s)        -> s*(sizeof t)                   
     36  | Tarray (_,t,s)      -> s*(sizeof t)                   
    3737  | Tfunction (_,_)     -> assert false (* Not supported *)
    3838  | Tstruct (_,lst)     ->
     
    5656  | Tfloat _            -> assert false (* Not supported *)
    5757  | Tpointer _          -> Mem.mq_of_ptr
    58   | Tarray (c,s)        -> Mem.mq_of_ptr
     58  | Tarray (_,c,s)      -> Mem.mq_of_ptr
    5959  | Tfunction (_,_)     -> assert false (* Not supported *)
    6060  | Tstruct (_,_)       -> Mem.mq_of_ptr
     
    187187  | _ -> false
    188188let is_pointer_type = function
    189   | Tpointer _ | Tarray (_,_) | Tstruct (_,_)
     189  | Tpointer _ | Tarray _ | Tstruct (_,_)
    190190  | Tunion (_,_) | Tcomp_ptr _ -> true
    191191  | _ -> false
     
    203203  (* Cast float*)
    204204  | (v,_,Tfloat _)                              -> assert false(*Not supported*)
    205   (* Cast pointeur *)
    206   | (v,Tarray(_,_),Tpointer _)                  -> v
    207   | (v,Tpointer _,Tarray(_,_))                  -> v
     205  (* Cast pointeur FIXME: ignores memory spaces *)
     206  | (v,Tarray _,Tpointer _)                     -> v
     207  | (v,Tpointer _,Tarray _)                     -> v
    208208  | (v,Tpointer _,Tpointer _)                   -> v
    209   | (v,Tarray (_,_),Tarray(_,_))                -> v
     209  | (v,Tarray _,Tarray _)                       -> v
    210210  (*Struct and pointer to struct FIXME: is it correct ?*)
    211   | (v,Tstruct(a,b),Tpointer (Tstruct(c,d))) when a=c && b=d -> v
    212   | (v,Tpointer (Tstruct(a,b)),Tstruct(c,d)) when a=c && b=d -> v
     211  | (v,Tstruct(a,b),Tpointer (_,Tstruct(c,d))) when a=c && b=d -> v
     212  | (v,Tpointer (_,Tstruct(a,b)),Tstruct(c,d)) when a=c && b=d -> v
    213213  (*Union and pointer to union FIXME: is it correct ?*)
    214   | (v,Tunion(a,b),Tpointer (Tunion(c,d))) when a=c && b=d -> v
    215   | (v,Tpointer (Tunion(a,b)),Tunion(c,d)) when a=c && b=d -> v
     214  | (v,Tunion(a,b),Tpointer (_,Tunion(c,d))) when a=c && b=d -> v
     215  | (v,Tpointer (_,Tunion(a,b)),Tunion(c,d)) when a=c && b=d -> v
    216216  (* error *)
    217217  | (e,_,_)                                     ->
     
    226226
    227227let get_subtype = function
    228   | Tarray(t,_) -> t
    229   | Tpointer t -> t
     228  | Tarray(_,t,_) -> t
     229  | Tpointer (_,t) -> t
    230230  | _ -> assert false (*Misuse of get_subtype*)
    231231
     
    481481
    482482let is_struct = function
    483   | Tarray (_,_) | Tunion (_,_) | Tstruct (_,_) -> true
     483  | Tarray _ | Tunion (_,_) | Tstruct (_,_) -> true
    484484  | _ -> false
    485485
     
    641641  | Init_addrof (_,_)   -> assert false (*FIXME what is this ?*)
    642642
    643 let alloc_datas m ((_,lst),ty) =
     643(* FIXME: ignores memory space *)
     644let alloc_datas m (((_,lst),_),ty) =
    644645  let store_data (m,ptr) = function (*FIXME signed ?*)
    645646    | Init_int8  i -> (Mem.store m Memory.MQ_int8signed ptr (Value.of_int i)
     
    661662    Valtbl.add f (Value.of_int (-i-1)) fct;
    662663    (g,f)
     664  (* FIXME: ignores memory space *)
    663665  and alloc_var (m,g) v =
    664666    let (m',ptr) = alloc_datas m v in
     
    666668        let (m2,ptr2) = Mem.alloc m' (Mem.ptr_size) in
    667669        let m3 = Mem.store m2 Mem.mq_of_ptr ptr2 ptr in
    668         Hashtbl.add g (fst (fst v)) ptr2;(m3,g)
     670        Hashtbl.add g (fst (fst (fst v))) ptr2;(m3,g)
    669671      else
    670         ( (Hashtbl.add g (fst (fst v)) ptr);(m',g) )
     672        ( (Hashtbl.add g (fst (fst (fst v))) ptr);(m',g) )
    671673  in let (m,g) =
    672674    List.fold_left alloc_var (Mem.empty,Hashtbl.create 13) prog.prog_vars
Note: See TracChangeset for help on using the changeset viewer.