Commit f2381ae
authored
Fix JIT crash with large number of match/switch arms (#8961)
Switch statements may generate a large number of exit points. Once the max
number of exit points is reached, get_exit_addr() returns NULL. This was not
checked, and this resulted in a jump table with some 0 addresses.1 parent b734d45 commit f2381ae
File tree
5 files changed
+1103
-1
lines changed- ext/opcache
- jit
- tests/jit
5 files changed
+1103
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13992 | 13992 | | |
13993 | 13993 | | |
13994 | 13994 | | |
| 13995 | + | |
| 13996 | + | |
| 13997 | + | |
13995 | 13998 | | |
13996 | 13999 | | |
13997 | 14000 | | |
| |||
14154 | 14157 | | |
14155 | 14158 | | |
14156 | 14159 | | |
| 14160 | + | |
| 14161 | + | |
| 14162 | + | |
14157 | 14163 | | |
14158 | 14164 | | |
14159 | 14165 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14877 | 14877 | | |
14878 | 14878 | | |
14879 | 14879 | | |
| 14880 | + | |
| 14881 | + | |
| 14882 | + | |
14880 | 14883 | | |
14881 | 14884 | | |
14882 | 14885 | | |
| |||
15043 | 15046 | | |
15044 | 15047 | | |
15045 | 15048 | | |
| 15049 | + | |
| 15050 | + | |
| 15051 | + | |
15046 | 15052 | | |
15047 | 15053 | | |
15048 | 15054 | | |
| |||
0 commit comments