]> granicus.if.org Git - php/commitdiff
Give preference to live-ranges with register hints to improve register reuse.
authorDmitry Stogov <dmitry@zend.com>
Tue, 13 Oct 2020 10:59:53 +0000 (13:59 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 13 Oct 2020 10:59:53 +0000 (13:59 +0300)
ext/opcache/jit/zend_jit.c

index 41793fc299d3a1aadc68cbca91ef5ec020b3a413..4794a1c0d774e0194e4620b7733569696b39c39b 100644 (file)
@@ -964,7 +964,8 @@ static zend_lifetime_interval *zend_jit_sort_intervals(zend_lifetime_interval **
                if (ival) {
                        if ((ival->range.start > last->range.start) ||
                            (ival->range.start == last->range.start &&
-                            ival->range.end > last->range.end)) {
+                            ((!ival->hint && last->hint) ||
+                             ival->range.end > last->range.end))) {
                                last->list_next = ival;
                                last = ival;
                                ival->list_next = NULL;
@@ -978,7 +979,8 @@ static zend_lifetime_interval *zend_jit_sort_intervals(zend_lifetime_interval **
                                                break;
                                        } else if ((ival->range.start < (*p)->range.start) ||
                                                   (ival->range.start == (*p)->range.start &&
-                                                   ival->range.end < (*p)->range.end)) {
+                                                   ((ival->hint && !(*p)->hint) ||
+                                                    ival->range.end < (*p)->range.end))) {
                                                ival->list_next = *p;
                                                *p = ival;
                                                break;