diff options
author | Bernhard Schommer <bernhardschommer@gmail.com> | 2015-09-20 15:36:42 +0200 |
---|---|---|
committer | Bernhard Schommer <bernhardschommer@gmail.com> | 2015-09-20 15:36:42 +0200 |
commit | a34b64ee2e7a535ebc0fc731243ab520c4ba430f (patch) | |
tree | 21404821c5554252ceafb95d8b9573b218664eab /debug/Debug.ml | |
parent | 31aceeb1be64d529432f35bbea16ebafc3a21df0 (diff) | |
download | compcert-a34b64ee2e7a535ebc0fc731243ab520c4ba430f.tar.gz compcert-a34b64ee2e7a535ebc0fc731243ab520c4ba430f.zip |
New version of adding scopes etc.
Instead of reimplementing the whole scope handling in the debug information
use the existing functionality and fill the scopes explicitly in the functions.
Diffstat (limited to 'debug/Debug.ml')
-rw-r--r-- | debug/Debug.ml | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/debug/Debug.ml b/debug/Debug.ml index bf3892d2..10b4e68f 100644 --- a/debug/Debug.ml +++ b/debug/Debug.ml @@ -30,8 +30,10 @@ type implem = mutable add_fun_addr: atom -> (int * int) -> unit; mutable generate_debug_info: unit -> dw_entry option; mutable all_files_iter: (string -> unit) -> unit; - mutable insert_local_declaration: storage -> ident -> typ -> location -> unit; + mutable insert_local_declaration: int -> storage -> ident -> typ -> location -> unit; mutable atom_local_variable: ident -> atom -> unit; + mutable enter_scope: int -> int -> unit; + mutable enter_function_scope: ident -> int -> unit; } let implem = @@ -46,8 +48,10 @@ let implem = add_fun_addr = (fun _ _ -> ()); generate_debug_info = (fun _ -> None); all_files_iter = (fun _ -> ()); - insert_local_declaration = (fun _ _ _ _ -> ()); + insert_local_declaration = (fun _ _ _ _ _ -> ()); atom_local_variable = (fun _ _ -> ()); + enter_scope = (fun _ _ -> ()); + enter_function_scope = (fun _ _ -> ()); } let init () = @@ -64,6 +68,8 @@ let init () = implem.all_files_iter <- (fun f -> DebugInformation.StringSet.iter f !DebugInformation.all_files); implem.insert_local_declaration <- DebugInformation.insert_local_declaration; implem.atom_local_variable <- DebugInformation.atom_local_variable; + implem.enter_scope <- DebugInformation.enter_scope; + implem.enter_function_scope <- DebugInformation.enter_function_scope; end else begin implem.init <- (fun _ -> ()); implem.atom_function <- (fun _ _ -> ()); @@ -75,8 +81,10 @@ let init () = implem.add_fun_addr <- (fun _ _ -> ()); implem.generate_debug_info <- (fun _ -> None); implem.all_files_iter <- (fun _ -> ()); - implem.insert_local_declaration <- (fun _ _ _ _ -> ()); + implem.insert_local_declaration <- (fun _ _ _ _ _ -> ()); implem.atom_local_variable <- (fun _ _ -> ()); + implem.enter_scope <- (fun _ _ -> ()); + implem.enter_function_scope <- (fun _ _ -> ()); end let init_compile_unit name = implem.init name @@ -89,5 +97,7 @@ let insert_global_declaration env dec = implem.insert_global_declaration env dec let add_fun_addr atom addr = implem.add_fun_addr atom addr let generate_debug_info () = implem.generate_debug_info () let all_files_iter f = implem.all_files_iter f -let insert_local_declaration sto id ty loc = implem.insert_local_declaration sto id ty loc +let insert_local_declaration scope sto id ty loc = implem.insert_local_declaration scope sto id ty loc let atom_local_variable id atom = implem.atom_local_variable id atom +let enter_scope p_id id = implem.enter_scope p_id id +let enter_function_scope fun_id sc_id = implem.enter_function_scope fun_id sc_id |