push
github
Check frame size limit before returning to a lower frame. Thanks to Sergey Kaplun. (cherry picked from commit 302366a33) When compiling a stitched (or side) trace, there is no check for the frame size of the current prototype during recording. Hence, when we return (for example, after stitching) to the lower frame with a maximum possible frame size (249), the 251 = `baseslot` (2) + `maxslot` (249) slot for GC64 mode may be used. This leads to the corresponding assertion failure in `rec_check_slots()`. This patch adds the corresponding check. The `LJ_MAX_JSLOTS` and `LJ_MAX_SLOTS` are equal by default, but their values may be manually changed for some custom builds. Hence, the check is not enabled only for `LJ_GC64` mode. Sergey Kaplun: * added the description and the test for the problem Part of tarantool/tarantool#9595 Reviewed-by: Maxim Kokryashkin <m.kokryashkin@tarantool.org> Reviewed-by: Sergey Bronnikov <sergeyb@tarantool.org> Signed-off-by: Sergey Kaplun <skaplun@tarantool.org> (cherry picked from commit 194a6fbc7)
5662 of 6018 branches covered (94.08%)
Branch coverage included in aggregate %.
2 of 2 new or added lines in 1 file covered. (100.0%)
5 existing lines in 3 files now uncovered.21626 of 23416 relevant lines covered (92.36%)
2816159.79 hits per line