Skip to content

Commit

Permalink
Do not use defineGetter in src/node.js for better crankshaft perf
Browse files Browse the repository at this point in the history
  • Loading branch information
ry committed Mar 14, 2011
1 parent e3925b7 commit 2a05fe7
Showing 1 changed file with 33 additions and 47 deletions.
80 changes: 33 additions & 47 deletions src/node.js
Expand Up @@ -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() {
Expand Down Expand Up @@ -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();
Expand All @@ -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();
Expand Down

0 comments on commit 2a05fe7

Please sign in to comment.