21#define VM_TRACE(op) zend_vm_trace(#op, sizeof(#op)-1);
22#define VM_TRACE_START() zend_vm_trace_init();
23#define VM_TRACE_END() zend_vm_trace_finish();
27static void zend_vm_trace(
const char *op,
size_t op_len)
30 static size_t last_len = 0;
36 len = last_len + 1 + op_len;
39 memcpy(
buf + last_len + 1, op, op_len + 1);
54static int zend_vm_trace_compare(
const Bucket *p1,
const Bucket *p2)
65static void zend_vm_trace_finish(
void)
71 f =
fopen(
"zend_vm_trace.log",
"w+");
73 zend_hash_sort(&vm_trace_ht, (
compare_func_t)zend_vm_trace_compare, 0);
82static void zend_vm_trace_init(
void)
87 f =
fopen(
"zend_vm_trace.log",
"r");
fprintf($stream, string $format, mixed ... $values)
fopen(string $filename, string $mode, bool $use_include_path=false, $context=null)
fgets($stream, ?int $length=null)
zend_ffi_ctype_name_buf buf
unsigned char key[REFLECTION_KEY_LEN]
#define zend_hash_str_add(...)
ZEND_API void ZEND_FASTCALL zend_hash_destroy(HashTable *ht)
ZEND_API zval *ZEND_FASTCALL zend_hash_str_find(const HashTable *ht, const char *str, size_t len)
ZEND_API zval *ZEND_FASTCALL zend_hash_str_add_new(HashTable *ht, const char *str, size_t len, zval *pData)
#define zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent)
#define ZEND_HASH_FOREACH_END()
#define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(ht, _key, _val)
#define ZEND_STRTOL(s0, s1, base)
struct _zend_string zend_string
#define EXPECTED(condition)
int(* compare_func_t)(const void *, const void *)
struct _zend_array HashTable