@@ -522,13 +522,13 @@ def sysmon_py_return(
522
522
if self .stats is not None :
523
523
self .stats ["returns" ] += 1
524
524
code_info = self .code_infos .get (id (code ))
525
- if code_info is not None and code_info .file_data is not None :
526
- assert code_info . byte_to_line is not None
527
- last_line = code_info .byte_to_line [instruction_offset ]
528
- if last_line is not None :
529
- arc = (last_line , - code .co_firstlineno )
530
- cast ( set [ TArc ], code_info .file_data ) .add (arc )
531
- # log(f"adding {arc=}")
525
+ # code_info is not None and code_info.file_data is not None, since we
526
+ # wouldn't have enabled this event if they were.
527
+ last_line = code_info .byte_to_line [instruction_offset ] # type: ignore
528
+ if last_line is not None :
529
+ arc = (last_line , - code .co_firstlineno )
530
+ code_info .file_data .add (arc ) # type: ignore
531
+ # log(f"adding {arc=}")
532
532
return DISABLE
533
533
534
534
@panopticon ("code" , "line" )
@@ -537,9 +537,12 @@ def sysmon_line_lines(self, code: CodeType, line_number: TLineNo) -> MonitorRetu
537
537
if self .stats is not None :
538
538
self .stats ["line_lines" ] += 1
539
539
code_info = self .code_infos .get (id (code ))
540
+ # It should be true that code_info is not None and code_info.file_data
541
+ # is not None, since we wouldn't have enabled this event if they were.
542
+ # But somehow code_info can be None here, so we have to check.
540
543
if code_info is not None and code_info .file_data is not None :
541
- cast ( set [ TLineNo ], code_info .file_data ) .add (line_number )
542
- # log(f"adding {line_number=}")
544
+ code_info .file_data .add (line_number ) # type: ignore
545
+ # log(f"adding {line_number=}")
543
546
return DISABLE
544
547
545
548
@panopticon ("code" , "line" )
@@ -548,10 +551,11 @@ def sysmon_line_arcs(self, code: CodeType, line_number: TLineNo) -> MonitorRetur
548
551
if self .stats is not None :
549
552
self .stats ["line_arcs" ] += 1
550
553
code_info = self .code_infos [id (code )]
551
- if code_info .file_data is not None :
552
- arc = (line_number , line_number )
553
- cast (set [TArc ], code_info .file_data ).add (arc )
554
- # log(f"adding {arc=}")
554
+ # code_info is not None and code_info.file_data is not None, since we
555
+ # wouldn't have enabled this event if they were.
556
+ arc = (line_number , line_number )
557
+ code_info .file_data .add (arc ) # type: ignore
558
+ # log(f"adding {arc=}")
555
559
return DISABLE
556
560
557
561
@panopticon ("code" , "@" , "@" )
@@ -562,33 +566,34 @@ def sysmon_branch_either(
562
566
if self .stats is not None :
563
567
self .stats ["branches" ] += 1
564
568
code_info = self .code_infos [id (code )]
565
- if code_info .file_data is not None :
566
- if not code_info .branch_trails :
567
- if self .stats is not None :
568
- self .stats ["branch_trails" ] += 1
569
- populate_branch_trails (code , code_info )
570
- # log(f"branch_trails for {code}:\n {code_info.branch_trails}")
571
- added_arc = False
572
- dest_info = code_info .branch_trails .get (instruction_offset )
573
- # log(f"{dest_info = }")
574
- if dest_info is not None :
575
- for offsets , arc in dest_info :
576
- if arc is None :
577
- continue
578
- if destination_offset in offsets :
579
- cast (set [TArc ], code_info .file_data ).add (arc )
580
- # log(f"adding {arc=}")
581
- added_arc = True
582
- break
583
-
584
- if not added_arc :
585
- # This could be an exception jumping from line to line.
586
- assert code_info .byte_to_line is not None
587
- l1 = code_info .byte_to_line [instruction_offset ]
588
- l2 = code_info .byte_to_line [destination_offset ]
589
- if l1 != l2 :
590
- arc = (l1 , l2 )
591
- cast (set [TArc ], code_info .file_data ).add (arc )
592
- # log(f"adding unforeseen {arc=}")
569
+ # code_info is not None and code_info.file_data is not None, since we
570
+ # wouldn't have enabled this event if they were.
571
+ if not code_info .branch_trails :
572
+ if self .stats is not None :
573
+ self .stats ["branch_trails" ] += 1
574
+ populate_branch_trails (code , code_info )
575
+ # log(f"branch_trails for {code}:\n {code_info.branch_trails}")
576
+ added_arc = False
577
+ dest_info = code_info .branch_trails .get (instruction_offset )
578
+ # log(f"{dest_info = }")
579
+ if dest_info is not None :
580
+ for offsets , arc in dest_info :
581
+ if arc is None :
582
+ continue
583
+ if destination_offset in offsets :
584
+ code_info .file_data .add (arc ) # type: ignore
585
+ # log(f"adding {arc=}")
586
+ added_arc = True
587
+ break
588
+
589
+ if not added_arc :
590
+ # This could be an exception jumping from line to line.
591
+ assert code_info .byte_to_line is not None
592
+ l1 = code_info .byte_to_line [instruction_offset ]
593
+ l2 = code_info .byte_to_line [destination_offset ]
594
+ if l1 != l2 :
595
+ arc = (l1 , l2 )
596
+ code_info .file_data .add (arc ) # type: ignore
597
+ # log(f"adding unforeseen {arc=}")
593
598
594
599
return DISABLE
0 commit comments