php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_optimizer.h File Reference
#include "zend.h"
#include "zend_compile.h"

Go to the source code of this file.

Data Structures

struct  _zend_script
 

Macros

#define ZEND_OPTIMIZER_PASS_1   (1<<0) /* Simple local optimizations */
 
#define ZEND_OPTIMIZER_PASS_2   (1<<1) /* */
 
#define ZEND_OPTIMIZER_PASS_3   (1<<2) /* Jump optimization */
 
#define ZEND_OPTIMIZER_PASS_4   (1<<3) /* INIT_FCALL_BY_NAME -> DO_FCALL */
 
#define ZEND_OPTIMIZER_PASS_5   (1<<4) /* CFG based optimization */
 
#define ZEND_OPTIMIZER_PASS_6   (1<<5) /* DFA based optimization */
 
#define ZEND_OPTIMIZER_PASS_7   (1<<6) /* CALL GRAPH optimization */
 
#define ZEND_OPTIMIZER_PASS_8   (1<<7) /* SCCP (constant propagation) */
 
#define ZEND_OPTIMIZER_PASS_9   (1<<8) /* TMP VAR usage */
 
#define ZEND_OPTIMIZER_PASS_10   (1<<9) /* NOP removal */
 
#define ZEND_OPTIMIZER_PASS_11   (1<<10) /* Merge equal constants */
 
#define ZEND_OPTIMIZER_PASS_12   (1<<11) /* Adjust used stack */
 
#define ZEND_OPTIMIZER_PASS_13   (1<<12) /* Remove unused variables */
 
#define ZEND_OPTIMIZER_PASS_14   (1<<13) /* DCE (dead code elimination) */
 
#define ZEND_OPTIMIZER_PASS_15   (1<<14) /* (unsafe) Collect constants */
 
#define ZEND_OPTIMIZER_PASS_16   (1<<15) /* Inline functions */
 
#define ZEND_OPTIMIZER_IGNORE_OVERLOADING   (1<<16) /* (unsafe) Ignore possibility of operator overloading */
 
#define ZEND_OPTIMIZER_NARROW_TO_DOUBLE   (1<<17) /* try to narrow long constant assignments to double */
 
#define ZEND_OPTIMIZER_ALL_PASSES   0x7FFFFFFF
 
#define DEFAULT_OPTIMIZATION_LEVEL   "0x7FFEBFFF"
 
#define ZEND_DUMP_AFTER_PASS_1   ZEND_OPTIMIZER_PASS_1
 
#define ZEND_DUMP_AFTER_PASS_2   ZEND_OPTIMIZER_PASS_2
 
#define ZEND_DUMP_AFTER_PASS_3   ZEND_OPTIMIZER_PASS_3
 
#define ZEND_DUMP_AFTER_PASS_4   ZEND_OPTIMIZER_PASS_4
 
#define ZEND_DUMP_AFTER_PASS_5   ZEND_OPTIMIZER_PASS_5
 
#define ZEND_DUMP_AFTER_PASS_6   ZEND_OPTIMIZER_PASS_6
 
#define ZEND_DUMP_AFTER_PASS_7   ZEND_OPTIMIZER_PASS_7
 
#define ZEND_DUMP_AFTER_PASS_8   ZEND_OPTIMIZER_PASS_8
 
#define ZEND_DUMP_AFTER_PASS_9   ZEND_OPTIMIZER_PASS_9
 
#define ZEND_DUMP_AFTER_PASS_10   ZEND_OPTIMIZER_PASS_10
 
#define ZEND_DUMP_AFTER_PASS_11   ZEND_OPTIMIZER_PASS_11
 
#define ZEND_DUMP_AFTER_PASS_12   ZEND_OPTIMIZER_PASS_12
 
#define ZEND_DUMP_AFTER_PASS_13   ZEND_OPTIMIZER_PASS_13
 
#define ZEND_DUMP_AFTER_PASS_14   ZEND_OPTIMIZER_PASS_14
 
#define ZEND_DUMP_BEFORE_OPTIMIZER   (1<<16)
 
#define ZEND_DUMP_AFTER_OPTIMIZER   (1<<17)
 
#define ZEND_DUMP_BEFORE_BLOCK_PASS   (1<<18)
 
#define ZEND_DUMP_AFTER_BLOCK_PASS   (1<<19)
 
