diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-07-14 11:03:11 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-07-14 11:03:11 +0200 |
| commit | 3349757d0faec529b62ba62c99ee4d7adcc84d2c (patch) | |
| tree | 5e77e8fe6e721541cd0a592d66ca002dc227d150 /src/dynarec/dynarec_native.c | |
| parent | 066d7458ca6937a16656569ad0d4427a805a2cfe (diff) | |
| download | box64-3349757d0faec529b62ba62c99ee4d7adcc84d2c.tar.gz box64-3349757d0faec529b62ba62c99ee4d7adcc84d2c.zip | |
[DYNAREC] Fixed an issue with forward jump state retreival
Diffstat (limited to 'src/dynarec/dynarec_native.c')
| -rwxr-xr-x | src/dynarec/dynarec_native.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 3ed6e003..a9611b23 100755 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -301,6 +301,13 @@ static void fillPredecessors(dynarec_native_t* dyn) dyn->insts[dyn->insts[i].x64.jmp_insts].pred_sz++; } } + // remove "has_next" from orphean branch + for(int i=0; i<dyn->size-1; ++i) { + if(!dyn->insts[i].x64.has_next) { + if(dyn->insts[i+1].x64.has_next && !dyn->insts[i+1].pred_sz) + dyn->insts[i+1].x64.has_next = 0; + } + } // second the "has_next" for(int i=0; i<dyn->size-1; ++i) { if(dyn->insts[i].x64.has_next) { |