Skip to content

Commit

Permalink
lib: refactor execution.js
Browse files Browse the repository at this point in the history
PR-URL: #56358
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Jacob Smith <[email protected]>
  • Loading branch information
marco-ippolito authored and nodejs-github-bot committed Dec 30, 2024
1 parent 0e04aea commit eca22a4
Showing 1 changed file with 22 additions and 41 deletions.
63 changes: 22 additions & 41 deletions lib/internal/process/execution.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,38 +84,19 @@ function evalScript(name, body, breakFirstLine, print, shouldLoadESM = false) {
evalModuleEntryPoint(body, print);
}

const runScript = () => {
// Create wrapper for cache entry
const script = `
globalThis.module = module;
globalThis.exports = exports;
globalThis.__dirname = __dirname;
globalThis.require = require;
return (main) => main();
`;
globalThis.__filename = name;
RegExpPrototypeExec(/^/, ''); // Necessary to reset RegExp statics before user code runs.
const result = module._compile(script, `${name}-wrapper`)(() => {
const compiledScript = compileScript(name, body, baseUrl);
return runScriptInThisContext(compiledScript, true, !!breakFirstLine);
});
if (print) {
const { log } = require('internal/console/global');

process.on('exit', () => {
log(result);
});
}

if (origModule !== undefined)
globalThis.module = origModule;
};
const evalFunction = () => runScriptInContext(name,
body,
breakFirstLine,
print,
module,
baseUrl,
undefined,
origModule);

if (shouldLoadESM) {
require('internal/modules/run_main').runEntryPointWithESMLoader(runScript);
return;
return require('internal/modules/run_main').runEntryPointWithESMLoader(evalFunction);
}
runScript();
evalFunction();
}

const exceptionHandlerState = {
Expand Down Expand Up @@ -301,19 +282,19 @@ function evalTypeScript(name, source, breakFirstLine, print, shouldLoadESM = fal
}
}

const evalFunction = () => runScriptInContext(name,
sourceToRun,
breakFirstLine,
print,
module,
baseUrl,
compiledScript,
origModule);

if (shouldLoadESM) {
return require('internal/modules/run_main').runEntryPointWithESMLoader(
() => runScriptInContext(name,
sourceToRun,
breakFirstLine,
print,
module,
baseUrl,
compiledScript,
origModule));
return require('internal/modules/run_main').runEntryPointWithESMLoader(evalFunction);
}

runScriptInContext(name, sourceToRun, breakFirstLine, print, module, baseUrl, compiledScript, origModule);
evalFunction();
}

/**
Expand Down Expand Up @@ -476,7 +457,7 @@ function runScriptInContext(name, body, breakFirstLine, print, module, baseUrl,
const result = module._compile(script, `${name}-wrapper`)(() => {
// If the script was already compiled, use it.
return runScriptInThisContext(
compiledScript,
compiledScript ?? compileScript(name, body, baseUrl),
true, !!breakFirstLine);
});
if (print) {
Expand Down

0 comments on commit eca22a4

Please sign in to comment.