|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|