I wanna to know why the NewType::~NewType don't called, the test code as follow.
#include "v8.h"
#include "libplatform/libplatform.h"
class NewType
{
public:
static void WeakPtrCallback(const v8::WeakCallbackData<v8::Object,
NewType>& data)
{
delete data.GetParameter();
}
NewType(v8::Isolate *isolate, v8::Handle<v8::Object> handle):
isolate_(isolate)
{
printf("%s\n", __PRETTY_FUNCTION__);
handle_.Reset(isolate, handle);
handle_.SetWeak(this, WeakPtrCallback);
}
~NewType()
{
handle_.Reset();
printf("%s\n", __PRETTY_FUNCTION__);
}
private:
v8::Persistent<v8::Object> handle_;
v8::Isolate *isolate_;
};
int main(int argc, char *argv[])
{
v8::Platform* platform = v8::platform::CreateDefaultPlatform();
v8::V8::InitializePlatform(platform);
v8::V8::Initialize();
v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
v8::Isolate* isolate = v8::Isolate::New();
{
v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Local<v8::Context> context = v8::Context::New(isolate);
v8::Context::Scope context_scope(context);
v8::Local<v8::ObjectTemplate> tpl =
v8::ObjectTemplate::New(isolate);
tpl->SetInternalFieldCount(1);
v8::Local<v8::Object> value = tpl->NewInstance();
new NewType(isolate, value);
context->Global()->Set(v8::String::NewFromUtf8(isolate, "test"),
value);
}
isolate->RequestGarbageCollectionForTesting(v8::Isolate::kFullGarbageCollection);
isolate->Dispose();
v8::V8::Dispose();
v8::V8::ShutdownPlatform();
delete platform;
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
