Ich habe die v8-Quelle studiert, vor allem, wie das "mksnapshot" -Tool ein kompiliertes Bild der nativen Javascript-Dateien (runtime.js, json.js ...) in den v8-Binärdateien enthält und bemerkte, dass es auch beinhaltet eine (etwas) verkleinerte Version der Quelle. Wenn zum Beispiel des Inhalts des d8 ausführbaren Inspektion, ich sehe den folgenden Ausschnitt:Warum speichert v8 den Quellcode von nativem JavaScript in generierten Binärdateien?
var $JSON=global.JSON;
function Revive(a,b,c){
var d=a[b];
if((%_IsObject(d))){
if((%_IsArray(d))){
var g=d.length;
und zu Beginn der ‚src/json.js‘ Ich sehe:
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;
eindeutig beiden Schnipsel sind gleichwertig, aber die zweite wurde in die erste im Kompilierungsprozess umgewandelt.
Ich hätte verstanden, wenn der ursprüngliche Code für die Untersuchung mit 'toString' enthalten war, aber wenn ich 'JSON.stringify' in d8 eingeben, sehe ich nur 'Funktion stringify() {[native code]}', also was ist der Sinn dieses?
Sie sollten diese Frage während Google IO 2012 gestellt haben :) –
Hier sind einige meiner Beobachtungen zu diesem Thema. Kannst du die Ausgabe von http://nodejs.org/api/vm.html#vm_vm_createscript_code_filename speichern und zu einem späteren Zeitpunkt ausführen? Wenn Sie Nodejs kompilieren, scheint es die JavaScript-Dateien immer noch nicht zu verwenden, da ich sie nirgendwo außer in der Quelle finden oder finden kann. – Prospero