Skip to content
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

Commit f980e3a

Browse files
committed
Add peak_malloced_memory to V8\HeapStatistics
V8 commit: v8/v8@ad93c01
1 parent e3342f2 commit f980e3a

File tree

6 files changed

+45
-8
lines changed

6 files changed

+45
-8
lines changed

src/php_v8_heap_statistics.cc

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ void php_v8_heap_statistics_create_from_heap_statistics(zval *return_value, v8::
3636
zend_update_property_double(this_ce, return_value, ZEND_STRL("used_heap_size"), hs->used_heap_size());
3737
zend_update_property_double(this_ce, return_value, ZEND_STRL("heap_size_limit"), hs->heap_size_limit());
3838
zend_update_property_double(this_ce, return_value, ZEND_STRL("malloced_memory"), hs->malloced_memory());
39+
zend_update_property_double(this_ce, return_value, ZEND_STRL("peak_malloced_memory"), hs->peak_malloced_memory());
3940

4041
zend_update_property_bool(this_ce, return_value, ZEND_STRL("does_zap_garbage"), static_cast<zend_long>(hs->does_zap_garbage()));
41-
4242
}
4343

4444
static PHP_METHOD(V8HeapStatistics, __construct) {
@@ -49,12 +49,14 @@ static PHP_METHOD(V8HeapStatistics, __construct) {
4949
double used_heap_size = 0;
5050
double heap_size_limit = 0;
5151
double malloced_memory = 0;
52+
double peak_malloced_memory = 0;
5253

5354
zend_bool does_zap_garbage = '\0';
5455

55-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|dddddddb",
56+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|" "dddd" "dddd" "b",
5657
&total_heap_size, &total_heap_size_executable, &total_physical_size, &total_available_size,
57-
&used_heap_size, &heap_size_limit, &malloced_memory, &does_zap_garbage) == FAILURE) {
58+
&used_heap_size, &heap_size_limit, &malloced_memory, &peak_malloced_memory,
59+
&does_zap_garbage) == FAILURE) {
5860
return;
5961
}
6062

@@ -65,6 +67,7 @@ static PHP_METHOD(V8HeapStatistics, __construct) {
6567
zend_update_property_double(this_ce, getThis(), ZEND_STRL("used_heap_size"), used_heap_size);
6668
zend_update_property_double(this_ce, getThis(), ZEND_STRL("heap_size_limit"), heap_size_limit);
6769
zend_update_property_double(this_ce, getThis(), ZEND_STRL("malloced_memory"), malloced_memory);
70+
zend_update_property_double(this_ce, getThis(), ZEND_STRL("peak_malloced_memory"), peak_malloced_memory);
6871

6972
zend_update_property_bool(this_ce, getThis(), ZEND_STRL("does_zap_garbage"), does_zap_garbage);
7073
}
@@ -139,6 +142,16 @@ static PHP_METHOD(V8HeapStatistics, malloced_memory) {
139142
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("malloced_memory"), 0, &rv), 1, 0);
140143
}
141144

145+
static PHP_METHOD(V8HeapStatistics, peak_malloced_memory) {
146+
zval rv;
147+
148+
if (zend_parse_parameters_none() == FAILURE) {
149+
return;
150+
}
151+
152+
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("peak_malloced_memory"), 0, &rv), 1, 0);
153+
}
154+
142155
static PHP_METHOD(V8HeapStatistics, does_zap_garbage) {
143156
zval rv;
144157

@@ -155,6 +168,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_heap_statistics___construct, ZEND_SEND_BY_VAL,
155168
ZEND_ARG_TYPE_INFO(0, total_heap_size_executable, IS_DOUBLE, 0)
156169
ZEND_ARG_TYPE_INFO(0, total_physical_size, IS_DOUBLE, 0)
157170
ZEND_ARG_TYPE_INFO(0, total_available_size, IS_DOUBLE, 0)
171+
158172
ZEND_ARG_TYPE_INFO(0, used_heap_size, IS_DOUBLE, 0)
159173
ZEND_ARG_TYPE_INFO(0, heap_size_limit, IS_DOUBLE, 0)
160174
ZEND_ARG_TYPE_INFO(0, malloced_memory, IS_DOUBLE, 0)
@@ -184,6 +198,9 @@ ZEND_END_ARG_INFO()
184198
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_heap_statistics__malloced_memory, ZEND_RETURN_VALUE, 0, IS_DOUBLE, NULL, 0)
185199
ZEND_END_ARG_INFO()
186200