#define ZEND_DUMP_BLOCK_PASS_VARS   (1<<20)
 
#define ZEND_DUMP_BEFORE_DFA_PASS   (1<<21)
 
#define ZEND_DUMP_AFTER_DFA_PASS   (1<<22)
 
#define ZEND_DUMP_DFA_CFG   (1<<23)
 
#define ZEND_DUMP_DFA_DOMINATORS   (1<<24)
 
#define ZEND_DUMP_DFA_LIVENESS   (1<<25)
 
#define ZEND_DUMP_DFA_PHI   (1<<26)
 
#define ZEND_DUMP_DFA_SSA   (1<<27)
 
#define ZEND_DUMP_DFA_SSA_VARS   (1<<28)
 
#define ZEND_DUMP_SCCP   (1<<29)
 

Typedefs

typedef struct _zend_script zend_script
 
typedef void(* zend_optimizer_pass_t) (zend_script *, void *context)
 

Functions

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)
 

Macro Definition Documentation

◆ DEFAULT_OPTIMIZATION_LEVEL

#define DEFAULT_OPTIMIZATION_LEVEL   "0x7FFEBFFF"

Definition at line 51 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_BLOCK_PASS

#define ZEND_DUMP_AFTER_BLOCK_PASS   (1<<19)

Definition at line 73 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_DFA_PASS

#define ZEND_DUMP_AFTER_DFA_PASS   (1<<22)

Definition at line 77 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_OPTIMIZER

#define ZEND_DUMP_AFTER_OPTIMIZER   (1<<17)

Definition at line 70 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_1

#define ZEND_DUMP_AFTER_PASS_1   ZEND_OPTIMIZER_PASS_1

Definition at line 54 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_10

#define ZEND_DUMP_AFTER_PASS_10   ZEND_OPTIMIZER_PASS_10

Definition at line 63 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_11

#define ZEND_DUMP_AFTER_PASS_11   ZEND_OPTIMIZER_PASS_11

Definition at line 64 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_12

#define ZEND_DUMP_AFTER_PASS_12   ZEND_OPTIMIZER_PASS_12

Definition at line 65 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_13

#define ZEND_DUMP_AFTER_PASS_13   ZEND_OPTIMIZER_PASS_13

Definition at line 66 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_14

#define ZEND_DUMP_AFTER_PASS_14   ZEND_OPTIMIZER_PASS_14

Definition at line 67 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_2

#define ZEND_DUMP_AFTER_PASS_2   ZEND_OPTIMIZER_PASS_2

Definition at line 55 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_3

#define ZEND_DUMP_AFTER_PASS_3   ZEND_OPTIMIZER_PASS_3

Definition at line 56 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_4

#define ZEND_DUMP_AFTER_PASS_4   ZEND_OPTIMIZER_PASS_4

Definition at line 57 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_5

#define ZEND_DUMP_AFTER_PASS_5   ZEND_OPTIMIZER_PASS_5

Definition at line 58 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_6

#define ZEND_DUMP_AFTER_PASS_6   ZEND_OPTIMIZER_PASS_6

Definition at line 59 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_7

#define ZEND_DUMP_AFTER_PASS_7   ZEND_OPTIMIZER_PASS_7

Definition at line 60 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_8

#define ZEND_DUMP_AFTER_PASS_8   ZEND_OPTIMIZER_PASS_8

Definition at line 61 of file zend_optimizer.h.

◆ ZEND_DUMP_AFTER_PASS_9

#define ZEND_DUMP_AFTER_PASS_9   ZEND_OPTIMIZER_PASS_9

Definition at line 62 of file zend_optimizer.h.

◆ ZEND_DUMP_BEFORE_BLOCK_PASS

#define ZEND_DUMP_BEFORE_BLOCK_PASS   (1<<18)

Definition at line 72 of file zend_optimizer.h.

◆ ZEND_DUMP_BEFORE_DFA_PASS

#define ZEND_DUMP_BEFORE_DFA_PASS   (1<<21)

Definition at line 76 of file zend_optimizer.h.

◆ ZEND_DUMP_BEFORE_OPTIMIZER

#define ZEND_DUMP_BEFORE_OPTIMIZER   (1<<16)

Definition at line 69 of file zend_optimizer.h.

◆ ZEND_DUMP_BLOCK_PASS_VARS

#define ZEND_DUMP_BLOCK_PASS_VARS   (1<<20)

