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 |