]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.0' into PHP-7.1
authorDmitry Stogov <dmitry@zend.com>
Fri, 3 Mar 2017 13:12:41 +0000 (16:12 +0300)
committerDmitry Stogov <dmitry@zend.com>
Fri, 3 Mar 2017 13:12:41 +0000 (16:12 +0300)
* PHP-7.0:
  Fixed file-cache (Zend/tests/unused_shared_static_variables.phpt)

1  2 
ext/opcache/zend_file_cache.c

index c9ae0dd66e1a699b5a81499c9e8339df56d2da6f,2b65685d21db155e310a55aefee5b4dfbeab9879..dea427fcaf85df64e01b124ecdb90ab125b2533d
@@@ -359,6 -359,25 +359,25 @@@ static void zend_file_cache_serialize_o
                zend_file_cache_serialize_hash(ht, script, info, buf, zend_file_cache_serialize_zval);
        }
  
 -                      SERIALIZE_PTR(op_array->brk_cont_array);
+       if (op_array->scope && !IS_SERIALIZED(op_array->opcodes)) {
+               if (UNEXPECTED(zend_shared_alloc_get_xlat_entry(op_array->opcodes))) {
+                       op_array->refcount = (uint32_t*)(intptr_t)-1;
+                       SERIALIZE_PTR(op_array->literals);
+                       SERIALIZE_PTR(op_array->opcodes);
+                       SERIALIZE_PTR(op_array->arg_info);
+                       SERIALIZE_PTR(op_array->vars);
+                       SERIALIZE_STR(op_array->function_name);
+                       SERIALIZE_STR(op_array->filename);
++                      SERIALIZE_PTR(op_array->live_range);
+                       SERIALIZE_PTR(op_array->scope);
+                       SERIALIZE_STR(op_array->doc_comment);
+                       SERIALIZE_PTR(op_array->try_catch_array);
+                       SERIALIZE_PTR(op_array->prototype);
+                       return;
+               }
+               zend_shared_alloc_register_xlat_entry(op_array->opcodes, op_array->opcodes);
+       }
        if (op_array->literals && !IS_SERIALIZED(op_array->literals)) {
                zval *p, *end;
  
@@@ -937,6 -938,22 +956,22 @@@ static void zend_file_cache_unserialize
                                script, buf, zend_file_cache_unserialize_zval, ZVAL_PTR_DTOR);
        }
  
 -              UNSERIALIZE_PTR(op_array->brk_cont_array);
+       if (op_array->refcount) {
+               op_array->refcount = NULL;
+               UNSERIALIZE_PTR(op_array->literals);
+               UNSERIALIZE_PTR(op_array->opcodes);
+               UNSERIALIZE_PTR(op_array->arg_info);
+               UNSERIALIZE_PTR(op_array->vars);
+               UNSERIALIZE_STR(op_array->function_name);
+               UNSERIALIZE_STR(op_array->filename);
++              UNSERIALIZE_PTR(op_array->live_range);
+               UNSERIALIZE_PTR(op_array->scope);
+               UNSERIALIZE_STR(op_array->doc_comment);
+               UNSERIALIZE_PTR(op_array->try_catch_array);
+               UNSERIALIZE_PTR(op_array->prototype);
+               return;
+       }
        if (op_array->literals && !IS_UNSERIALIZED(op_array->literals)) {
                zval *p, *end;