php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_cfg.h File Reference

Go to the source code of this file.

Data Structures

struct  _zend_basic_block
 
struct  _zend_cfg
 

Macros

#define ZEND_BB_START   (1<<0) /* first block */
 
#define ZEND_BB_FOLLOW   (1<<1) /* follows the next block */
 
#define ZEND_BB_TARGET   (1<<2) /* jump target */
 
#define ZEND_BB_EXIT   (1<<3) /* without successors */
 
#define ZEND_BB_ENTRY   (1<<4) /* stackless entry */
 
#define ZEND_BB_TRY   (1<<5) /* start of try block */
 
#define ZEND_BB_CATCH   (1<<6) /* start of catch block */
 
#define ZEND_BB_FINALLY   (1<<7) /* start of finally block */
 
#define ZEND_BB_FINALLY_END   (1<<8) /* end of finally block */
 
#define ZEND_BB_UNREACHABLE_FREE   (1<<11) /* unreachable loop free */
 
#define ZEND_BB_RECV_ENTRY   (1<<12) /* RECV entry */
 
#define ZEND_BB_LOOP_HEADER   (1<<16)
 
#define ZEND_BB_IRREDUCIBLE_LOOP   (1<<17)
 
#define ZEND_BB_REACHABLE   (1U<<31)
 
#define ZEND_BB_PROTECTED   (ZEND_BB_ENTRY|ZEND_BB_RECV_ENTRY|ZEND_BB_TRY|ZEND_BB_CATCH|ZEND_BB_FINALLY|ZEND_BB_FINALLY_END|ZEND_BB_UNREACHABLE_FREE)
 
#define ZEND_CFG_STACKLESS   (1<<30)
 
#define ZEND_SSA_DEBUG_LIVENESS   (1<<29)
 
#define ZEND_SSA_DEBUG_PHI_PLACEMENT   (1<<28)
 
#define ZEND_SSA_RC_INFERENCE   (1<<27)
 
#define ZEND_CFG_NO_ENTRY_PREDECESSORS   (1<<25)
 
#define ZEND_CFG_RECV_ENTRY   (1<<24)
 
#define ZEND_CALL_TREE   (1<<23)
 
#define ZEND_SSA_USE_CV_RESULTS   (1<<22)
 
#define CRT_CONSTANT_EX(op_array, opline, node)
 
#define CRT_CONSTANT(node)
 
#define RETURN_VALUE_USED(opline)
 

Typedefs

typedef struct _zend_basic_block zend_basic_block
 
typedef struct _zend_cfg zend_cfg
 

Functions

ZEND_API void zend_build_cfg (zend_arena **arena, const zend_op_array *op_array, uint32_t build_flags, zend_cfg *cfg)
 
void zend_cfg_remark_reachable_blocks (const zend_op_array *op_array, zend_cfg *cfg)
 
ZEND_API void zend_cfg_build_predecessors (zend_arena **arena, zend_cfg *cfg)
 
ZEND_API void zend_cfg_compute_dominators_tree (const zend_op_array *op_array, zend_cfg *cfg)
 
ZEND_API void zend_cfg_identify_loops (const zend_op_array *op_array, zend_cfg *cfg)
 

Macro Definition Documentation

◆ CRT_CONSTANT

#define CRT_CONSTANT ( node)
Value:
CRT_CONSTANT_EX(op_array, opline, node)
#define CRT_CONSTANT_EX(op_array, opline, node)
Definition zend_cfg.h:103

Definition at line 110 of file zend_cfg.h.

◆ CRT_CONSTANT_EX

#define CRT_CONSTANT_EX ( op_array,
opline,
node )
Value:
(((op_array)->fn_flags & ZEND_ACC_DONE_PASS_TWO) ? \
RT_CONSTANT(opline, (node)) \
: \
CT_CONSTANT_EX(op_array, (node).constant) \
)
constant(string $name)
#define ZEND_ACC_DONE_PASS_TWO

Definition at line 103 of file zend_cfg.h.

◆ RETURN_VALUE_USED

#define RETURN_VALUE_USED ( opline)
Value:
((opline)->result_type != IS_UNUSED)
#define IS_UNUSED

Definition at line 113 of file zend_cfg.h.

◆ ZEND_BB_CATCH

#define ZEND_BB_CATCH   (1<<6) /* start of catch block */

Definition at line 29 of file zend_cfg.h.

◆ ZEND_BB_ENTRY

#define ZEND_BB_ENTRY   (1<<4) /* stackless entry */

Definition at line 27 of file zend_cfg.h.

◆ ZEND_BB_EXIT

#define ZEND_BB_EXIT   (1<<3) /* without successors */

Definition at line 26 of file zend_cfg.h.

