Browse Source

Do not use defineGetter in src/node.js for better crankshaft perf

See: https://groups.google.com/d/topic/nodejs/xJqpp1_s6is/discussion
v0.7.4-release
Ryan Dahl 14 years ago
parent
commit
2a05fe784d
  1. 80
      src/node.js

80
src/node.js

@ -71,12 +71,9 @@
};
startup.globalConsole = function() {
global.__defineGetter__('console', function() {
return NativeModule.require('console');
});
global.console = NativeModule.require('console');
};
startup._lazyConstants = null;
startup.lazyConstants = function() {
@ -126,32 +123,29 @@
};
startup.processStdio = function() {
var stdout, stdin;
process.__defineGetter__('stdout', function() {
if (stdout) return stdout;
var binding = process.binding('stdio'),
net = NativeModule.require('net'),
fs = NativeModule.require('fs'),
tty = NativeModule.require('tty'),
fd = binding.stdoutFD;
if (binding.isatty(fd)) {
stdout = new tty.WriteStream(fd);
} else if (binding.isStdoutBlocking()) {
stdout = new fs.WriteStream(null, {fd: fd});
} else {
stdout = new net.Stream(fd);
// FIXME Should probably have an option in net.Stream to create a
// 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.
// Test: ./node test/fixtures/echo.js < /etc/passwd
stdout.readable = false;
}
var binding = process.binding('stdio'),
net = NativeModule.require('net'),
fs = NativeModule.require('fs'),
tty = NativeModule.require('tty');
// process.stdout
var fd = binding.stdoutFD;
if (binding.isatty(fd)) {
process.stdout = new tty.WriteStream(fd);
} else if (binding.isStdoutBlocking()) {
process.stdout = new fs.WriteStream(null, {fd: fd});
} else {
process.stdout = new net.Stream(fd);
// FIXME Should probably have an option in net.Stream to create a
// 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.
// Test: ./node test/fixtures/echo.js < /etc/passwd
process.stdout.readable = false;
}
return stdout;
});
// process.stderr
var events = NativeModule.require('events');
var stderr = process.stderr = new events.EventEmitter();
@ -160,26 +154,18 @@
stderr.write = process.binding('stdio').writeError;
stderr.end = stderr.destroy = stderr.destroySoon = function() { };
process.__defineGetter__('stdin', function() {
if (stdin) return stdin;
// process.stdin
var binding = process.binding('stdio'),
net = NativeModule.require('net'),
fs = NativeModule.require('fs'),
tty = NativeModule.require('tty'),
fd = binding.openStdin();
var fd = binding.openStdin();
if (binding.isatty(fd)) {
stdin = new tty.ReadStream(fd);
} else if (binding.isStdinBlocking()) {
stdin = new fs.ReadStream(null, {fd: fd});
} else {
stdin = new net.Stream(fd);
stdin.readable = true;
}
return stdin;
});
if (binding.isatty(fd)) {
process.stdin = new tty.ReadStream(fd);
} else if (binding.isStdinBlocking()) {
process.stdin = new fs.ReadStream(null, {fd: fd});
} else {
process.stdin = new net.Stream(fd);
process.stdin.readable = true;
}
process.openStdin = function() {
process.stdin.resume();

Loading…
Cancel
Save