diff options
| author | Mike Pall <mike> | 2022-01-16 21:01:52 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2022-01-16 21:01:52 +0100 |
| commit | 4077f0c3d66ee9d74c705e605038271ceb39238e (patch) | |
| tree | ac47e9e6b9eb9d14f729116cea0fd1789bf7f45f | |
| parent | 1dddc55ca39f22f35b315e448fe1b79a57ad0cd4 (diff) | |
| download | luajit-4077f0c3d66ee9d74c705e605038271ceb39238e.tar.gz luajit-4077f0c3d66ee9d74c705e605038271ceb39238e.tar.bz2 luajit-4077f0c3d66ee9d74c705e605038271ceb39238e.zip | |
Prevent unroll across BC_ITERN.
Reported by Marukyu.
| -rw-r--r-- | src/lj_record.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 44163e5b..d4d687e7 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
| @@ -667,6 +667,7 @@ static LoopEvent rec_itern(jit_State *J, BCReg ra, BCReg rb) | |||
| 667 | (J->cur.nins > REF_FIRST+1 || | 667 | (J->cur.nins > REF_FIRST+1 || |
| 668 | (J->cur.nins == REF_FIRST+1 && J->cur.ir[REF_FIRST].o != IR_PROF)) && | 668 | (J->cur.nins == REF_FIRST+1 && J->cur.ir[REF_FIRST].o != IR_PROF)) && |
| 669 | J->framedepth + J->retdepth == 0 && J->parent == 0 && J->exitno == 0) { | 669 | J->framedepth + J->retdepth == 0 && J->parent == 0 && J->exitno == 0) { |
| 670 | J->instunroll = 0; /* Cannot continue unrolling across an ITERN. */ | ||
| 670 | lj_record_stop(J, LJ_TRLINK_LOOP, J->cur.traceno); /* Looping trace. */ | 671 | lj_record_stop(J, LJ_TRLINK_LOOP, J->cur.traceno); /* Looping trace. */ |
| 671 | return LOOPEV_ENTER; | 672 | return LOOPEV_ENTER; |
| 672 | } | 673 | } |
