我希望在我的 C/C++ 程序中集成一个脚本引擎。目前,我正在研究 Google V8。
如何在 V8 中有效地处理 64 位值?我的 C/C++ 程序广泛使用 64 位值来保存处理程序/指针。我不希望它们在堆上单独分配。似乎有一个 V8::External 值类型。我可以将它分配给 Javascript 变量并将其用作值类型吗?
function foo() {
var a = MyNativeFunctionReturningAnUnsigned64BitValue();
var b = a; // Hopefully, b is a stack allocated value capable of
// keeping a 64 bit pointer or some other uint64 structure.
MyNativeFunctionThatAcceptsAnUnsigned64BitValue(b);
}
如果在 V8 中不可能,那么 SpiderMonkey 怎么样?我知道 Duktape(Javascript 引擎)有一个非 Ecmascript 标准的 64 位值类型(堆栈分配)来托管指针,但我假设其他引擎也希望跟踪其对象内的外部指针。