]> granicus.if.org Git - php/commitdiff
Reduce cost for GC references to strings and resources in JIT
authorDmitry Stogov <dmitry@zend.com>
Wed, 10 Jul 2019 09:41:19 +0000 (12:41 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 10 Jul 2019 09:41:19 +0000 (12:41 +0300)
ext/opcache/jit/zend_jit_x86.dasc

index 4c896b581fcfb5658fb729e543d959cba678d442..9f37c95770e9992af864c544895464299d4dfc27 100644 (file)
@@ -1296,6 +1296,10 @@ static void* dasm_labels[zend_lb_MAX];
 |      IF_NOT_ZVAL_FLAGS addr, IS_TYPE_REFCOUNTED, label
 |.endmacro
 
+|.macro IF_NOT_ZVAL_COLLECTABLE, addr, label
+|      IF_NOT_ZVAL_FLAGS addr, IS_TYPE_COLLECTABLE, label
+|.endmacro
+
 |.macro GC_ADDREF, zv
 |      add     dword [zv], 1
 |.endmacro
@@ -1441,7 +1445,7 @@ static void* dasm_labels[zend_lb_MAX];
 ||                     if ((op_info) & MAY_BE_REF) {
 ||                             zend_jit_addr ref_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FCARG1a, offsetof(zend_reference, val));
 |                              IF_NOT_ZVAL_TYPE addr, IS_REFERENCE, >1
-|                              IF_NOT_ZVAL_REFCOUNTED ref_addr, >4
+|                              IF_NOT_ZVAL_COLLECTABLE ref_addr, >4
 |                              GET_ZVAL_PTR FCARG1a, ref_addr
 |1:
 ||                     }