From 4650273c90569211425757c88ae93c0342ddd4e3 Mon Sep 17 00:00:00 2001 From: Stefan Siegl Date: Sun, 2 Aug 2015 19:42:03 +0200 Subject: [PATCH] Shutdown V8 on GSHUTDOWN --- php_v8js_macros.h | 3 +++ v8js.cc | 8 ++++++++ v8js_v8.cc | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/php_v8js_macros.h b/php_v8js_macros.h index 9fd430c..cc7aaa4 100644 --- a/php_v8js_macros.h +++ b/php_v8js_macros.h @@ -115,6 +115,9 @@ void v8js_register_accessors(std::vector *accessor_list, v8: /* Module globals */ ZEND_BEGIN_MODULE_GLOBALS(v8js) int v8_initialized; +#if !defined(_WIN32) && PHP_V8_API_VERSION >= 3029036 + v8::Platform *v8_platform; +#endif HashTable *extensions; /* Ini globals */ diff --git a/v8js.cc b/v8js.cc index c622c3e..4ed5bcd 100755 --- a/v8js.cc +++ b/v8js.cc @@ -200,6 +200,14 @@ static PHP_GSHUTDOWN_FUNCTION(v8js) v8js_globals->timer_stack.~deque(); v8js_globals->timer_mutex.~mutex(); #endif + + if (v8js_globals->v8_initialized) { + v8::V8::Dispose(); + v8::V8::ShutdownPlatform(); +#if !defined(_WIN32) && PHP_V8_API_VERSION >= 3029036 + delete v8js_globals->v8_platform; +#endif + } } /* }}} */ diff --git a/v8js_v8.cc b/v8js_v8.cc index 742c559..a202c8a 100644 --- a/v8js_v8.cc +++ b/v8js_v8.cc @@ -42,8 +42,8 @@ void v8js_v8_init(TSRMLS_D) /* {{{ */ } #if !defined(_WIN32) && PHP_V8_API_VERSION >= 3029036 - v8::Platform* platform = v8::platform::CreateDefaultPlatform(); - v8::V8::InitializePlatform(platform); + V8JSG(v8_platform) = v8::platform::CreateDefaultPlatform(); + v8::V8::InitializePlatform(V8JSG(v8_platform)); #endif /* Set V8 command line flags (must be done before V8::Initialize()!) */