src/Tools/Code/code_runtime.ML
changeset 64956 de7ce0fad5bc
parent 64955 25281bee02ac
child 64957 3faa9b31ff78
equal deleted inserted replaced
64955:25281bee02ac 64956:de7ce0fad5bc
   416   fun init _ = empty;
   416   fun init _ = empty;
   417 );
   417 );
   418 
   418 
   419 val is_first_occurrence = #first_occurrence o Code_Antiq_Data.get;
   419 val is_first_occurrence = #first_occurrence o Code_Antiq_Data.get;
   420 
   420 
   421 fun lazy_code ctxt program consts = Lazy.lazy (fn () =>
   421 fun lazy_code ctxt consts = Lazy.lazy (fn () =>
   422   let
   422   let
       
   423     val program = Code_Thingol.consts_program ctxt consts;
   423     val (code, (_, consts_map)) =
   424     val (code, (_, consts_map)) =
   424       evaluation_code ctxt Code_Target.generatedN program [] consts
   425       evaluation_code ctxt Code_Target.generatedN program [] consts
   425   in { code = code, consts_map = consts_map } end);
   426   in { code = code, consts_map = consts_map } end);
   426 
   427 
   427 fun register_const const ctxt =
   428 fun register_const const ctxt =
   428   let
   429   let
   429     val consts = insert (op =) const ((#named_consts o Code_Antiq_Data.get) ctxt);
   430     val consts = insert (op =) const ((#named_consts o Code_Antiq_Data.get) ctxt);
   430     val program = Code_Thingol.consts_program ctxt consts;
       
   431   in
   431   in
   432     ctxt
   432     ctxt
   433     |> Code_Antiq_Data.put { 
   433     |> Code_Antiq_Data.put { 
   434         named_consts = consts,
   434         named_consts = consts,
   435         first_occurrence = false,
   435         first_occurrence = false,
   436         generated_code = lazy_code ctxt program consts
   436         generated_code = lazy_code ctxt consts
   437       }
   437       }
   438   end;
   438   end;
   439 
   439 
   440 fun print_code is_first_occ const ctxt =
   440 fun print_code is_first_occ const ctxt =
   441   let
   441   let