Files

212 lines
9.0 KiB
Diff

PHP 8 compatibility.
https://github.com/BitOne/php-meminfo/commit/829e0061b020ec2b9a6a89c1bf381c6038800ef1
--- extension/php7/meminfo.c.orig
+++ extension/php7/meminfo.c
@@ -16,11 +16,21 @@
#include "SAPI.h"
#include "zend_API.h"
+#if PHP_VERSION_ID >= 80000
+ZEND_BEGIN_ARG_INFO_EX(arginfo_meminfo_dump, 0, 0, 1)
+ ZEND_ARG_INFO(0, output_stream)
+ZEND_END_ARG_INFO()
+const zend_function_entry meminfo_functions[] = {
+ PHP_FE(meminfo_dump, arginfo_meminfo_dump)
+ PHP_FE_END
+};
+#else
const zend_function_entry meminfo_functions[] = {
PHP_FE(meminfo_dump, NULL)
PHP_FE_END
};
+#endif
zend_module_entry meminfo_module_entry = {
STANDARD_MODULE_HEADER,
@@ -48,28 +59,28 @@ PHP_FUNCTION(meminfo_dump)
php_stream *stream;
HashTable visited_items;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zval_stream) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zval_stream) == FAILURE) {
return;
}
zend_hash_init(&visited_items, 1000, NULL, NULL, 0);
php_stream_from_zval(stream, zval_stream);
- php_stream_printf(stream TSRMLS_CC, "{\n");
+ php_stream_printf(stream, "{\n");
- php_stream_printf(stream TSRMLS_CC, " \"header\" : {\n");
- php_stream_printf(stream TSRMLS_CC, " \"memory_usage\" : %zd,\n", zend_memory_usage(0));
- php_stream_printf(stream TSRMLS_CC, " \"memory_usage_real\" : %zd,\n", zend_memory_usage(1));
- php_stream_printf(stream TSRMLS_CC, " \"peak_memory_usage\" : %zd,\n", zend_memory_peak_usage(0));
- php_stream_printf(stream TSRMLS_CC, " \"peak_memory_usage_real\" : %zd\n", zend_memory_peak_usage(1));
- php_stream_printf(stream TSRMLS_CC, " },\n");
+ php_stream_printf(stream, " \"header\" : {\n");
+ php_stream_printf(stream, " \"memory_usage\" : %zd,\n", zend_memory_usage(0));
+ php_stream_printf(stream, " \"memory_usage_real\" : %zd,\n", zend_memory_usage(1));
+ php_stream_printf(stream, " \"peak_memory_usage\" : %zd,\n", zend_memory_peak_usage(0));
+ php_stream_printf(stream, " \"peak_memory_usage_real\" : %zd\n", zend_memory_peak_usage(1));
+ php_stream_printf(stream, " },\n");
- php_stream_printf(stream TSRMLS_CC, " \"items\": {\n");
+ php_stream_printf(stream, " \"items\": {\n");
meminfo_browse_exec_frames(stream, &visited_items, &first_element);
meminfo_browse_class_static_members(stream, &visited_items, &first_element);
- php_stream_printf(stream TSRMLS_CC, "\n }\n");
- php_stream_printf(stream TSRMLS_CC, "}\n}\n");
+ php_stream_printf(stream, "\n }\n");
+ php_stream_printf(stream, "}\n}\n");
zend_hash_destroy(&visited_items);
}
@@ -225,7 +236,7 @@ void meminfo_hash_dump(php_stream *stream, HashTable *ht, zend_bool is_object, H
int first_child = 1;
- php_stream_printf(stream TSRMLS_CC, " \"children\" : {\n");
+ php_stream_printf(stream, " \"children\" : {\n");
zend_hash_internal_pointer_reset_ex(ht, &pos);
while ((zval = zend_hash_get_current_data_ex(ht, &pos)) != NULL) {
@@ -246,7 +257,7 @@ void meminfo_hash_dump(php_stream *stream, HashTable *ht, zend_bool is_object, H
}
if (!first_child) {
- php_stream_printf(stream TSRMLS_CC, ",\n");
+ php_stream_printf(stream, ",\n");
} else {
first_child = 0;
}
@@ -262,7 +273,7 @@ void meminfo_hash_dump(php_stream *stream, HashTable *ht, zend_bool is_object, H
escaped_property_name = meminfo_escape_for_json(property_name);
- php_stream_printf(stream TSRMLS_CC, " \"%s\":\"%s\"", ZSTR_VAL(escaped_property_name), zval_id);
+ php_stream_printf(stream, " \"%s\":\"%s\"", ZSTR_VAL(escaped_property_name), zval_id);
zend_string_release(escaped_property_name);
} else {
@@ -270,20 +281,20 @@ void meminfo_hash_dump(php_stream *stream, HashTable *ht, zend_bool is_object, H
escaped_key = meminfo_escape_for_json(ZSTR_VAL(key));
- php_stream_printf(stream TSRMLS_CC, " \"%s\":\"%s\"", ZSTR_VAL(escaped_key), zval_id);
+ php_stream_printf(stream, " \"%s\":\"%s\"", ZSTR_VAL(escaped_key), zval_id);
zend_string_release(escaped_key);
}
break;
case HASH_KEY_IS_LONG:
- php_stream_printf(stream TSRMLS_CC, " \"%ld\":\"%s\"", num_key, zval_id);
+ php_stream_printf(stream, " \"%ld\":\"%s\"", num_key, zval_id);
break;
}
zend_hash_move_forward_ex(ht, &pos);
}
- php_stream_printf(stream TSRMLS_CC, "\n }\n");
+ php_stream_printf(stream, "\n }\n");
zend_hash_internal_pointer_reset_ex(ht, &pos);
while ((zval = zend_hash_get_current_data_ex(ht, &pos)) != NULL) {
@@ -315,14 +326,14 @@ void meminfo_zval_dump(php_stream * stream, char * frame_label, zend_string * sy
}
if (! *first_element) {
- php_stream_printf(stream TSRMLS_CC, "\n },\n");
+ php_stream_printf(stream, "\n },\n");
} else {
*first_element = 0;
}
- php_stream_printf(stream TSRMLS_CC, " \"%s\" : {\n", zval_identifier);
- php_stream_printf(stream TSRMLS_CC, " \"type\" : \"%s\",\n", zend_get_type_by_const(Z_TYPE_P(zv)));
- php_stream_printf(stream TSRMLS_CC, " \"size\" : \"%ld\",\n", meminfo_get_element_size(zv));
+ php_stream_printf(stream, " \"%s\" : {\n", zval_identifier);
+ php_stream_printf(stream, " \"type\" : \"%s\",\n", zend_get_type_by_const(Z_TYPE_P(zv)));
+ php_stream_printf(stream, " \"size\" : \"%ld\",\n", meminfo_get_element_size(zv));
if (frame_label) {
zend_string * escaped_frame_label;
@@ -332,19 +343,19 @@ void meminfo_zval_dump(php_stream * stream, char * frame_label, zend_string * sy
escaped_symbol_name = meminfo_escape_for_json(ZSTR_VAL(symbol_name));
- php_stream_printf(stream TSRMLS_CC, " \"symbol_name\" : \"%s\",\n", ZSTR_VAL(escaped_symbol_name));
+ php_stream_printf(stream, " \"symbol_name\" : \"%s\",\n", ZSTR_VAL(escaped_symbol_name));
zend_string_release(escaped_symbol_name);
}
escaped_frame_label = meminfo_escape_for_json(frame_label);
- php_stream_printf(stream TSRMLS_CC, " \"is_root\" : true,\n");
- php_stream_printf(stream TSRMLS_CC, " \"frame\" : \"%s\"\n", ZSTR_VAL(escaped_frame_label));
+ php_stream_printf(stream, " \"is_root\" : true,\n");
+ php_stream_printf(stream, " \"frame\" : \"%s\"\n", ZSTR_VAL(escaped_frame_label));
zend_string_release(escaped_frame_label);
} else {
- php_stream_printf(stream TSRMLS_CC, " \"is_root\" : false\n");
+ php_stream_printf(stream, " \"is_root\" : false\n");
}
if (Z_TYPE_P(zv) == IS_OBJECT) {
@@ -355,12 +366,12 @@ void meminfo_zval_dump(php_stream * stream, char * frame_label, zend_string * sy
escaped_class_name = meminfo_escape_for_json(ZSTR_VAL(Z_OBJCE_P(zv)->name));
- php_stream_printf(stream TSRMLS_CC, ",\n");
- php_stream_printf(stream TSRMLS_CC, " \"class\" : \"%s\",\n", ZSTR_VAL(escaped_class_name));
+ php_stream_printf(stream, ",\n");
+ php_stream_printf(stream, " \"class\" : \"%s\",\n", ZSTR_VAL(escaped_class_name));
zend_string_release(escaped_class_name);
- php_stream_printf(stream TSRMLS_CC, " \"object_handle\" : \"%d\",\n", Z_OBJ_HANDLE_P(zv));
+ php_stream_printf(stream, " \"object_handle\" : \"%d\",\n", Z_OBJ_HANDLE_P(zv));
#if PHP_VERSION_ID >= 70400
properties = zend_get_properties_for(zv, ZEND_PROP_PURPOSE_DEBUG);
@@ -382,10 +393,10 @@ void meminfo_zval_dump(php_stream * stream, char * frame_label, zend_string * sy
#endif
}
} else if (Z_TYPE_P(zv) == IS_ARRAY) {
- php_stream_printf(stream TSRMLS_CC, ",\n");
+ php_stream_printf(stream, ",\n");
meminfo_hash_dump(stream, Z_ARRVAL_P(zv), 0, visited_items, first_element);
} else {
- php_stream_printf(stream TSRMLS_CC, "\n");
+ php_stream_printf(stream, "\n");
}
}
@@ -441,12 +452,21 @@ void meminfo_build_frame_label(char* frame_label, int frame_label_len, zend_exec
if (frame->func) {
func = frame->func;
+
+#if PHP_VERSION_ID >= 80000
+ if (func->common.function_name) {
+ function_name = ZSTR_VAL(func->common.function_name);
+ } else {
+ function_name = NULL;
+ }
+#else
function_name = (func->common.scope &&
func->common.scope->trait_aliases) ?
ZSTR_VAL(zend_resolve_method_name(
(object ? object->ce : func->common.scope), func)) :
(func->common.function_name ?
ZSTR_VAL(func->common.function_name) : NULL);
+#endif
} else {
func = NULL;
function_name = NULL;