Speed up startup time

Reverts 2a05fe784d.
This commit is contained in:
Ryan Dahl 2011-07-27 16:36:03 -07:00
parent 1ca5b6cd05
commit 497fe79f97

View File

@ -153,9 +153,12 @@
}; };
startup.globalConsole = function() { startup.globalConsole = function() {
global.console = NativeModule.require('console'); global.__defineGetter__('console', function() {
return NativeModule.require('console');
});
}; };
startup._lazyConstants = null; startup._lazyConstants = null;
startup.lazyConstants = function() { startup.lazyConstants = function() {
@ -205,32 +208,35 @@
}; };
startup.processStdio = function() { startup.processStdio = function() {
var stdout, stdin;
process.__defineGetter__('stdout', function() {
if (stdout) return stdout;
var binding = process.binding('stdio'), var binding = process.binding('stdio'),
// FIXME Remove conditional when net is supported again on windows. // FIXME Remove conditional when net is supported again on windows.
net = (process.platform !== "win32") net = (process.platform !== "win32")
? NativeModule.require('net_legacy') // fixme! ? NativeModule.require('net_legacy') // fixme!
: undefined, : undefined,
fs = NativeModule.require('fs'), fs = NativeModule.require('fs'),
tty = NativeModule.require('tty'); tty = NativeModule.require('tty'),
fd = binding.stdoutFD;
// process.stdout
var fd = binding.stdoutFD;
if (binding.isatty(fd)) { if (binding.isatty(fd)) {
process.stdout = new tty.WriteStream(fd); stdout = new tty.WriteStream(fd);
} else if (binding.isStdoutBlocking()) { } else if (binding.isStdoutBlocking()) {
process.stdout = new fs.WriteStream(null, {fd: fd}); stdout = new fs.WriteStream(null, {fd: fd});
} else { } else {
process.stdout = new net.Stream(fd); stdout = new net.Stream(fd);
// FIXME Should probably have an option in net.Stream to create a // FIXME Should probably have an option in net.Stream to create a
// stream from an existing fd which is writable only. But for now // stream from an existing fd which is writable only. But for now
// we'll just add this hack and set the `readable` member to false. // we'll just add this hack and set the `readable` member to false.
// Test: ./node test/fixtures/echo.js < /etc/passwd // Test: ./node test/fixtures/echo.js < /etc/passwd
process.stdout.readable = false; stdout.readable = false;
} }
// process.stderr return stdout;
});
var stderr = process.stderr = new EventEmitter(); var stderr = process.stderr = new EventEmitter();
stderr.writable = true; stderr.writable = true;
@ -238,19 +244,27 @@
stderr.write = process.binding('stdio').writeError; stderr.write = process.binding('stdio').writeError;
stderr.end = stderr.destroy = stderr.destroySoon = function() { }; stderr.end = stderr.destroy = stderr.destroySoon = function() { };
// process.stdin process.__defineGetter__('stdin', function() {
if (stdin) return stdin;
var fd = binding.openStdin(); var binding = process.binding('stdio'),
net = NativeModule.require('net'),
fs = NativeModule.require('fs'),
tty = NativeModule.require('tty'),
fd = binding.openStdin();
if (binding.isatty(fd)) { if (binding.isatty(fd)) {
process.stdin = new tty.ReadStream(fd); stdin = new tty.ReadStream(fd);
} else if (binding.isStdinBlocking()) { } else if (binding.isStdinBlocking()) {
process.stdin = new fs.ReadStream(null, {fd: fd}); stdin = new fs.ReadStream(null, {fd: fd});
} else { } else {
process.stdin = new net.Stream(fd); stdin = new net.Stream(fd);
process.stdin.readable = true; stdin.readable = true;
} }
return stdin;
});
process.openStdin = function() { process.openStdin = function() {
process.stdin.resume(); process.stdin.resume();
return process.stdin; return process.stdin;