Definition at line 74 of file zend_optimizer.h.

◆ ZEND_DUMP_DFA_CFG

#define ZEND_DUMP_DFA_CFG   (1<<23)

Definition at line 78 of file zend_optimizer.h.

◆ ZEND_DUMP_DFA_DOMINATORS

#define ZEND_DUMP_DFA_DOMINATORS   (1<<24)

Definition at line 79 of file zend_optimizer.h.

◆ ZEND_DUMP_DFA_LIVENESS

#define ZEND_DUMP_DFA_LIVENESS   (1<<25)

Definition at line 80 of file zend_optimizer.h.

◆ ZEND_DUMP_DFA_PHI

#define ZEND_DUMP_DFA_PHI   (1<<26)

Definition at line 81 of file zend_optimizer.h.

◆ ZEND_DUMP_DFA_SSA

#define ZEND_DUMP_DFA_SSA   (1<<27)

Definition at line 82 of file zend_optimizer.h.

◆ ZEND_DUMP_DFA_SSA_VARS

#define ZEND_DUMP_DFA_SSA_VARS   (1<<28)

Definition at line 83 of file zend_optimizer.h.

◆ ZEND_DUMP_SCCP

#define ZEND_DUMP_SCCP   (1<<29)

Definition at line 84 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_ALL_PASSES

#define ZEND_OPTIMIZER_ALL_PASSES   0x7FFFFFFF

Definition at line 49 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_IGNORE_OVERLOADING

#define ZEND_OPTIMIZER_IGNORE_OVERLOADING   (1<<16) /* (unsafe) Ignore possibility of operator overloading */

Definition at line 45 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_NARROW_TO_DOUBLE

#define ZEND_OPTIMIZER_NARROW_TO_DOUBLE   (1<<17) /* try to narrow long constant assignments to double */

Definition at line 47 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_1

#define ZEND_OPTIMIZER_PASS_1   (1<<0) /* Simple local optimizations */

Definition at line 28 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_10

#define ZEND_OPTIMIZER_PASS_10   (1<<9) /* NOP removal */

Definition at line 37 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_11

#define ZEND_OPTIMIZER_PASS_11   (1<<10) /* Merge equal constants */

Definition at line 38 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_12

#define ZEND_OPTIMIZER_PASS_12   (1<<11) /* Adjust used stack */

Definition at line 39 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_13

#define ZEND_OPTIMIZER_PASS_13   (1<<12) /* Remove unused variables */

Definition at line 40 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_14

#define ZEND_OPTIMIZER_PASS_14   (1<<13) /* DCE (dead code elimination) */

Definition at line 41 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_15

#define ZEND_OPTIMIZER_PASS_15   (1<<14) /* (unsafe) Collect constants */

Definition at line 42 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_16

#define ZEND_OPTIMIZER_PASS_16   (1<<15) /* Inline functions */

Definition at line 43 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_2

#define ZEND_OPTIMIZER_PASS_2   (1<<1) /* */

Definition at line 29 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_3

#define ZEND_OPTIMIZER_PASS_3   (1<<2) /* Jump optimization */

Definition at line 30 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_4

#define ZEND_OPTIMIZER_PASS_4   (1<<3) /* INIT_FCALL_BY_NAME -> DO_FCALL */

Definition at line 31 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_5

#define ZEND_OPTIMIZER_PASS_5   (1<<4) /* CFG based optimization */

Definition at line 32 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_6

#define ZEND_OPTIMIZER_PASS_6   (1<<5) /* DFA based optimization */

Definition at line 33 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_7

#define ZEND_OPTIMIZER_PASS_7   (1<<6) /* CALL GRAPH optimization */

Definition at line 34 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_8

#define ZEND_OPTIMIZER_PASS_8   (1<<7) /* SCCP (constant propagation) */

Definition at line 35 of file zend_optimizer.h.

◆ ZEND_OPTIMIZER_PASS_9

#define ZEND_OPTIMIZER_PASS_9   (1<<8) /* TMP VAR usage */

Definition at line 36 of file zend_optimizer.h.

Typedef Documentation

◆ zend_optimizer_pass_t

typedef void(* zend_optimizer_pass_t) (zend_script *, void *context)

Definition at line 93 of file zend_optimizer.h.

◆ zend_script

typedef struct _zend_script zend_script

Function Documentation

◆ 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_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_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.