@@ -296,6 +296,21 @@ static PHP_METHOD(Isolate, isMemoryLimitHit) {
296
296
RETVAL_BOOL (php_v8_isolate->limits .memory_limit_hit );
297
297
}
298
298
299
+ static PHP_METHOD (Isolate, memoryPressureNotification) {
300
+ zend_long level = static_cast <zend_long>(v8::MemoryPressureLevel::kNone );
301
+
302
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " l" , &level) == FAILURE) {
303
+ return ;
304
+ }
305
+
306
+ PHP_V8_CHECK_ISOLATE_MEMORY_PRESSURE_LEVEL (level, " Invalid memory pressure level given. See V8\\ Isolate MEMORY_PRESSURE_LEVEL_* class constants for available levels." )
307
+
308
+ PHP_V8_ISOLATE_FETCH_WITH_CHECK (getThis (), php_v8_isolate);
309
+ PHP_V8_ENTER_ISOLATE (php_v8_isolate);
310
+
311
+ isolate->MemoryPressureNotification (static_cast <v8::MemoryPressureLevel>(level));
312
+ }
313
+
299
314
static PHP_METHOD (Isolate, getHeapStatistics) {
300
315
if (zend_parse_parameters_none () == FAILURE) {
301
316
return ;
@@ -511,6 +526,10 @@ ZEND_END_ARG_INFO()
511
526
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_isMemoryLimitHit, ZEND_RETURN_VALUE, 0 , _IS_BOOL, 0 )
512
527
ZEND_END_ARG_INFO()
513
528
529
+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_VOID_INFO_EX(arginfo_memoryPressureNotification, 0 )
530
+ ZEND_ARG_TYPE_INFO(0 , level, IS_LONG, 0 )
531
+ ZEND_END_ARG_INFO()
532
+
514
533
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getHeapStatistics, ZEND_RETURN_VALUE, 0 , V8\\HeapStatistics, 0 )
515
534
ZEND_END_ARG_INFO()
516
535
@@ -555,24 +574,25 @@ ZEND_END_ARG_INFO()
555
574
556
575
557
576
static const zend_function_entry php_v8_isolate_methods[] = {
558
- PHP_V8_ME (Isolate, __construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
559
- PHP_V8_ME (Isolate, setTimeLimit, ZEND_ACC_PUBLIC)
560
- PHP_V8_ME (Isolate, getTimeLimit, ZEND_ACC_PUBLIC)
561
- PHP_V8_ME (Isolate, isTimeLimitHit, ZEND_ACC_PUBLIC)
562
- PHP_V8_ME (Isolate, setMemoryLimit, ZEND_ACC_PUBLIC)
563
- PHP_V8_ME (Isolate, getMemoryLimit, ZEND_ACC_PUBLIC)
564
- PHP_V8_ME (Isolate, isMemoryLimitHit, ZEND_ACC_PUBLIC)
565
- PHP_V8_ME (Isolate, getHeapStatistics, ZEND_ACC_PUBLIC)
566
- PHP_V8_ME (Isolate, inContext, ZEND_ACC_PUBLIC)
567
- PHP_V8_ME (Isolate, getEnteredContext, ZEND_ACC_PUBLIC)
568
- PHP_V8_ME (Isolate, throwException, ZEND_ACC_PUBLIC)
569
- PHP_V8_ME (Isolate, idleNotificationDeadline, ZEND_ACC_PUBLIC)
570
- PHP_V8_ME (Isolate, lowMemoryNotification, ZEND_ACC_PUBLIC)
571
- PHP_V8_ME (Isolate, terminateExecution, ZEND_ACC_PUBLIC)
572
- PHP_V8_ME (Isolate, isExecutionTerminating, ZEND_ACC_PUBLIC)
573
- PHP_V8_ME (Isolate, cancelTerminateExecution, ZEND_ACC_PUBLIC)
574
- PHP_V8_ME (Isolate, isDead, ZEND_ACC_PUBLIC)
575
- PHP_V8_ME (Isolate, isInUse, ZEND_ACC_PUBLIC)
577
+ PHP_V8_ME (Isolate, __construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
578
+ PHP_V8_ME (Isolate, setTimeLimit, ZEND_ACC_PUBLIC)
579
+ PHP_V8_ME (Isolate, getTimeLimit, ZEND_ACC_PUBLIC)
580
+ PHP_V8_ME (Isolate, isTimeLimitHit, ZEND_ACC_PUBLIC)
581
+ PHP_V8_ME (Isolate, setMemoryLimit, ZEND_ACC_PUBLIC)
582
+ PHP_V8_ME (Isolate, getMemoryLimit, ZEND_ACC_PUBLIC)
583
+ PHP_V8_ME (Isolate, isMemoryLimitHit, ZEND_ACC_PUBLIC)
584
+ PHP_V8_ME (Isolate, memoryPressureNotification, ZEND_ACC_PUBLIC)
585
+ PHP_V8_ME (Isolate, getHeapStatistics, ZEND_ACC_PUBLIC)
586
+ PHP_V8_ME (Isolate, inContext, ZEND_ACC_PUBLIC)
587
+ PHP_V8_ME (Isolate, getEnteredContext, ZEND_ACC_PUBLIC)
588
+ PHP_V8_ME (Isolate, throwException, ZEND_ACC_PUBLIC)
589
+ PHP_V8_ME (Isolate, idleNotificationDeadline, ZEND_ACC_PUBLIC)
590
+ PHP_V8_ME (Isolate, lowMemoryNotification, ZEND_ACC_PUBLIC)
591
+ PHP_V8_ME (Isolate, terminateExecution, ZEND_ACC_PUBLIC)
592
+ PHP_V8_ME (Isolate, isExecutionTerminating, ZEND_ACC_PUBLIC)
593
+ PHP_V8_ME (Isolate, cancelTerminateExecution, ZEND_ACC_PUBLIC)
594
+ PHP_V8_ME (Isolate, isDead, ZEND_ACC_PUBLIC)
595
+ PHP_V8_ME (Isolate, isInUse, ZEND_ACC_PUBLIC)
576
596
PHP_V8_ME (Isolate, setCaptureStackTraceForUncaughtExceptions, ZEND_ACC_PUBLIC)
577
597
578
598
PHP_FE_END
@@ -586,6 +606,10 @@ PHP_MINIT_FUNCTION (php_v8_isolate) {
586
606
this_ce = zend_register_internal_class (&ce);
587
607
this_ce->create_object = php_v8_isolate_ctor;
588
608
609
+ zend_declare_class_constant_long (this_ce, ZEND_STRL (" MEMORY_PRESSURE_LEVEL_NONE" ), static_cast <zend_long>(v8::MemoryPressureLevel::kNone ));
610
+ zend_declare_class_constant_long (this_ce, ZEND_STRL (" MEMORY_PRESSURE_LEVEL_MODERATE" ), static_cast <zend_long>(v8::MemoryPressureLevel::kModerate ));
611
+ zend_declare_class_constant_long (this_ce, ZEND_STRL (" MEMORY_PRESSURE_LEVEL_CRITICAL" ), static_cast <zend_long>(v8::MemoryPressureLevel::kCritical ));
612
+
589
613
memcpy (&php_v8_isolate_object_handlers, zend_get_std_object_handlers (), sizeof (zend_object_handlers));
590
614
591
615
php_v8_isolate_object_handlers.offset = XtOffsetOf (php_v8_isolate_t , std);
0 commit comments