【发布时间】:2012-09-29 14:18:44
【问题描述】:
我一直在研究 v8 源代码,特别是“mksnapshot”工具如何在 v8 二进制文件中包含本机 javascript 文件(runtime.js、json.js...)的编译图像,并注意到它也包括源的(有点)缩小版本。例如,在检查 d8 可执行文件的内容时,我看到以下 sn-p:
var $JSON=global.JSON;
function Revive(a,b,c){
var d=a[b];
if((%_IsObject(d))){
if((%_IsArray(d))){
var g=d.length;
在 'src/json.js' 的开头我看到了:
var $JSON = global.JSON;
function Revive(holder, name, reviver) {
var val = holder[name];
if (IS_OBJECT(val)) {
if (IS_ARRAY(val)) {
var length = val.length;
显然两个 sn-ps 是等价的,但第二个在编译过程中被转换为第一个。
如果包含原始代码以使用“toString”进行检查,我会理解,但是当我在 d8 中输入“JSON.stringify”时,我看到的只是“function stringify() { [native code] }”,那么什么是这是什么意思?
【问题讨论】:
-
你应该在 Google IO 2012 上问过这个问题 :)
-
以下是我对这个主题的一些观察。你能知道如何保存这个nodejs.org/api/vm.html#vm_vm_createscript_code_filename 的输出并在以后运行它吗?当您编译 nodejs 时,它似乎仍然没有使用 javascript 文件,因为除了源代码之外,我无法在任何地方找到或找到它们。
标签: javascript v8 embedded-v8