Skip to content

Commit

Permalink
Merge pull request #3945 from Microsoft/bulkReexportInSystem
Browse files Browse the repository at this point in the history
System: use batching when doing star exports
  • Loading branch information
vladima committed Jul 21, 2015
2 parents 45affe4 + 22961e5 commit d057f56
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 16 deletions.
25 changes: 18 additions & 7 deletions src/compiler/emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5779,17 +5779,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
write(`function ${exportStarFunction}(m) {`);
increaseIndent();
writeLine();
write(`var exports = {};`);
writeLine();
write(`for(var n in m) {`);
increaseIndent();
writeLine();
write(`if (n !== "default"`);
if (localNames) {
write(`&& !${localNames}.hasOwnProperty(n)`);
}
write(`) ${exportFunctionForFile}(n, m[n]);`);
write(`) exports[n] = m[n];`);
decreaseIndent();
writeLine();
write("}");
writeLine();
write(`${exportFunctionForFile}(exports);`)
decreaseIndent();
writeLine();
write("}");
Expand Down Expand Up @@ -6122,16 +6126,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
if ((<ExportDeclaration>importNode).exportClause) {
// export {a, b as c} from 'foo'
// emit as:
// exports('a', _foo["a"])
// exports('c', _foo["b"])
// var reexports = {}
// reexports['a'] = _foo["a"];
// reexports['c'] = _foo["b"];
// exports_(reexports);
let reexportsVariableName = makeUniqueName("reexports");
writeLine();
write(`var ${reexportsVariableName} = {};`)
writeLine();
for (let e of (<ExportDeclaration>importNode).exportClause.elements) {
writeLine();
write(`${exportFunctionForFile}("`);
write(`${reexportsVariableName}["`);
emitNodeWithoutSourceMap(e.name);
write(`", ${parameterName}["`);
write(`"] = ${parameterName}["`);
emitNodeWithoutSourceMap(e.propertyName || e.name);
write(`"]);`);
write(`"];`);
writeLine();
}
write(`${exportFunctionForFile}(${reexportsVariableName});`);
}
else {
writeLine();
Expand Down
28 changes: 20 additions & 8 deletions tests/baselines/reference/systemModule11.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,11 @@ System.register(['bar'], function(exports_1) {
'foo': true
};
function exportStar_1(m) {
var exports = {};
for(var n in m) {
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
}
exports_1(exports);
}
return {
setters:[
Expand All @@ -72,9 +74,11 @@ System.register(['bar'], function(exports_1) {
'y1': true
};
function exportStar_1(m) {
var exports = {};
for(var n in m) {
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
}
exports_1(exports);
}
return {
setters:[
Expand All @@ -96,15 +100,19 @@ System.register(['a', 'bar'], function(exports_1) {
'z': true
};
function exportStar_1(m) {
var exports = {};
for(var n in m) {
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
}
exports_1(exports);
}
return {
setters:[
function (_a_1) {
exports_1("x", _a_1["x"]);
exports_1("z", _a_1["y"]);
var reexports_1 = {};
reexports_1["x"] = _a_1["x"];
reexports_1["z"] = _a_1["y"];
exports_1(reexports_1);
},
function (_bar_1) {
exportStar_1(_bar_1);
Expand All @@ -123,8 +131,10 @@ System.register(['a'], function(exports_1) {
return {
setters:[
function (_a_1) {
exports_1("s", _a_1["s"]);
exports_1("s2", _a_1["s1"]);
var reexports_1 = {};
reexports_1["s"] = _a_1["s"];
reexports_1["s2"] = _a_1["s1"];
exports_1(reexports_1);
}],
execute: function() {
exports_1("z", z);
Expand All @@ -136,9 +146,11 @@ System.register(['a'], function(exports_1) {
System.register(['a'], function(exports_1) {
function foo() { }
function exportStar_1(m) {
var exports = {};
for(var n in m) {
if (n !== "default") exports_1(n, m[n]);
if (n !== "default") exports[n] = m[n];
}
exports_1(exports);
}
return {
setters:[
Expand Down
4 changes: 3 additions & 1 deletion tests/baselines/reference/systemModule9.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,11 @@ System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'],
'z': true
};
function exportStar_1(m) {
var exports = {};
for(var n in m) {
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports_1(n, m[n]);
if (n !== "default"&& !exportedNames_1.hasOwnProperty(n)) exports[n] = m[n];
}
exports_1(exports);
}
return {
setters:[
Expand Down

0 comments on commit d057f56

Please sign in to comment.