Hi.
I'm trying to develop nodejs module on C++ using v8.
Here is source code.
#include <node.h>
using namespace v8;
void TestContext1(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = Isolate::New();
{
Isolate::Scope isolate_scope(isolate);
V8::Initialize();
Locker lock(isolate);
HandleScope handle_scope(isolate);
Local<Context> context = Context::New(isolate);
Context::Scope context_scope(context);
Handle<String> strExpr = Handle<String>::Cast(args[0]);
Handle<Script> script;
Handle<Value> res;
TryCatch tryCatch;
script = Script::Compile(strExpr);
res = script->Run();
if (tryCatch.HasCaught()) {
res = tryCatch.Message()->Get();
}
args.GetReturnValue().Set(res);
}
isolate->Dispose();
}
void TestContext2(const FunctionCallbackInfo<Value>& args) {
Isolate *isolate = args.GetIsolate();
Isolate::Scope isolate_scope(isolate);
HandleScope handle_scope(isolate);
Local<Context> context = Context::New(isolate);
Context::Scope context_scope(context);
Handle<String> strExpr = Handle<String>::Cast(args[0]);
Handle<Script> script;
Handle<Value> res;
TryCatch tryCatch;
script = Script::Compile(strExpr);
res = script->Run();
if (tryCatch.HasCaught()) {
res = tryCatch.Message()->Get();
}
args.GetReturnValue().Set(res);
}
void Init(Handle<Object> exports, Handle<Object> module) {
NODE_SET_METHOD(exports, "TestContext1", TestContext1);
NODE_SET_METHOD(exports, "TestContext2", TestContext2);
}
NODE_MODULE(addon, Init)
And then testing it with js code:
var addon = require('addon.node')
var i = 0;
setInterval(function () {
msg = addon.TestContext1("process.exit()"); // or msg =
addon.TestContext2("process.exit()");
console.log(msg, i++, process.memoryUsage().heapUsed/1024/1024);
}, 2);
Every function have different problems:
**TestContext1** works fine but accessing global context and shutting down
process.
**TestContext2** does not have access to global context but gives memory
leaks.
All what I need - execute js script in isolated context without memory
leaks.
node vm doesn't work because vm.runInNewContext() have same memory leaks.
Does anybody have some ideas?
--
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups
"v8-users" 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.