Tag: v8

针对V8编译NodeJs模块

我知道最近这个问题已经问了好几次了,但是当我尝试在Ubuntu 13.04上编译最简单的模块的时候,我得到了一个链接错误 受v8开发者网站的启发,我从源代码下载,编译并安装了nodejs和v8。 然后,我继续尝试编译一个简单的v8示例: g ++ hello_world.cc -o hello_world -Iinclude out / native / obj.target / tools / gyp / libv8_snapshot.a -lpthread 我得到的链接器错误是: 对`v8 :: HandleScope ::〜HandleScope()'的未定义引用 以及v8命名空间中的其他人。 有没有人有什么线索我缺less什么图书馆? 我的path中包含了node.h和v8.h头文件。 在此先感谢您的帮助。

使指向已删除的C ++对象的句柄无效

当暴露给v8的C ++对象被删除时,我怎样才能使可能指向这个对象的句柄失效。 我正在使用v8作为一个更大的应用程序的脚本接口。 更大的应用程序中的对象在v8中使用节点的ObjectWrap类进行封装和访问。 问题是,包装对象的生命周期是有限的。 如果在JavaScript中,我执行如下所示: var win = app.getWindow(); win.close(); // The C++ object that win references goes away console.log(win.width()); // This should fail. 我希望它的行为就像评论说的那样。 在win.close()之后(或者其他一些事件也许在JS控制之外),任何对win或者duplicate处理的访问都需要失败。 目前,我必须将封装的C ++对象标记为无效,并检查每个方法调用的有效性。 这是做到这一点的唯一方法,还是有办法标记一个不再有效的句柄?

为什么JavaScript的Math.pow()似乎返回一个四舍五入的值相比,在C中相同?

我的理解是,C的double和Javascript的数字都是IEEE 754 64位浮点数。 我试图将一些代码从C移植到Nodejs,并且我正在运行在JavaScript的Math.pow()似乎是舍入错误。 这是我的C程序: #include "stdio.h" #include "math.h" int main(int argc, char *argv[]) { double shared = 729; double exponent = 15; double prime = 1500450271; double power = pow(shared, exponent); double mod = fmod(power, prime); int intResult = (int) mod; printf("shared: %lf, exponent: %lf, prime: %lf, pow: %lf, mod: %lf, result: %i\n", shared, […]

Javascript V8中对象引用的大小

有谁知道Javascript(V8)中的对象引用的大小。 它的8个字节就像在C指针? 非常感谢你。

如何loggingNodeJS原生(V8)模块?

我开发了一个本地的NodeJS模块(使用NAN助手)。 现在我想知道什么是最好的方式来logging它。 模块导出的方法只存在于C ++源代码中,但是我希望导出Javascript文档。

Nodejs:__call实现可用?

我至less需要这样的functionatm: function ExampleClass() { } ExampleClass.prototype.__noSuchMethod__ = function() { console.log("No such method, maybe you should try reading the docs?"); } example = new ExampleClass(); example.eatPizza(); 是不是在V8或其他模拟其他? 有没有人在他们的项目上实现这种function? 谢谢

为什么在重新启动redis时node.js内存泄漏

如果你运行下面的代码,并重新启动你的Redis服务器,你会得到一个或两个uncaughtException,但没有更多的错误,然后,内存将增长非常快,我想知道为什么以及如何解决这个问题。 /** * This code will memory leak, if you restart redis server when the node process is running * * @author Gui Lin */ var redis = require('redis').createClient(); setInterval(function(){ redis.multi() .zrangebyscore('timeup', 0, Date.now()) .zremrangebyscore('timeup', 0, Date.now()) .exec(function(err, data) { if(err) console.log(err.stack); if(data) data = data[0]; }); }, 1); process.on('uncaughtException', function(err) { console.log(err.stack); })

用V8 / node.js创build一个空的PixelArray

我想能够做一个空的PixelArray与来自JavaScript内的节点canvas的输出进行比较。 例如: var cleanData = new PixelArray ( 20 ); 这可能吗? 我在错误版本的Node.js? (0.8.3)

如何从C ++调用JavaScriptcallback

我试图从我的函数的另一个angular度调用V8中的callback。 所以这段代码注册callback: if (args.Length()) { String::Utf8Value event(args[0]->ToString()); if (event.length()) { Isolate* isolate = V8Interface::getCurrent()->getIsolate(); Locker locker(isolate); HandleScope scope(isolate); callback cb = callback(isolate, Local<Function>::Cast(args[1])); if(!events.count(*event)) { events[*event] = callbacks({ cb }); } else { events.find(*event)->second.push_back(cb); } } } 这个叫它: void trigger(std::string event) { Isolate* isolate = V8Interface::getCurrent()->getIsolate(); Locker locker(isolate); HandleScope scope(isolate); if(events.count(event)) { for(callback cb : […]

V8是否在一个范围内的单个碎片上进行垃圾回收?

我感兴趣的是V8是否在一个范围内的单个variables的内容上进行垃圾回收,还是只在整个范围内进行垃圾回收? 所以,如果我有这个代码: function run() { "use strict"; var someBigVar = whatever; var cnt = 0; var interval = setInterval(function() { ++cnt; // do some recurring action // interval just keeps going // no reference to someBigVar in here }, 1000); someBigVar = somethingElse; } run(); V8垃圾收集一些someBigVar ? run()的闭包因为setInterval()callback而保持不变,显然cntvariables仍在使用,所以run()的整个范围不能被垃圾收集。 但是,没有实际的持续参考一些someBigVar 。 V8只有垃圾一次收集整个范围吗? 那么, run()的范围不能被垃圾回收,直到间隔停止? 或者是足够聪明的垃圾收集someBigVar因为它可以看到在实际引用someBigVar的区间callback没有代码? 仅供参考,这里有一个关于V8垃圾收集的有趣的概述文章 […]