From a0fcac812ba07ea4d13210efbf5b8f92bc41827a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vouillon?= Date: Wed, 9 Oct 2024 19:14:32 +0200 Subject: [PATCH] Put locs in Parse_bytecode --- compiler/lib/generate.ml | 10 +--------- compiler/lib/parse_bytecode.ml | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/compiler/lib/generate.ml b/compiler/lib/generate.ml index 8ce83db0..a64d5ce5 100644 --- a/compiler/lib/generate.ml +++ b/compiler/lib/generate.ml @@ -1102,15 +1102,7 @@ let rec translate_expr ctx queue loc x e level : _ * J.statement_list = let clo = compile_closure ctx cont in let clo = match clo with - | (st, x) :: rem -> - let loc = - match x, source_location_ctx ctx (Before pc) with - | (J.U | J.N), (J.U | J.N) -> J.U - | x, (J.U | J.N) -> x - | (J.U | J.N), x -> x - | _, x -> x - in - (st, loc) :: rem + | (st, J.N) :: rem -> (st, J.U) :: rem | _ -> clo in let clo = diff --git a/compiler/lib/parse_bytecode.ml b/compiler/lib/parse_bytecode.ml index 2068d2d2..bf94fa9b 100644 --- a/compiler/lib/parse_bytecode.ml +++ b/compiler/lib/parse_bytecode.ml @@ -1303,8 +1303,19 @@ and compile infos pc state instrs = compile_block infos.blocks infos.debug code addr state'; if debug_parser () then Format.printf "}@."; let args = State.stack_vars state' in - let state'', _, _ = Addr.Map.find addr !compiled_blocks in - Debug.propagate (State.stack_vars state'') args; + (let state'', instrs, last = Addr.Map.find addr !compiled_blocks in + Debug.propagate (State.stack_vars state'') args; + if Debug.mem infos.debug pc + then + let loc = Code.Before pc in + match instrs, last with + | (i, No) :: rem, _ -> + compiled_blocks := + Addr.Map.add addr (state'', (i, loc) :: rem, last) !compiled_blocks + | [], (last, No) -> + compiled_blocks := + Addr.Map.add addr (state'', instrs, (last, loc)) !compiled_blocks + | (_, (Before _ | After _)) :: _, _ | [], (_, (Before _ | After _)) -> ()); compile infos (pc + 3)