diff options
author | Dmitry Stogov <dmitry@zend.com> | 2020-10-13 13:59:53 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2020-10-13 13:59:53 +0300 |
commit | 62ae21bbf21b51be548d7788d20175a438fee5b9 (patch) | |
tree | acc83bfae8c20661d52e295804f66abf166c3524 /ext | |
parent | ea03acadc216cf5d8824989a4c3162fc19f8b5f1 (diff) | |
download | php-git-62ae21bbf21b51be548d7788d20175a438fee5b9.tar.gz |
Give preference to live-ranges with register hints to improve register reuse.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/opcache/jit/zend_jit.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/opcache/jit/zend_jit.c b/ext/opcache/jit/zend_jit.c index 41793fc299..4794a1c0d7 100644 --- a/ext/opcache/jit/zend_jit.c +++ b/ext/opcache/jit/zend_jit.c @@ -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; |