PHP Velho Oeste 2024

Cambios internos en PHP

  • Las extensiones ya no pueden sobrescribir zend_execute(), por lo que deberían sobrescribir en su lugar zend_execute_ex(). EG(current_execute_data) ya están inicializado en zend_execute_ex(), por lo que pordría ser necesario el empleo de EG(current_execute_data)->prev_execute_data en su lugar para que las extensiones sean compatibles.
  • Se eliminó EG(arg_types_stack), EX(fbc), EX(called_scope) y EX(current_object).
  • Se añadió op_array->nested_calls, la cual se calcula en tiempo de compilación.
  • Se añadió EX(call_slots), la cual es un array para almacenar información sobre llamadas anidadas sintácticamente (p.ej., foo(bar())) y es preasignada junto con execute_data.
  • Se añadió EX(call), la cual es un puntero a la función llamada en uso; es un elemento de EX(call_slots).
  • Los códigos de operación INIT_METHOD_CALL, ZEND_INIT_STATIC_METHOD_CALL, ZEND_INIT_FCALL_BY_NAME y ZEND_INIT_NS_FCALL_BY_NAME emplean result.num como índice en EX(call_slots).
  • El código de operación ZEND_NEW emplea extended_value como índice en EX(call_slots).
  • Los códigos de operación ZEND_DO_FCALL y ZEND_DO_FCALL_BY_NAME emplean op2.num como índice en EX(call_slots).
  • Se añadió op_array->used_stack, la cual es calculada en tiempo de compilación; el espacio de pila correspondiente es preasignado junto con execute_data. Como resultado, los códigos de operación ZEND_SEND* y ZEND_DO_FCALL* ya no necesitan verificar desbordamientos de pila.
  • Se eliminó el campo execute_data->Ts. Las variables temporales de la máquina virtual se asignan siempre inmediatamente antes de la estructura execute_data, por lo que ahora se pueden acceder a dichas variables por su índice desde el puntero base de execute_data en lugar de mediante execute_data->Ts. El compilador almacena los nuevos índices en op_array->opcodes[*].op?.num. Las macros EX_TMP_VAR() y EX_TMP_VAR_NUM() se pueden usar para acceder a las variables temporales por el índice o número. Se puede convertir el número a un índice mediante EX_TMP_VAR_NUM(0, num) o convertir de índice a número mediante (EX_TMP_VAR_NUM(0,0)-EX_TMP_VAR(0,offset)).
  • Se eliminó el campo execute_data->CVs. La variables compiladas de la máquina virtual son siempre asignadas inmediantamente después de la estructura execute_data, or lo que ahora se pueden acceder a dichas variables por su índice desde el puntero base de execute_data en lugar de vmedianteia execute_data->CVs. Se puede emplear la macro EX_CV_NUM() para acceder a dichas variables compiladas mediante el número.
add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top