@@ -613,20 +613,36 @@ static int zend_jit_trace_subtrace(zend_jit_trace_rec *trace_buffer, int start,
613
613
* Trace Linking Rules
614
614
* ===================
615
615
*
616
- * flags
617
- * +----------+----------+----------++----------+----------+----------+
618
- * | || JIT |
619
- * +----------+----------+----------++----------+----------+----------+
620
- * start | LOOP | ENTER | RETURN || LOOP | ENTER | RETURN |
621
- * +========+==========+==========+==========++==========+==========+==========+
622
- * | LOOP | loop | | loop-ret || COMPILED | LINK | LINK |
623
- * +--------+----------+----------+----------++----------+----------+----------+
624
- * | ENTER |INNER_LOOP| rec-call | return || LINK | LINK | LINK |
625
- * +--------+----------+----------+----------++----------+----------+----------+
626
- * | RETURN |INNER_LOOP| | rec-ret || LINK | | LINK |
627
- * +--------+----------+----------+----------++----------+----------+----------+
628
- * | SIDE | unroll | | side-ret || LINK | LINK | LINK |
629
- * +--------+----------+----------+----------++----------+----------+----------+
616
+ * opline trace flags
617
+ * +----------+----------+----------+
618
+ * | LOOP | ENTER | RETURN |
619
+ * +========+==========+==========+==========+
620
+ * | LOOP | loop | | loop-ret |
621
+ * +--------+----------+----------+----------+
622
+ * | ENTER |INNER_LOOP| rec-call | return |
623
+ * start +--------+----------+----------+----------+
624
+ * flags | RETURN |INNER_LOOP| | rec-ret |
625
+ * +--------+----------+----------+----------+
626
+ * | SIDE | unroll | | side-ret |
627
+ * +--------+----------+----------+----------+
628
+ *
629
+ *
630
+ * opline trace flags
631
+ * +----------+----------+----------+
632
+ * | JITED |
633
+ * +----------+----------+----------+
634
+ * | LOOP | ENTER | RETURN |
635
+ * +========+==========+==========+==========+
636
+ * | LOOP | COMPILED | LINK | LINK |
637
+ * +--------+----------+----------+----------+
638
+ * | ENTER | LINK | LINK | LINK |
639
+ * start +--------+----------+----------+----------+
640
+ * flags | RETURN | LINK | | LINK |
641
+ * +--------+----------+----------+----------+
642
+ * | SIDE | LINK | LINK | LINK |
643
+ * +--------+----------+----------+----------+
644
+ *
645
+ *
630
646
*
631
647
* loop: LOOP if "cycle" and level == 0, otherwise INNER_LOOP
632
648
* INNER_LOOP: abort recording and start new one (wait for loop)
@@ -637,7 +653,7 @@ static int zend_jit_trace_subtrace(zend_jit_trace_rec *trace_buffer, int start,
637
653
* return: RETURN if level == 0
638
654
* rec_ret: RECURSIVE_RET if "cycle" and ret_level > N, otherwise continue
639
655
* side_ret: RETURN if level == 0 && ret_level == ret_depth, otherwise continue
640
- *
656
+ * LINK: stop recording. End of new trace jumps to the other one.
641
657
*/
642
658
643
659
zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute (zend_execute_data * ex ,
0 commit comments