aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-10-31 16:58:56 -0700
committerAlon Zakai <alonzakai@gmail.com>2011-10-31 16:58:56 -0700
commit8ef6b1bade9a7a8a29894feb4e6fe3ca8dad711c (patch)
tree4c0617c027ad628d5246f10d286b46b0cdbe10f6 /src
parenta349c5df70c2e2c6e5aaa82b22742161adfeec0b (diff)
explicitly identify emscripten-generated functions (as opposed to library ones, or handwritten ones appended to the same file), and run eliminator only on those
Diffstat (limited to 'src')
-rw-r--r--src/jsifier.js9
-rw-r--r--src/modules.js3
2 files changed, 11 insertions, 1 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index bd432001..6cbc0eb9 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -931,7 +931,12 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) {
}
generated = generated.concat(itemsDict.function).concat(data.unparsedFunctions);
- if (!mainPass) return generated.map(function(item) { return item.JS }).join('\n');
+ if (!mainPass) {
+ Functions.allIdents = Functions.allIdents.concat(itemsDict.function.map(function(func) {
+ return func.ident;
+ }));
+ return generated.map(function(item) { return item.JS }).join('\n');
+ }
// We are ready to print out the data, but must do so carefully - we are
// dealing with potentially *huge* strings. Convenient replacements and
@@ -967,6 +972,8 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) {
print(Functions.generateIndexing()); // done last, as it may rely on aliases set in postsets
print(postParts[1]);
print(shellParts[1]);
+ // Print out some useful metadata (for additional optimizations later, like the eliminator)
+ print('// EMSCRIPTEN_GENERATED_FUNCTIONS: ' + JSON.stringify(Functions.allIdents) + '\n');
return null;
}
diff --git a/src/modules.js b/src/modules.js
index 3b370878..f04731f8 100644
--- a/src/modules.js
+++ b/src/modules.js
@@ -228,6 +228,9 @@ var Functions = {
// All functions that will be implemented in this file
implementedFunctions: null,
+ // All the function idents seen so far
+ allIdents: [],
+
indexedFunctions: [0, 0], // Start at a non-0 (even, see below) value
// Mark a function as needing indexing, and returns the index