1 /* 2 +----------------------------------------------------------------------+ 3 | Zend Engine, Bytecode Visualisation | 4 +----------------------------------------------------------------------+ 5 | Copyright (c) The PHP Group | 6 +----------------------------------------------------------------------+ 7 | This source file is subject to version 3.01 of the PHP license, | 8 | that is bundled with this package in the file LICENSE, and is | 9 | available through the world-wide-web at the following url: | 10 | https://www.php.net/license/3_01.txt | 11 | If you did not receive a copy of the PHP license and are unable to | 12 | obtain it through the world-wide-web, please send a note to | 13 | license@php.net so we can mail you a copy immediately. | 14 +----------------------------------------------------------------------+ 15 | Authors: Dmitry Stogov <dmitry@php.net> | 16 +----------------------------------------------------------------------+ 17 */ 18 19 #ifndef ZEND_DUMP_H 20 #define ZEND_DUMP_H 21 22 #include "zend_ssa.h" 23 #include "zend_dfg.h" 24 25 #include <stdint.h> 26 27 #define ZEND_DUMP_HIDE_UNREACHABLE (1<<0) 28 #define ZEND_DUMP_RC_INFERENCE (1<<1) 29 #define ZEND_DUMP_CFG (1<<2) 30 #define ZEND_DUMP_SSA (1<<3) 31 #define ZEND_DUMP_LIVE_RANGES (1<<4) 32 #define ZEND_DUMP_LINE_NUMBERS (1<<5) 33 34 BEGIN_EXTERN_C() 35 36 ZEND_API void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, const char *msg, const void *data); 37 ZEND_API void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_flags, const zend_ssa *ssa, const zend_ssa_op *ssa_op); 38 ZEND_API void zend_dump_op_line(const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_flags, const void *data); 39 void zend_dump_dominators(const zend_op_array *op_array, const zend_cfg *cfg); 40 void zend_dump_dfg(const zend_op_array *op_array, const zend_cfg *cfg, const zend_dfg *dfg); 41 void zend_dump_phi_placement(const zend_op_array *op_array, const zend_ssa *ssa); 42 void zend_dump_ssa_variables(const zend_op_array *op_array, const zend_ssa *ssa, uint32_t dump_flags); 43 ZEND_API void zend_dump_ssa_var(const zend_op_array *op_array, const zend_ssa *ssa, int ssa_var_num, uint8_t var_type, uint32_t var_num, uint32_t dump_flags); 44 ZEND_API void zend_dump_var(const zend_op_array *op_array, uint8_t var_type, uint32_t var_num); 45 void zend_dump_op_array_name(const zend_op_array *op_array); 46 void zend_dump_const(const zval *zv); 47 void zend_dump_ht(HashTable *ht); 48 49 END_EXTERN_C() 50 51 #endif /* ZEND_DUMP_H */ 52