201+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_heap_statistics__peak_malloced_memory, ZEND_RETURN_VALUE, 0, IS_DOUBLE, NULL, 0)
202+
ZEND_END_ARG_INFO()
203+
187204
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_heap_statistics__does_zap_garbage, ZEND_RETURN_VALUE, 0, _IS_BOOL, NULL, 0)
188205
ZEND_END_ARG_INFO()
189206

@@ -198,6 +215,7 @@ static const zend_function_entry php_v8_heap_statistics_methods[] = {
198215
PHP_ME(V8HeapStatistics, used_heap_size, arginfo_v8_heap_statistics__used_heap_size, ZEND_ACC_PUBLIC)
199216
PHP_ME(V8HeapStatistics, heap_size_limit, arginfo_v8_heap_statistics__heap_size_limit, ZEND_ACC_PUBLIC)
200217
PHP_ME(V8HeapStatistics, malloced_memory, arginfo_v8_heap_statistics__malloced_memory, ZEND_ACC_PUBLIC)
218+
PHP_ME(V8HeapStatistics, peak_malloced_memory, arginfo_v8_heap_statistics__peak_malloced_memory, ZEND_ACC_PUBLIC)
201219
PHP_ME(V8HeapStatistics, does_zap_garbage, arginfo_v8_heap_statistics__does_zap_garbage, ZEND_ACC_PUBLIC)
202220

203221
PHP_FE_END
@@ -216,6 +234,7 @@ PHP_MINIT_FUNCTION (php_v8_heap_statistics) {
216234
zend_declare_property_double(this_ce, ZEND_STRL("used_heap_size"), 0, ZEND_ACC_PRIVATE);
217235
zend_declare_property_double(this_ce, ZEND_STRL("heap_size_limit"), 0, ZEND_ACC_PRIVATE);
218236
zend_declare_property_double(this_ce, ZEND_STRL("malloced_memory"), 0, ZEND_ACC_PRIVATE);
237+
zend_declare_property_double(this_ce, ZEND_STRL("peak_malloced_memory"), 0, ZEND_ACC_PRIVATE);
219238

220239
zend_declare_property_bool(this_ce, ZEND_STRL("does_zap_garbage"), false, ZEND_ACC_PRIVATE);
221240

stubs/src/HeapStatistics.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ class HeapStatistics
5454
* @var float
5555
*/
5656
private $malloced_memory;
57+
/**
58+
* @var float
59+
*/
60+
private $peak_malloced_memory;
5761
/**
5862
* @var bool
5963
*/
@@ -77,6 +81,7 @@ public function __construct(
7781
float $used_heap_size,
7882
float $heap_size_limit,
7983
float $malloced_memory,
84+
float $peak_malloced_memory,
8085
bool $does_zap_garbage
8186
) {
8287
$this->total_heap_size = $total_heap_size;
@@ -86,6 +91,7 @@ public function __construct(
8691
$this->used_heap_size = $used_heap_size;
8792
$this->heap_size_limit = $heap_size_limit;
8893
$this->malloced_memory = $malloced_memory;
94+
$this->peak_malloced_memory = $peak_malloced_memory;
8995
$this->does_zap_garbage = $does_zap_garbage;
9096
}
9197

@@ -124,6 +130,11 @@ public function malloced_memory() : float
124130
return $this->malloced_memory;
125131
}
126132

133+
public function peak_malloced_memory() : float
134+
{
135+
return $this->peak_malloced_memory;
136+
}
137+
127138
public function does_zap_garbage() : bool
128139
{
129140
return $this->does_zap_garbage;

tests/V8HeapStatistics.phpt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ V8\HeapStatistics
88
/** @var \Phpv8Testsuite $helper */
99
$helper = require '.testsuite.php';
1010

11-
$hs = new \V8\HeapStatistics(1, 2, 3, 4, 5, 6, 7, true);
11+
$hs = new \V8\HeapStatistics(1, 2, 3, 4, 5, 6, 7, 8, true);
1212

1313
$helper->header('Object representation');
1414
$helper->dump($hs);
@@ -20,7 +20,7 @@ $helper->dump_object_methods($hs);
2020
--EXPECT--
2121
Object representation:
2222
----------------------
23-
object(V8\HeapStatistics)#2 (8) {
23+
object(V8\HeapStatistics)#2 (9) {
2424
["total_heap_size":"V8\HeapStatistics":private]=>
2525
float(1)
2626
["total_heap_size_executable":"V8\HeapStatistics":private]=>
@@ -35,6 +35,8 @@ object(V8\HeapStatistics)#2 (8) {
3535
float(6)
3636
["malloced_memory":"V8\HeapStatistics":private]=>
3737
float(7)
38+
["peak_malloced_memory":"V8\HeapStatistics":private]=>
39+
float(8)
3840
["does_zap_garbage":"V8\HeapStatistics":private]=>
3941
bool(true)
4042
}

tests/V8Isolate.phpt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ object(V8\Isolate)#2 (5) {
4646
V8\Exceptions\GenericException: Not in context!
4747

4848
V8\Isolate->GetHeapStatistics():
49-
object(V8\HeapStatistics)#28 (8) {
49+
object(V8\HeapStatistics)#28 (9) {
5050
["total_heap_size":"V8\HeapStatistics":private]=>
5151
float(%d)
5252
["total_heap_size_executable":"V8\HeapStatistics":private]=>
@@ -61,6 +61,8 @@ V8\Isolate->GetHeapStatistics():
6161
float(%d)
6262
["malloced_memory":"V8\HeapStatistics":private]=>
6363
float(%d)
64+
["peak_malloced_memory":"V8\HeapStatistics":private]=>
65+
float(%d)
6466
["does_zap_garbage":"V8\HeapStatistics":private]=>
6567
bool(false)
6668
}

tests/V8Isolate_limit_memory.phpt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ object(V8\Isolate)#3 (5) {
9191
["memory_limit_hit":"V8\Isolate":private]=>
9292
bool(true)
9393
}
94-
object(V8\HeapStatistics)#14 (8) {
94+
object(V8\HeapStatistics)#14 (9) {
9595
["total_heap_size":"V8\HeapStatistics":private]=>
9696
float(%d)
9797
["total_heap_size_executable":"V8\HeapStatistics":private]=>
@@ -106,6 +106,8 @@ object(V8\HeapStatistics)#14 (8) {
106106
float(%d)
107107
["malloced_memory":"V8\HeapStatistics":private]=>
108108
float(%d)
109+
["peak_malloced_memory":"V8\HeapStatistics":private]=>
110+
float(%d)
109111
["does_zap_garbage":"V8\HeapStatistics":private]=>
110112
bool(false)
111113
}

tests/V8Script_Run_out_of_memory.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
V8\Script::Run() - out of memory example
33
--SKIPIF--
44
<?php if (!extension_loaded("v8")) print "skip"; ?>
5-
<?php //if (!getenv("DEV_TESTS")) print "skip"; ?>
5+
<?php if (!getenv("DEV_TESTS")) print "skip"; ?>
6+
<?php if (getenv("SKIP_SLOW_TESTS")) print "skip slow"; ?>
67
--FILE--
78
<?php
89
/** @var \Phpv8Testsuite $helper */

0 commit comments

Comments
 (0)