Skip to content

Commit

Permalink
Avoiding wrap-around semantics in register profiling
Browse files Browse the repository at this point in the history
  • Loading branch information
ckirsch committed May 28, 2022
1 parent 03fcd33 commit 9f7dd5b
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions selfie.c
Original file line number Diff line number Diff line change
Expand Up @@ -6228,7 +6228,8 @@ uint64_t is_temporary_register(uint64_t reg) {
void read_register_wrap(uint64_t reg, uint64_t wrap) {
if (*(writes_per_register + reg) > 0) {
// register has been written to before
*(reads_per_register + reg) = *(reads_per_register + reg) + 1;
if (*(reads_per_register + reg) < UINT64_MAX)
*(reads_per_register + reg) = *(reads_per_register + reg) + 1;

// tolerate unwrapped values in register-to-register transfers
if (wrap)
Expand Down Expand Up @@ -6258,7 +6259,8 @@ void write_register_wrap(uint64_t reg, uint64_t wrap) {
if (wrap)
*(registers + reg) = sign_shrink(*(registers + reg), WORDSIZEINBITS);

*(writes_per_register + reg) = *(writes_per_register + reg) + 1;
if (*(writes_per_register + reg) < UINT64_MAX)
*(writes_per_register + reg) = *(writes_per_register + reg) + 1;
}

void write_register(uint64_t reg) {
Expand Down

0 comments on commit 9f7dd5b

Please sign in to comment.