DRY loading native module
This commit is contained in:
parent
e5cbe73a82
commit
9e8afe9133
18
src/node.js
18
src/node.js
@ -78,14 +78,19 @@ function createInternalModule (id, constructor) {
|
||||
// Like, natives.fs is the contents of lib/fs.js
|
||||
var natives = process.binding('natives');
|
||||
|
||||
function requireNative (id) {
|
||||
if (internalModuleCache[id]) return internalModuleCache[id].exports;
|
||||
if (!natives[id]) throw new Error('No such native module ' + id);
|
||||
function loadNative (id) {
|
||||
var m = new Module(id);
|
||||
internalModuleCache[id] = m;
|
||||
var e = m._compile(natives[id], id);
|
||||
if (e) throw e;
|
||||
return m.exports;
|
||||
m.loaded = true;
|
||||
return m;
|
||||
}
|
||||
|
||||
function requireNative (id) {
|
||||
if (internalModuleCache[id]) return internalModuleCache[id].exports;
|
||||
if (!natives[id]) throw new Error('No such native module ' + id);
|
||||
return loadNative(id).exports;
|
||||
}
|
||||
|
||||
|
||||
@ -546,10 +551,7 @@ function loadModule (request, parent, callback) {
|
||||
// Try to compile from native modules
|
||||
if (natives[id]) {
|
||||
debug('load native module ' + id);
|
||||
cachedModule = new Module(id);
|
||||
var e = cachedModule._compile(natives[id], id);
|
||||
if (e) throw e;
|
||||
internalModuleCache[id] = cachedModule;
|
||||
cachedModule = loadNative(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user