◆ ZEND_BB_FINALLY

#define ZEND_BB_FINALLY   (1<<7) /* start of finally block */

Definition at line 30 of file zend_cfg.h.

◆ ZEND_BB_FINALLY_END

#define ZEND_BB_FINALLY_END   (1<<8) /* end of finally block */

Definition at line 31 of file zend_cfg.h.

◆ ZEND_BB_FOLLOW

#define ZEND_BB_FOLLOW   (1<<1) /* follows the next block */

Definition at line 24 of file zend_cfg.h.

◆ ZEND_BB_IRREDUCIBLE_LOOP

#define ZEND_BB_IRREDUCIBLE_LOOP   (1<<17)

Definition at line 36 of file zend_cfg.h.

◆ ZEND_BB_LOOP_HEADER

#define ZEND_BB_LOOP_HEADER   (1<<16)

Definition at line 35 of file zend_cfg.h.

◆ ZEND_BB_PROTECTED

◆ ZEND_BB_REACHABLE

#define ZEND_BB_REACHABLE   (1U<<31)

Definition at line 38 of file zend_cfg.h.

◆ ZEND_BB_RECV_ENTRY

#define ZEND_BB_RECV_ENTRY   (1<<12) /* RECV entry */

Definition at line 33 of file zend_cfg.h.

◆ ZEND_BB_START

#define ZEND_BB_START   (1<<0) /* first block */

Definition at line 23 of file zend_cfg.h.

◆ ZEND_BB_TARGET

#define ZEND_BB_TARGET   (1<<2) /* jump target */

Definition at line 25 of file zend_cfg.h.

◆ ZEND_BB_TRY

#define ZEND_BB_TRY   (1<<5) /* start of try block */

Definition at line 28 of file zend_cfg.h.

◆ ZEND_BB_UNREACHABLE_FREE

#define ZEND_BB_UNREACHABLE_FREE   (1<<11) /* unreachable loop free */

Definition at line 32 of file zend_cfg.h.

◆ ZEND_CALL_TREE

#define ZEND_CALL_TREE   (1<<23)

Definition at line 100 of file zend_cfg.h.

◆ ZEND_CFG_NO_ENTRY_PREDECESSORS

#define ZEND_CFG_NO_ENTRY_PREDECESSORS   (1<<25)

Definition at line 98 of file zend_cfg.h.

◆ ZEND_CFG_RECV_ENTRY

#define ZEND_CFG_RECV_ENTRY   (1<<24)

Definition at line 99 of file zend_cfg.h.

◆ ZEND_CFG_STACKLESS

#define ZEND_CFG_STACKLESS   (1<<30)

Definition at line 94 of file zend_cfg.h.

◆ ZEND_SSA_DEBUG_LIVENESS

#define ZEND_SSA_DEBUG_LIVENESS   (1<<29)

Definition at line 95 of file zend_cfg.h.

◆ ZEND_SSA_DEBUG_PHI_PLACEMENT

#define ZEND_SSA_DEBUG_PHI_PLACEMENT   (1<<28)

Definition at line 96 of file zend_cfg.h.

◆ ZEND_SSA_RC_INFERENCE

#define ZEND_SSA_RC_INFERENCE   (1<<27)

Definition at line 97 of file zend_cfg.h.

◆ ZEND_SSA_USE_CV_RESULTS

#define ZEND_SSA_USE_CV_RESULTS   (1<<22)

Definition at line 101 of file zend_cfg.h.

Typedef Documentation

◆ zend_basic_block

◆ zend_cfg

typedef struct _zend_cfg zend_cfg

Function Documentation

◆ zend_build_cfg()

ZEND_API void zend_build_cfg ( zend_arena ** arena,
const zend_op_array * op_array,
uint32_t build_flags,
zend_cfg * cfg )

Definition at line 273 of file zend_cfg.c.

◆ zend_cfg_build_predecessors()

ZEND_API void zend_cfg_build_predecessors ( zend_arena ** arena,
zend_cfg * cfg )

Definition at line 595 of file zend_cfg.c.

◆ zend_cfg_compute_dominators_tree()

ZEND_API void zend_cfg_compute_dominators_tree ( const zend_op_array * op_array,
zend_cfg * cfg )

Definition at line 676 of file zend_cfg.c.

◆ zend_cfg_identify_loops()

ZEND_API void zend_cfg_identify_loops ( const zend_op_array * op_array,
zend_cfg * cfg )

Definition at line 778 of file zend_cfg.c.

◆ zend_cfg_remark_reachable_blocks()

void zend_cfg_remark_reachable_blocks ( const zend_op_array * op_array,
zend_cfg * cfg )

Definition at line 232 of file zend_cfg.c.