watch              66 sapi/phpdbg/phpdbg_prompt.c 	PHPDBG_COMMAND_D(watch,   "set watchpoint",                           'w', phpdbg_watch_commands, "|ss"),
watch             977 sapi/phpdbg/phpdbg_prompt.c PHPDBG_COMMAND(watch) /* {{{ */
watch              55 sapi/phpdbg/phpdbg_prompt.h PHPDBG_COMMAND(watch); /* }}} */
watch              46 sapi/phpdbg/phpdbg_watch.c 	phpdbg_watchpoint_t *watch;
watch              53 sapi/phpdbg/phpdbg_watch.c 	watch = result->ptr;
watch              56 sapi/phpdbg/phpdbg_watch.c 	if ((char *)phpdbg_get_page_boundary(watch->addr.ptr) > (char *)addr || (char *)phpdbg_get_page_boundary(watch->addr.ptr) + phpdbg_get_total_page_size(watch->addr.ptr, watch->size) < (char *)addr) {
watch              61 sapi/phpdbg/phpdbg_watch.c 	return watch;
watch              64 sapi/phpdbg/phpdbg_watch.c static void phpdbg_change_watchpoint_access(phpdbg_watchpoint_t *watch, int access TSRMLS_DC) {
watch              68 sapi/phpdbg/phpdbg_watch.c 	m = mprotect(phpdbg_get_page_boundary(watch->addr.ptr), phpdbg_get_total_page_size(watch->addr.ptr, watch->size), access);
watch              71 sapi/phpdbg/phpdbg_watch.c static inline void phpdbg_activate_watchpoint(phpdbg_watchpoint_t *watch TSRMLS_DC) {
watch              72 sapi/phpdbg/phpdbg_watch.c 	phpdbg_change_watchpoint_access(watch, PROT_READ TSRMLS_CC);
watch              75 sapi/phpdbg/phpdbg_watch.c static inline void phpdbg_deactivate_watchpoint(phpdbg_watchpoint_t *watch TSRMLS_DC) {
watch              76 sapi/phpdbg/phpdbg_watch.c 	phpdbg_change_watchpoint_access(watch, PROT_READ | PROT_WRITE TSRMLS_CC);
watch              79 sapi/phpdbg/phpdbg_watch.c static inline void phpdbg_store_watchpoint(phpdbg_watchpoint_t *watch TSRMLS_DC) {
watch              80 sapi/phpdbg/phpdbg_watch.c 	phpdbg_btree_insert(&PHPDBG_G(watchpoint_tree), (zend_ulong)watch->addr.ptr, watch);
watch              83 sapi/phpdbg/phpdbg_watch.c static inline void phpdbg_remove_watchpoint(phpdbg_watchpoint_t *watch TSRMLS_DC) {
watch              84 sapi/phpdbg/phpdbg_watch.c 	phpdbg_btree_delete(&PHPDBG_G(watchpoint_tree), (zend_ulong)watch->addr.ptr);
watch              87 sapi/phpdbg/phpdbg_watch.c void phpdbg_create_addr_watchpoint(void *addr, size_t size, phpdbg_watchpoint_t *watch) {
watch              88 sapi/phpdbg/phpdbg_watch.c 	watch->addr.ptr = addr;
watch              89 sapi/phpdbg/phpdbg_watch.c 	watch->size = size;
watch              92 sapi/phpdbg/phpdbg_watch.c void phpdbg_create_zval_watchpoint(zval *zv, phpdbg_watchpoint_t *watch) {
watch              93 sapi/phpdbg/phpdbg_watch.c 	phpdbg_create_addr_watchpoint(zv, sizeof(zval), watch);
watch              94 sapi/phpdbg/phpdbg_watch.c 	watch->type = WATCH_ON_ZVAL;
watch              97 sapi/phpdbg/phpdbg_watch.c void phpdbg_create_ht_watchpoint(HashTable *ht, phpdbg_watchpoint_t *watch) {
watch              98 sapi/phpdbg/phpdbg_watch.c 	phpdbg_create_addr_watchpoint(ht, sizeof(HashTable), watch);
watch              99 sapi/phpdbg/phpdbg_watch.c 	watch->type = WATCH_ON_HASHTABLE;
watch             104 sapi/phpdbg/phpdbg_watch.c static int phpdbg_create_watchpoint(phpdbg_watchpoint_t *watch TSRMLS_DC) {
watch             105 sapi/phpdbg/phpdbg_watch.c 	watch->flags |= PHPDBG_WATCH_SIMPLE;
watch             107 sapi/phpdbg/phpdbg_watch.c 	phpdbg_store_watchpoint(watch TSRMLS_CC);
watch             108 sapi/phpdbg/phpdbg_watch.c 	zend_hash_add(&PHPDBG_G(watchpoints), watch->str, watch->str_len, &watch, sizeof(phpdbg_watchpoint_t *), NULL);
watch             110 sapi/phpdbg/phpdbg_watch.c 	if (watch->type == WATCH_ON_ZVAL) {
watch             111 sapi/phpdbg/phpdbg_watch.c 		phpdbg_btree_insert(&PHPDBG_G(watch_HashTables), (zend_ulong)watch->parent_container, watch->parent_container->pDestructor);
watch             112 sapi/phpdbg/phpdbg_watch.c 		watch->parent_container->pDestructor = (dtor_func_t)phpdbg_watch_HashTable_dtor;
watch             115 sapi/phpdbg/phpdbg_watch.c 	phpdbg_activate_watchpoint(watch TSRMLS_CC);
watch             120 sapi/phpdbg/phpdbg_watch.c static int phpdbg_create_array_watchpoint(phpdbg_watchpoint_t *watch TSRMLS_DC) {
watch             123 sapi/phpdbg/phpdbg_watch.c 	switch (Z_TYPE_P(watch->addr.zv)) {
watch             125 sapi/phpdbg/phpdbg_watch.c 			ht = Z_ARRVAL_P(watch->addr.zv);
watch             128 sapi/phpdbg/phpdbg_watch.c 			ht = Z_OBJPROP_P(watch->addr.zv);
watch             134 sapi/phpdbg/phpdbg_watch.c 	phpdbg_create_ht_watchpoint(ht, watch);
watch             136 sapi/phpdbg/phpdbg_watch.c 	phpdbg_create_watchpoint(watch TSRMLS_CC);
watch             148 sapi/phpdbg/phpdbg_watch.c static int phpdbg_create_recursive_watchpoint(phpdbg_watchpoint_t *watch TSRMLS_DC) {
watch             151 sapi/phpdbg/phpdbg_watch.c 	if (watch->type != WATCH_ON_ZVAL) {
watch             155 sapi/phpdbg/phpdbg_watch.c 	watch->flags |= PHPDBG_WATCH_RECURSIVE;
watch             156 sapi/phpdbg/phpdbg_watch.c 	phpdbg_create_watchpoint(watch TSRMLS_CC);
watch             158 sapi/phpdbg/phpdbg_watch.c 	switch (Z_TYPE_P(watch->addr.zv)) {
watch             160 sapi/phpdbg/phpdbg_watch.c 			ht = Z_ARRVAL_P(watch->addr.zv);
watch             163 sapi/phpdbg/phpdbg_watch.c 			ht = Z_OBJPROP_P(watch->addr.zv);
watch             180 sapi/phpdbg/phpdbg_watch.c 			new_watch->parent = watch;
watch             193 sapi/phpdbg/phpdbg_watch.c 			new_watch->str_len = asprintf(&new_watch->str, "%.*s%s%s%s", (int)watch->str_len, watch->str, Z_TYPE_P(watch->addr.zv) == IS_ARRAY?"[":"->", phpdbg_get_property_key(new_watch->name_in_parent), Z_TYPE_P(watch->addr.zv) == IS_ARRAY?"]":"");
watch             203 sapi/phpdbg/phpdbg_watch.c 		new_watch->parent = watch;
watch             204 sapi/phpdbg/phpdbg_watch.c 		new_watch->parent_container = watch->parent_container;
watch             205 sapi/phpdbg/phpdbg_watch.c 		new_watch->name_in_parent = zend_strndup(watch->name_in_parent, watch->name_in_parent_len);
watch             206 sapi/phpdbg/phpdbg_watch.c 		new_watch->name_in_parent_len = watch->name_in_parent_len;
watch             208 sapi/phpdbg/phpdbg_watch.c 		new_watch->str_len = asprintf(&new_watch->str, "%.*s[]", (int)watch->str_len, watch->str);
watch             218 sapi/phpdbg/phpdbg_watch.c static int phpdbg_delete_watchpoint_recursive(phpdbg_watchpoint_t *watch, zend_bool user_request TSRMLS_DC) {
watch             219 sapi/phpdbg/phpdbg_watch.c 	if (watch->type == WATCH_ON_HASHTABLE || (watch->type == WATCH_ON_ZVAL && (Z_TYPE_P(watch->addr.zv) == IS_ARRAY || Z_TYPE_P(watch->addr.zv) == IS_OBJECT))) {
watch             223 sapi/phpdbg/phpdbg_watch.c 		if (watch->type == WATCH_ON_HASHTABLE && user_request) {
watch             231 sapi/phpdbg/phpdbg_watch.c 			ht = watch->addr.ht;
watch             239 sapi/phpdbg/phpdbg_watch.c 					str_len = asprintf(&str, "%.*s%s%s%s", (int)watch->parent->str_len, watch->parent->str, Z_TYPE_P(watch->parent->addr.zv) == IS_ARRAY?"[":"->", phpdbg_get_property_key(Z_STRVAL(key)), Z_TYPE_P(watch->parent->addr.zv) == IS_ARRAY?"]":"");
watch             241 sapi/phpdbg/phpdbg_watch.c 					str_len = asprintf(&str, "%.*s%s%li%s", (int)watch->parent->str_len, watch->parent->str, Z_TYPE_P(watch->parent->addr.zv) == IS_ARRAY?"[":"->", Z_LVAL(key), Z_TYPE_P(watch->parent->addr.zv) == IS_ARRAY?"]":"");
watch             249 sapi/phpdbg/phpdbg_watch.c 			switch (Z_TYPE_P(watch->addr.zv)) {
watch             251 sapi/phpdbg/phpdbg_watch.c 					ht = Z_ARRVAL_P(watch->addr.zv);
watch             254 sapi/phpdbg/phpdbg_watch.c 					ht = Z_OBJPROP_P(watch->addr.zv);
watch             264 sapi/phpdbg/phpdbg_watch.c 	return zend_hash_del(&PHPDBG_G(watchpoints), watch->str, watch->str_len);
watch             269 sapi/phpdbg/phpdbg_watch.c 	phpdbg_watchpoint_t *watch;
watch             276 sapi/phpdbg/phpdbg_watch.c 	watch = result->ptr;
watch             278 sapi/phpdbg/phpdbg_watch.c 	if (watch->flags & PHPDBG_WATCH_RECURSIVE) {
watch             279 sapi/phpdbg/phpdbg_watch.c 		ret = phpdbg_delete_watchpoint_recursive(watch, 1 TSRMLS_CC);
watch             281 sapi/phpdbg/phpdbg_watch.c 		ret = zend_hash_del(&PHPDBG_G(watchpoints), watch->str, watch->str_len);
watch             337 sapi/phpdbg/phpdbg_watch.c 					phpdbg_watchpoint_t *watch = emalloc(sizeof(phpdbg_watchpoint_t));
watch             338 sapi/phpdbg/phpdbg_watch.c 					watch->flags = 0;
watch             341 sapi/phpdbg/phpdbg_watch.c 					watch->str = malloc(i + Z_STRLEN_P(key) + 2);
watch             342 sapi/phpdbg/phpdbg_watch.c 					watch->str_len = sprintf(watch->str, "%.*s%s%s", (int)i, input, phpdbg_get_property_key(Z_STRVAL_P(key)), input[len - 1] == ']'?"]":"");
watch             344 sapi/phpdbg/phpdbg_watch.c 					watch->name_in_parent = zend_strndup(last_index, index_len);
watch             345 sapi/phpdbg/phpdbg_watch.c 					watch->name_in_parent_len = index_len;
watch             346 sapi/phpdbg/phpdbg_watch.c 					watch->parent_container = parent;
watch             347 sapi/phpdbg/phpdbg_watch.c 					phpdbg_create_zval_watchpoint(*zv, watch);
watch             349 sapi/phpdbg/phpdbg_watch.c 					ret = callback(watch TSRMLS_CC) == SUCCESS || ret == SUCCESS?SUCCESS:FAILURE;
watch             370 sapi/phpdbg/phpdbg_watch.c 				phpdbg_watchpoint_t *watch = emalloc(sizeof(phpdbg_watchpoint_t));
watch             371 sapi/phpdbg/phpdbg_watch.c 				watch->flags = 0;
watch             372 sapi/phpdbg/phpdbg_watch.c 				watch->str = zend_strndup(input, len);
watch             373 sapi/phpdbg/phpdbg_watch.c 				watch->str_len = len;
watch             374 sapi/phpdbg/phpdbg_watch.c 				watch->name_in_parent = zend_strndup(last_index, index_len);
watch             375 sapi/phpdbg/phpdbg_watch.c 				watch->name_in_parent_len = index_len;
watch             376 sapi/phpdbg/phpdbg_watch.c 				watch->parent_container = parent;
watch             377 sapi/phpdbg/phpdbg_watch.c 				phpdbg_create_zval_watchpoint(*zv, watch);
watch             379 sapi/phpdbg/phpdbg_watch.c 				ret = callback(watch TSRMLS_CC) == SUCCESS || ret == SUCCESS?SUCCESS:FAILURE;
watch             472 sapi/phpdbg/phpdbg_watch.c 		phpdbg_watchpoint_t *watch = result->ptr;
watch             476 sapi/phpdbg/phpdbg_watch.c 		phpdbg_notice("%.*s was removed, removing watchpoint%s", (int)watch->str_len, watch->str, (watch->flags & PHPDBG_WATCH_RECURSIVE)?" recursively":"");
watch             478 sapi/phpdbg/phpdbg_watch.c 		if (watch->flags & PHPDBG_WATCH_RECURSIVE) {
watch             479 sapi/phpdbg/phpdbg_watch.c 			phpdbg_delete_watchpoint_recursive(watch, 0 TSRMLS_CC);
watch             481 sapi/phpdbg/phpdbg_watch.c 			zend_hash_del(&PHPDBG_G(watchpoints), watch->str, watch->str_len);
watch             510 sapi/phpdbg/phpdbg_watch.c 	phpdbg_watchpoint_t *watch;
watch             513 sapi/phpdbg/phpdbg_watch.c 	watch = phpdbg_check_for_watchpoint(
watch             521 sapi/phpdbg/phpdbg_watch.c 	if (watch == NULL) {
watch             525 sapi/phpdbg/phpdbg_watch.c 	page = phpdbg_get_page_boundary(watch->addr.ptr);
watch             526 sapi/phpdbg/phpdbg_watch.c 	size = phpdbg_get_total_page_size(watch->addr.ptr, watch->size);
watch             547 sapi/phpdbg/phpdbg_watch.c 	phpdbg_watchpoint_t *watch = *(phpdbg_watchpoint_t **)pDest;
watch             550 sapi/phpdbg/phpdbg_watch.c 	phpdbg_deactivate_watchpoint(watch TSRMLS_CC);
watch             551 sapi/phpdbg/phpdbg_watch.c 	phpdbg_remove_watchpoint(watch TSRMLS_CC);
watch             553 sapi/phpdbg/phpdbg_watch.c 	free(watch->str);
watch             554 sapi/phpdbg/phpdbg_watch.c 	free(watch->name_in_parent);
watch             555 sapi/phpdbg/phpdbg_watch.c 	efree(watch);
watch             596 sapi/phpdbg/phpdbg_watch.c 		phpdbg_watchpoint_t *watch = result->ptr, *htwatch;
watch             597 sapi/phpdbg/phpdbg_watch.c 		void *oldPtr = (char *)&dump->data + ((size_t)watch->addr.ptr - (size_t)dump->page);
watch             600 sapi/phpdbg/phpdbg_watch.c 		if ((size_t)watch->addr.ptr < (size_t)dump->page || (size_t)watch->addr.ptr + watch->size > (size_t)dump->page + dump->size) {
watch             605 sapi/phpdbg/phpdbg_watch.c 		if (zend_hash_find(watch->parent_container, watch->name_in_parent, watch->name_in_parent_len + 1, &curTest) == SUCCESS) {
watch             606 sapi/phpdbg/phpdbg_watch.c 			if (watch->type == WATCH_ON_HASHTABLE) {
watch             619 sapi/phpdbg/phpdbg_watch.c 			if (curTest != watch->addr.ptr) {
watch             620 sapi/phpdbg/phpdbg_watch.c 				phpdbg_deactivate_watchpoint(watch TSRMLS_CC);
watch             621 sapi/phpdbg/phpdbg_watch.c 				phpdbg_remove_watchpoint(watch TSRMLS_CC);
watch             622 sapi/phpdbg/phpdbg_watch.c 				watch->addr.ptr = curTest;
watch             623 sapi/phpdbg/phpdbg_watch.c 				phpdbg_store_watchpoint(watch TSRMLS_CC);
watch             624 sapi/phpdbg/phpdbg_watch.c 				phpdbg_activate_watchpoint(watch TSRMLS_CC);
watch             631 sapi/phpdbg/phpdbg_watch.c 		if (memcmp(oldPtr, watch->addr.ptr, watch->size) != SUCCESS) {
watch             632 sapi/phpdbg/phpdbg_watch.c 			if (PHPDBG_G(flags) & PHPDBG_SHOW_REFCOUNTS || (watch->type == WATCH_ON_ZVAL && memcmp(oldPtr, watch->addr.zv, sizeof(zvalue_value))) || (watch->type == WATCH_ON_HASHTABLE
watch             634 sapi/phpdbg/phpdbg_watch.c 			    && !watch->addr.ht->inconsistent
watch             636 sapi/phpdbg/phpdbg_watch.c 			    && zend_hash_num_elements((HashTable *)oldPtr) != zend_hash_num_elements(watch->addr.ht))) {
watch             639 sapi/phpdbg/phpdbg_watch.c 				phpdbg_notice("Breaking on watchpoint %s", watch->str);
watch             642 sapi/phpdbg/phpdbg_watch.c 			switch (watch->type) {
watch             644 sapi/phpdbg/phpdbg_watch.c 					int removed = ((zval *)oldPtr)->refcount__gc != watch->addr.zv->refcount__gc && !zend_symtable_exists(watch->parent_container, watch->name_in_parent, watch->name_in_parent_len + 1);
watch             645 sapi/phpdbg/phpdbg_watch.c 					int show_value = memcmp(oldPtr, watch->addr.zv, sizeof(zvalue_value));
watch             646 sapi/phpdbg/phpdbg_watch.c 					int show_ref = ((zval *)oldPtr)->refcount__gc != watch->addr.zv->refcount__gc || ((zval *)oldPtr)->is_ref__gc != watch->addr.zv->is_ref__gc;
watch             663 sapi/phpdbg/phpdbg_watch.c 						phpdbg_notice("Watchpoint %s was unset, removing watchpoint", watch->str);
watch             664 sapi/phpdbg/phpdbg_watch.c 						zend_hash_del(&PHPDBG_G(watchpoints), watch->str, watch->str_len);
watch             677 sapi/phpdbg/phpdbg_watch.c 						zend_print_flat_zval_r(watch->addr.zv TSRMLS_CC);
watch             681 sapi/phpdbg/phpdbg_watch.c 						phpdbg_writeln("New refcount: %d; New is_ref: %d", watch->addr.zv->refcount__gc, watch->addr.zv->is_ref__gc);
watch             684 sapi/phpdbg/phpdbg_watch.c 					if ((Z_TYPE_P(watch->addr.zv) == IS_ARRAY && Z_ARRVAL_P(watch->addr.zv) != Z_ARRVAL_P((zval *)oldPtr)) || (Z_TYPE_P(watch->addr.zv) != IS_OBJECT && Z_OBJ_HANDLE_P(watch->addr.zv) == Z_OBJ_HANDLE_P((zval *)oldPtr))) {
watch             686 sapi/phpdbg/phpdbg_watch.c 						if (watch->flags & PHPDBG_WATCH_RECURSIVE) {
watch             687 sapi/phpdbg/phpdbg_watch.c 							phpdbg_create_recursive_watchpoint(watch TSRMLS_CC);
watch             691 sapi/phpdbg/phpdbg_watch.c 					if ((Z_TYPE_P((zval *)oldPtr) != IS_ARRAY || Z_ARRVAL_P(watch->addr.zv) == Z_ARRVAL_P((zval *)oldPtr)) && (Z_TYPE_P((zval *)oldPtr) != IS_OBJECT || Z_OBJ_HANDLE_P(watch->addr.zv) == Z_OBJ_HANDLE_P((zval *)oldPtr))) {
watch             706 sapi/phpdbg/phpdbg_watch.c 					if (watch->addr.ht->inconsistent) {
watch             707 sapi/phpdbg/phpdbg_watch.c 						phpdbg_notice("Watchpoint %s was unset, removing watchpoint", watch->str);
watch             708 sapi/phpdbg/phpdbg_watch.c 						zend_hash_del(&PHPDBG_G(watchpoints), watch->str, watch->str_len);
watch             716 sapi/phpdbg/phpdbg_watch.c 					elementDiff = zend_hash_num_elements((HashTable *)oldPtr) - zend_hash_num_elements(watch->addr.ht);
watch             724 sapi/phpdbg/phpdbg_watch.c 							if (watch->flags & PHPDBG_WATCH_RECURSIVE) {
watch             725 sapi/phpdbg/phpdbg_watch.c 								phpdbg_create_recursive_watchpoint(watch TSRMLS_CC);
watch             729 sapi/phpdbg/phpdbg_watch.c 					if (((HashTable *)oldPtr)->pInternalPointer != watch->addr.ht->pInternalPointer) {
watch             765 sapi/phpdbg/phpdbg_watch.c 	phpdbg_watchpoint_t **watch;
watch             768 sapi/phpdbg/phpdbg_watch.c 	     zend_hash_get_current_data_ex(&PHPDBG_G(watchpoints), (void**) &watch, &position) == SUCCESS;
watch             770 sapi/phpdbg/phpdbg_watch.c 		phpdbg_writeln("%.*s", (int)(*watch)->str_len, (*watch)->str);
watch             781 sapi/phpdbg/phpdbg_watch.c 		phpdbg_watchpoint_t *watch = result->ptr;
watch             783 sapi/phpdbg/phpdbg_watch.c 		if ((size_t)watch->addr.ptr + watch->size > (size_t)ptr) {
watch             784 sapi/phpdbg/phpdbg_watch.c 			zend_hash_del(&PHPDBG_G(watchpoints), watch->str, watch->str_len);
watch              89 sapi/phpdbg/phpdbg_watch.h void phpdbg_create_addr_watchpoint(void *addr, size_t size, phpdbg_watchpoint_t *watch);
watch              90 sapi/phpdbg/phpdbg_watch.h void phpdbg_create_zval_watchpoint(zval *zv, phpdbg_watchpoint_t *watch);