php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_optimizer.c File Reference
#include "Optimizer/zend_optimizer.h"
#include "Optimizer/zend_optimizer_internal.h"
#include "zend_API.h"
#include "zend_constants.h"
#include "zend_execute.h"
#include "zend_vm.h"
#include "zend_cfg.h"
#include "zend_func_info.h"
#include "zend_call_graph.h"
#include "zend_inference.h"
#include "zend_dump.h"
#include "php.h"

Go to the source code of this file.

Macros

#define ZEND_OPTIMIZER_MAX_REGISTERED_PASSES   32
 
#define REQUIRES_STRING(val)
 
#define TO_STRING_NOWARN(val)
 

Functions

void zend_optimizer_collect_constant (zend_optimizer_ctx *ctx, zval *name, zval *value)
 
zend_result zend_optimizer_eval_binary_op (zval *result, uint8_t opcode, zval *op1, zval *op2)
 
zend_result zend_optimizer_eval_unary_op (zval *result, uint8_t opcode, zval *op1)
 
zend_result zend_optimizer_eval_cast (zval *result, uint32_t type, zval *op1)
 
zend_result zend_optimizer_eval_strlen (zval *result, const zval *op1)
 
zend_result zend_optimizer_eval_special_func_call (zval *result, zend_string *name, zend_string *arg)
 
bool zend_optimizer_get_collected_constant (HashTable *constants, zval *name, zval *value)
 
void zend_optimizer_convert_to_free_op1 (zend_op_array *op_array, zend_op *opline)
 
int zend_optimizer_add_literal (zend_op_array *op_array, const zval *zv)
 
bool zend_optimizer_update_op1_const (zend_op_array *op_array, zend_op *opline, zval *val)
 
bool zend_optimizer_update_op2_const (zend_op_array *op_array, zend_op *opline, zval *val)
 
bool zend_optimizer_replace_by_const (zend_op_array *op_array, zend_op *opline, uint8_t type, uint32_t var, zval *val)
 
void zend_optimizer_migrate_jump (zend_op_array *op_array, zend_op *new_opline, zend_op *opline)
 
void zend_optimizer_shift_jump (zend_op_array *op_array, zend_op *opline, uint32_t *shiftlist)
 
zend_class_entryzend_optimizer_get_class_entry (const zend_script *script, const zend_op_array *op_array, zend_string *lcname)
 
zend_class_entryzend_optimizer_get_class_entry_from_op1 (const zend_script *script, const zend_op_array *op_array, const zend_op *opline)
 
const zend_class_constantzend_fetch_class_const_info (const zend_script *script, const zend_op_array *op_array, const zend_op *opline, bool *is_prototype)
 
zend_functionzend_optimizer_get_called_func (zend_script *script, zend_op_array *op_array, zend_op *opline, bool *is_prototype)
 
uint32_t zend_optimizer_classify_function (zend_string *name, uint32_t num_args)
 
zend_opzend_optimizer_get_loop_var_def (const zend_op_array *op_array, zend_op *free_opline)
 
void zend_foreach_op_array (zend_script *script, zend_op_array_func_t func, void *context)
 
ZEND_API void zend_optimize_script (zend_script *script, zend_long optimization_level, zend_long debug_level)
 
ZEND_API int zend_optimizer_register_pass (zend_optimizer_pass_t pass)
 
ZEND_API void zend_optimizer_unregister_pass (int idx)
 
zend_result zend_optimizer_startup (void)
 
zend_result zend_optimizer_shutdown (void)
 

Variables

struct { 
 
