Ilija Tovilo
455ae2880e
Fix function JIT JMPNZ smart branch
...
When a smart branch and jump live in separate basic blocks, the JIT can't skip
the jitting of the jump, as it may be reachable through another predecessor.
When the smart branch is executed using zend_jit_handler(), we're manually
writing the result of the branch to the given temporary so that the jump will
work as expected. That happens in zend_jit_set_cond().
However, this was only correctly handled for JMPZ branches. The current opline
was compared to opline following the jump, which would set the var to 1 if
equal, i.e. the branch was not taken, meaning var was not zero. For JMPNZ we
need to do the opposite.
Fixes GH-21593
2026-04-02 11:33:06 +02:00
..
2022-04-22 18:14:08 +02:00
2024-03-26 21:29:07 +01:00
2026-04-02 11:33:06 +02:00
2024-04-08 20:16:35 +02:00
2026-01-15 16:13:43 +01:00
2021-09-22 15:55:25 +02:00
2024-04-30 14:34:43 +02:00
2023-09-01 12:39:03 +02:00
2022-06-17 14:12:53 +02:00
2024-04-30 14:34:43 +02:00
2024-03-13 21:40:26 +01:00
2022-06-17 14:12:53 +02:00
2024-03-13 21:40:26 +01:00
2023-07-17 15:51:24 +01:00
2023-03-17 18:12:51 +01:00
2024-09-09 09:55:52 +03:00
2023-03-17 18:12:51 +01:00
2024-02-05 15:00:32 +01:00
2024-01-15 09:39:13 +01:00
2021-11-17 18:23:36 +03:00
2021-11-17 18:23:36 +03:00
2024-04-08 20:22:02 +02:00
2024-04-08 20:22:02 +02:00
2024-02-06 17:42:28 +01:00
2024-12-09 17:14:19 +01:00
2023-03-01 13:24:39 +01:00
2023-10-18 17:34:10 +02:00
2023-10-18 17:34:10 +02:00
2023-10-18 17:34:10 +02:00
2022-04-21 11:57:12 +02:00
2022-04-21 11:57:12 +02:00
2023-10-18 17:34:10 +02:00
2023-05-15 10:25:33 +02:00
2023-05-15 10:25:33 +02:00
2024-04-30 14:34:43 +02:00
2024-09-09 09:55:52 +03:00
2024-03-20 13:21:41 +03:00
2022-09-03 11:23:10 +02:00
2024-09-09 10:00:41 +03:00
2023-01-12 15:47:24 +00:00
2022-11-25 14:02:45 +01:00
2022-11-25 14:02:45 +01:00
2023-01-28 11:49:14 +01:00
2023-01-28 11:49:14 +01:00
2023-07-11 17:38:09 +02:00
2023-07-21 13:04:53 +02:00
2024-04-02 18:11:02 +02:00
2024-07-22 18:28:03 +02:00
2024-08-02 17:35:27 +02:00
2024-08-02 17:35:27 +02:00
2024-08-02 17:35:27 +02:00
2024-08-02 17:35:27 +02:00
2024-08-02 17:35:27 +02:00
2024-10-07 18:06:14 +02:00
2024-10-07 18:06:14 +02:00
2024-10-28 19:30:52 +01:00
2024-10-28 19:30:52 +01:00
2024-12-12 13:10:34 +01:00
2025-03-18 13:42:53 +01:00
2025-04-28 19:51:31 +02:00
2025-05-19 19:21:53 +02:00
2025-05-19 19:21:53 +02:00
2025-05-19 19:19:26 +02:00
2025-06-23 20:01:15 +02:00
2026-02-24 17:28:56 +01:00
2026-02-24 17:28:56 +01:00
2026-02-24 17:28:56 +01:00
2026-02-17 18:11:28 +01:00
2024-03-13 21:40:26 +01:00
2024-04-16 13:49:11 +02:00
2024-04-16 13:49:11 +02:00
2022-06-07 13:35:34 +01:00
2023-10-18 10:46:30 +02:00
2023-04-03 08:02:19 +02:00
2024-09-09 09:55:52 +03:00
2024-12-09 11:45:16 +01:00
2023-07-18 15:02:38 +02:00
2023-05-24 20:17:31 +02:00
2023-05-24 20:17:31 +02:00
2024-02-07 13:03:14 +01:00
2026-01-11 14:55:23 +01:00
2023-04-03 08:02:19 +02:00
2024-02-05 15:00:32 +01:00
2023-01-12 15:47:24 +00:00
2025-07-31 20:22:11 +02:00
2025-07-31 20:22:11 +02:00
2025-02-24 14:35:47 +01:00
2023-10-18 17:34:10 +02:00
2023-07-11 17:38:09 +02:00
2025-05-19 19:19:26 +02:00
2023-10-18 17:34:10 +02:00
2023-03-17 18:12:51 +01:00
2024-08-02 17:35:27 +02:00
2024-08-02 17:35:27 +02:00
2023-04-03 08:02:19 +02:00
2023-03-17 18:12:51 +01:00
2022-10-07 15:48:05 +02:00
2022-10-07 15:48:05 +02:00
2022-10-07 15:48:05 +02:00
2022-10-07 15:48:05 +02:00
2022-10-07 15:48:05 +02:00
2022-10-07 15:48:05 +02:00
2022-12-22 17:42:11 +01:00
2022-12-22 17:42:11 +01:00
2021-11-01 12:31:34 +01:00
2022-07-18 15:11:02 +03:00