#include #include #include #include #include using v8::Context; using v8::HandleScope; using v8::Isolate; using v8::Local; using v8::Object; using v8::Value; size_t count = 0; struct statically_allocated { statically_allocated() { assert(count == 0); printf("ctor "); } ~statically_allocated() { assert(count == 0); printf("dtor"); } } var; void Dummy(void*) { assert(0); } void Cleanup(void* str) { printf("%s ", static_cast(str)); } void Initialize(Local exports, Local module, Local context) { node::AddEnvironmentCleanupHook( context->GetIsolate(), Cleanup, const_cast(static_cast("cleanup"))); node::AddEnvironmentCleanupHook(context->GetIsolate(), Dummy, nullptr); node::RemoveEnvironmentCleanupHook(context->GetIsolate(), Dummy, nullptr); } NODE_MODULE_CONTEXT_AWARE(NODE_GYP_MODULE_NAME, Initialize)