   zend_optimizer_pass_t   pass [ZEND_OPTIMIZER_MAX_REGISTERED_PASSES
 
   int   last 
 
zend_optimizer_registered_passes = {{NULL}, 0} 
 

Macro Definition Documentation

◆ REQUIRES_STRING

#define REQUIRES_STRING ( val)
Value:
do { \
if (Z_TYPE_P(val) != IS_STRING) { \
return 0; \
} \
} while (0)
zval * val
Definition ffi.c:4262
#define Z_TYPE_P(zval_p)
Definition zend_types.h:660
#define IS_STRING
Definition zend_types.h:606

Definition at line 264 of file zend_optimizer.c.

◆ TO_STRING_NOWARN

#define TO_STRING_NOWARN ( val)
Value:
do { \
if (Z_TYPE_P(val) >= IS_ARRAY) { \
return 0; \
} \
convert_to_string(val); \
} while (0)
#define IS_ARRAY
Definition zend_types.h:607

Definition at line 270 of file zend_optimizer.c.

◆ ZEND_OPTIMIZER_MAX_REGISTERED_PASSES

#define ZEND_OPTIMIZER_MAX_REGISTERED_PASSES   32

Definition at line 36 of file zend_optimizer.c.

Function Documentation

◆ zend_fetch_class_const_info()

const zend_class_constant * zend_fetch_class_const_info ( const zend_script * script,
const zend_op_array * op_array,
const zend_op * opline,
bool * is_prototype )

Definition at line 869 of file zend_optimizer.c.

◆ zend_foreach_op_array()

void zend_foreach_op_array ( zend_script * script,
zend_op_array_func_t func,
void * context )

Definition at line 1551 of file zend_optimizer.c.

◆ zend_optimize_script()

ZEND_API void zend_optimize_script ( zend_script * script,
zend_long optimization_level,
zend_long debug_level )

Definition at line 1613 of file zend_optimizer.c.

◆ zend_optimizer_add_literal()

int zend_optimizer_add_literal ( zend_op_array * op_array,
const zval * zv )

Definition at line 233 of file zend_optimizer.c.

◆ zend_optimizer_classify_function()

uint32_t zend_optimizer_classify_function ( zend_string * name,
uint32_t num_args )

Definition at line 1035 of file zend_optimizer.c.

◆ zend_optimizer_collect_constant()

void zend_optimizer_collect_constant ( zend_optimizer_ctx * ctx,
zval * name,
zval * value )

Definition at line 44 of file zend_optimizer.c.

◆ zend_optimizer_convert_to_free_op1()

void zend_optimizer_convert_to_free_op1 ( zend_op_array * op_array,
zend_op * opline )

Definition at line 214 of file zend_optimizer.c.

◆ zend_optimizer_eval_binary_op()

zend_result zend_optimizer_eval_binary_op ( zval * result,
uint8_t opcode,
zval * op1,
zval * op2 )

Definition at line 56 of file zend_optimizer.c.

◆ zend_optimizer_eval_cast()

zend_result zend_optimizer_eval_cast ( zval * result,
uint32_t type,
zval * op1 )

Definition at line 83 of file zend_optimizer.c.

◆ zend_optimizer_eval_special_func_call()

zend_result zend_optimizer_eval_special_func_call ( zval * result,
zend_string * name,
zend_string * arg )

Definition at line 125 of file zend_optimizer.c.

◆ zend_optimizer_eval_strlen()

zend_result zend_optimizer_eval_strlen ( zval * result,
const zval * op1 )

Definition at line 115 of file zend_optimizer.c.

◆ zend_optimizer_eval_unary_op()

zend_result zend_optimizer_eval_unary_op ( zval * result,
uint8_t opcode,
zval * op1 )

Definition at line 67 of file zend_optimizer.c.

◆ zend_optimizer_get_called_func()

zend_function * zend_optimizer_get_called_func ( zend_script * script,
zend_op_array * op_array,
zend_op * opline,
bool * is_prototype )

Definition at line 921 of file zend_optimizer.c.

◆ zend_optimizer_get_class_entry()

zend_class_entry * zend_optimizer_get_class_entry ( const zend_script * script,
const zend_op_array * op_array,
zend_string * lcname )

Definition at line 833 of file zend_optimizer.c.

◆ zend_optimizer_get_class_entry_from_op1()

zend_class_entry * zend_optimizer_get_class_entry_from_op1 ( const zend_script * script,
const zend_op_array * op_array,
const zend_op * opline )

Definition at line 852 of file zend_optimizer.c.

◆ zend_optimizer_get_collected_constant()

bool zend_optimizer_get_collected_constant ( HashTable * constants,
zval * name,
zval * value )

Definition at line 203 of file zend_optimizer.c.

◆ zend_optimizer_get_loop_var_def()

zend_op * zend_optimizer_get_loop_var_def ( const zend_op_array * op_array,
zend_op * free_opline )

Definition at line 1055 of file zend_optimizer.c.

◆ zend_optimizer_migrate_jump()

void zend_optimizer_migrate_jump ( zend_op_array * op_array,
zend_op * new_opline,
zend_op * opline )

Definition at line 708 of file zend_optimizer.c.

◆ zend_optimizer_register_pass()

ZEND_API int zend_optimizer_register_pass ( zend_optimizer_pass_t pass)

Definition at line 1775 of file zend_optimizer.c.

◆ zend_optimizer_replace_by_const()

bool zend_optimizer_replace_by_const ( zend_op_array * op_array,
zend_op * opline,
uint8_t type,
uint32_t var,
zval * val )

Definition at line 620 of file zend_optimizer.c.

◆ zend_optimizer_shift_jump()

void zend_optimizer_shift_jump ( zend_op_array * op_array,
zend_op * opline,
uint32_t * shiftlist )

Definition at line 753 of file zend_optimizer.c.

◆ zend_optimizer_shutdown()

zend_result zend_optimizer_shutdown ( void )

Definition at line 1801 of file zend_optimizer.c.

◆ zend_optimizer_startup()

zend_result zend_optimizer_startup ( void )

Definition at line 1796 of file zend_optimizer.c.

◆ zend_optimizer_unregister_pass()

ZEND_API void zend_optimizer_unregister_pass ( int idx)

Definition at line 1791 of file zend_optimizer.c.

◆ zend_optimizer_update_op1_const()

bool zend_optimizer_update_op1_const ( zend_op_array * op_array,
zend_op * opline,
zval * val )

Definition at line 277 of file zend_optimizer.c.

◆ zend_optimizer_update_op2_const()

bool zend_optimizer_update_op2_const ( zend_op_array * op_array,
zend_op * opline,
zval * val )

Definition at line 438 of file zend_optimizer.c.

Variable Documentation

◆ last

int last

Definition at line 41 of file zend_optimizer.c.

◆ pass

◆ [struct]

struct { ... } zend_optimizer_registered_passes