@@ -128,6 +128,12 @@ static void php_v8_isolate_free(zend_object *object) {
128128
129129 delete php_v8_isolate->create_params ;
130130 }
131+
132+ if (php_v8_isolate->blob && php_v8_isolate->blob ->release ()) {
133+ delete php_v8_isolate->blob ;
134+ }
135+
136+ php_v8_isolate->blob = nullptr ;
131137}
132138
133139static void php_v8_isolate_oom_error_callback (const char *location, bool is_heap_oom) {
@@ -144,6 +150,7 @@ static zend_object *php_v8_isolate_ctor(zend_class_entry *ce) {
144150
145151 php_v8_init ();
146152
153+ php_v8_isolate->blob = nullptr ;
147154 php_v8_isolate->create_params = new v8::Isolate::CreateParams ();
148155 php_v8_isolate->create_params ->array_buffer_allocator = v8::ArrayBuffer::Allocator::NewDefaultAllocator ();
149156
@@ -191,9 +198,10 @@ static PHP_METHOD(V8Isolate, __construct) {
191198
192199 if (snapshot_zv != NULL ) {
193200 PHP_V8_STARTUP_DATA_FETCH_INTO (snapshot_zv, php_v8_startup_data);
194- zend_update_property (this_ce, getThis (), ZEND_STRL (" snapshot" ), snapshot_zv);
195-
196- php_v8_isolate->create_params ->snapshot_blob = php_v8_startup_data->blob ;
201+ if (php_v8_startup_data->blob && php_v8_startup_data->blob ->hasData ()) {
202+ php_v8_isolate->blob = php_v8_startup_data->blob ;
203+ php_v8_isolate->create_params ->snapshot_blob = php_v8_isolate->blob ->acquire ();
204+ }
197205 }
198206
199207 php_v8_isolate->isolate = v8::Isolate::New (*php_v8_isolate->create_params );
@@ -313,21 +321,6 @@ static PHP_METHOD(V8Isolate, IsMemoryLimitHit) {
313321 RETVAL_ZVAL (prop, 1 , 0 );
314322}
315323
316- static PHP_METHOD (V8Isolate, GetSnapshot) {
317- zval rv;
318-
319- zval *prop = NULL ;
320- if (zend_parse_parameters_none () == FAILURE) {
321- return ;
322- }
323-
324- PHP_V8_ISOLATE_FETCH_WITH_CHECK (getThis (), php_v8_isolate);
325-
326- prop = zend_read_property (this_ce, getThis (), ZEND_STRL (" snapshot" ), 0 , &rv);
327-
328- RETVAL_ZVAL (prop, 1 , 0 );
329- }
330-
331324static PHP_METHOD (V8Isolate, GetHeapStatistics) {
332325 if (zend_parse_parameters_none () == FAILURE) {
333326 return ;
@@ -526,9 +519,6 @@ ZEND_END_ARG_INFO()
526519PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_isolate_IsMemoryLimitHit, ZEND_RETURN_VALUE, 0 , _IS_BOOL, 0 )
527520ZEND_END_ARG_INFO()
528521
529- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_isolate_GetSnapshot, ZEND_RETURN_VALUE, 0 , V8\\StartupData, 1 )
530- ZEND_END_ARG_INFO()
531-
532522PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_isolate_GetHeapStatistics, ZEND_RETURN_VALUE, 0 , V8\\HeapStatistics, 0 )
533523ZEND_END_ARG_INFO()
534524
@@ -586,8 +576,6 @@ static const zend_function_entry php_v8_isolate_methods[] = {
586576 PHP_ME (V8Isolate, GetMemoryLimit, arginfo_v8_isolate_GetMemoryLimit, ZEND_ACC_PUBLIC)
587577 PHP_ME (V8Isolate, IsMemoryLimitHit, arginfo_v8_isolate_IsMemoryLimitHit, ZEND_ACC_PUBLIC)
588578
589- PHP_ME (V8Isolate, GetSnapshot, arginfo_v8_isolate_GetSnapshot, ZEND_ACC_PUBLIC)
590-
591579 PHP_ME (V8Isolate, GetHeapStatistics, arginfo_v8_isolate_GetHeapStatistics, ZEND_ACC_PUBLIC)
592580
593581 PHP_ME (V8Isolate, InContext, arginfo_v8_isolate_InContext, ZEND_ACC_PUBLIC)
@@ -616,8 +604,6 @@ PHP_MINIT_FUNCTION (php_v8_isolate) {
616604 this_ce = zend_register_internal_class (&ce);
617605 this_ce->create_object = php_v8_isolate_ctor;
618606
619- zend_declare_property_null (this_ce, ZEND_STRL (" snapshot" ), ZEND_ACC_PRIVATE);
620-
621607 zend_declare_property_double (this_ce, ZEND_STRL (" time_limit" ), 0.0 , ZEND_ACC_PRIVATE);
622608 zend_declare_property_bool (this_ce, ZEND_STRL (" time_limit_hit" ), 0 , ZEND_ACC_PRIVATE);
623609
0 commit comments