66
77 Copyright (c) 2005-2020 Kestrel Technology LLC
88 Copyright (c) 2020 Henny Sipma
9- Copyright (c) 2021-2024 Aarno Labs LLC
9+ Copyright (c) 2021-2025 Aarno Labs LLC
1010
1111 Permission is hereby granted, free of charge, to any person obtaining a copy
1212 of this software and associated documentation files (the "Software"), to deal
@@ -82,6 +82,7 @@ module TR = CHTraceResult
8282
8383let x2p = xpr_formatter#pr_expr
8484let p2s = CHPrettyUtil. pretty_to_string
85+ let x2s x = p2s (x2p x)
8586
8687
8788let log_error (tag : string ) (msg : string ): tracelogspec_t =
@@ -1761,38 +1762,32 @@ object (self)
17611762 method save_register
17621763 (vmem : variable_t ) (iaddr :ctxt_iaddress_t ) (reg :register_t ) =
17631764 if self#env#is_stack_variable vmem then
1764- log_tfold
1765- (log_error " save_register" " invalid offset" )
1765+ TR. tfold
17661766 ~ok: (fun offset ->
17671767 match offset with
17681768 | ConstantOffset (n , NoOffset) ->
17691769 self#stackframe#add_register_spill ~offset: n#toInt reg iaddr
17701770 | _ ->
1771- ch_error_log#add
1772- " save_register:no offset"
1773- ( LBLOCK [
1774- self#get_address#toPretty;
1775- STR " " ;
1776- STR iaddr;
1777- STR " : " ;
1778- vmem#toPretty;
1779- STR " ( " ;
1780- STR (register_to_string reg);
1781- STR " )" ]))
1782- ~error: ( fun _ -> ( ) )
1771+ log_error_result
1772+ ~msg: " save_register:not a constant offset"
1773+ __FILE__ __LINE__
1774+ [ " ( " ^ (p2s self#get_address#toPretty) ^ " , " ^ iaddr ^ " ): " ;
1775+ (p2s vmem#toPretty) ^ " with " ^ (register_to_string reg)
1776+ ^ " and offset " ^ (memory_offset_to_string offset)])
1777+ ~error: ( fun e ->
1778+ log_error_result
1779+ ~msg: " save_register "
1780+ __FILE__ __LINE__
1781+ ([ " ( " ^ (p2s self#get_address#toPretty) ^ " , " ^ iaddr ^ " ): " ;
1782+ (p2s vmem#toPretty) ^ " with " ^ (register_to_string reg)] @ e ))
17831783 (self#env#get_memvar_offset vmem)
17841784 else
1785- ch_error_log#add
1786- " save_register:not a stack variable"
1787- (LBLOCK [
1788- self#get_address#toPretty;
1789- STR " " ;
1790- STR iaddr;
1791- STR " : " ;
1792- vmem#toPretty;
1793- STR " (" ;
1794- STR (register_to_string reg);
1795- STR " )" ])
1785+ log_error_result
1786+ ~msg: " save register:not a stack variable"
1787+ __FILE__ __LINE__
1788+ [" (" ^ (p2s self#get_address#toPretty) ^ " ," ^ iaddr ^ " ): " ;
1789+ " not a stack variable: "
1790+ ^ (p2s vmem#toPretty) ^ " with " ^ (register_to_string reg)]
17961791
17971792 method restore_register
17981793 (memaddr : xpr_t ) (iaddr :ctxt_iaddress_t ) (reg :register_t ) =
@@ -1803,54 +1798,30 @@ object (self)
18031798 | XConst (IntConst n ) ->
18041799 self#stackframe#add_register_restore ~offset: n#neg#toInt reg iaddr
18051800 | _ ->
1806- ch_error_log#add
1807- " restore_register:no offset"
1808- (LBLOCK [
1809- self#get_address#toPretty;
1810- STR " " ;
1811- STR iaddr;
1812- STR " : " ;
1813- x2p memaddr;
1814- STR " (" ;
1815- STR (register_to_string reg);
1816- STR " )" ])
1801+ log_error_result
1802+ ~msg: " restore register:not a constant offset"
1803+ __FILE__ __LINE__
1804+ [" (" ^ (p2s self#get_address#toPretty) ^ " ," ^ iaddr ^ " )" ;
1805+ (x2s memaddr)]
18171806 else
1818- ch_error_log#add
1819- " restore_register:not an initial value"
1820- (LBLOCK [
1821- self#get_address#toPretty;
1822- STR " " ;
1823- STR iaddr;
1824- STR " : " ;
1825- x2p memaddr;
1826- STR " (" ;
1827- STR (register_to_string reg);
1828- STR " )" ])
1807+ ()
18291808 | _ ->
1830- ch_error_log#add
1831- " restore_register:not a stack address"
1832- (LBLOCK [
1833- self#get_address#toPretty;
1834- STR " " ;
1835- STR iaddr;
1836- STR " : " ;
1837- x2p memaddr;
1838- STR " (" ;
1839- STR (register_to_string reg);
1840- STR " )" ])
1809+ ()
18411810
18421811 method saved_registers_to_pretty =
18431812 let p = ref [] in
18441813 let _ =
1845- H. iter (fun _ s -> p := (LBLOCK [ s#toPretty ; NL ]) :: ! p) saved_registers in
1814+ H. iter (fun _ s -> p := (LBLOCK [s#toPretty; NL ]) :: ! p) saved_registers in
18461815 match ! p with
18471816 [] ->
1848- LBLOCK [ STR (string_repeat " ~" 80 ) ; NL ; STR " No saved registers" ; NL ;
1849- STR (string_repeat " ~" 80 ) ; NL ]
1817+ LBLOCK [
1818+ STR (string_repeat " ~" 80 ); NL ; STR " No saved registers" ; NL ;
1819+ STR (string_repeat " ~" 80 ); NL ]
18501820 | l ->
1851- LBLOCK [ STR " Saved Registers" ; NL ; STR (string_repeat " ~" 80 ) ; NL ;
1852- LBLOCK l ; NL ;
1853- STR (string_repeat " ~" 80 ) ; NL ]
1821+ LBLOCK [
1822+ STR " Saved Registers" ; NL ; STR (string_repeat " ~" 80 ); NL ;
1823+ LBLOCK l; NL ;
1824+ STR (string_repeat " ~" 80 ); NL ]
18541825
18551826 method set_nonreturning =
18561827 if nonreturning then () else
@@ -1877,7 +1848,8 @@ object (self)
18771848 (LBLOCK [
18781849 function_interface_to_pretty fs#get_function_interface;
18791850 STR " with function signature " ;
1880- STR (btype_to_string fs#get_function_interface.fintf_type_signature.fts_returntype)])
1851+ STR (btype_to_string
1852+ fs#get_function_interface.fintf_type_signature.fts_returntype)])
18811853 end
18821854
18831855 method read_xml_user_summary (node :xml_element_int ) =
0 commit comments