aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralon@honor <none@none>2010-10-21 12:13:26 -0700
committeralon@honor <none@none>2010-10-21 12:13:26 -0700
commit3ce44a956a248c3c9aabf721ee9a52f92e92fa75 (patch)
tree85ee65bb37f2c278865f77053228f46808a1a849
parent057289cb695cf7483d5cf54be3d032f11f085fbe (diff)
optimize away unneeded FLATTENER[0]; enable gcc_unmangler test
-rw-r--r--src/jsifier.js6
-rw-r--r--tests/runner.py2
2 files changed, 6 insertions, 2 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index f82a497c..d4e9f403 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -768,7 +768,11 @@ function JSify(data) {
if (typeData.flatFactor) {
indexes.push(getFastValue(curr, '*', typeData.flatFactor));
} else {
- indexes.push(toNiceIdent(type) + '___FLATTENER[' + curr + ']'); // TODO: If curr is constant, optimize out the flattener struct
+ if (curr == 0) {
+ indexes.push(0); // The first index is always 0 anyhow TODO: Assert this in the other places
+ } else {
+ indexes.push(toNiceIdent(type) + '___FLATTENER[' + curr + ']'); // TODO: If curr is constant, optimize out the flattener struct
+ }
}
} else {
if (curr != 0) {
diff --git a/tests/runner.py b/tests/runner.py
index 793bdb26..79d5062e 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -908,7 +908,7 @@ if 'benchmark' not in sys.argv:
self.do_test(path_from_root(['tests', 'sauer']), '*\nTemp is 33\n9\n5\nhello, everyone\n*', main_file='command.cpp')
- def zzztest_gcc_unmangler(self):
+ def test_gcc_unmangler(self):
self.do_test(path_from_root(['third_party']), '*d_demangle(char const*, int, unsigned int*)*', main_file='gcc_demangler.c')
# Generate tests for all our compilers