Skip to content

Commit 9b8f232

Browse files
committed
Preserve one-shot optimizer cleanup
1 parent ad133cb commit 9b8f232

3 files changed

Lines changed: 9 additions & 2 deletions

File tree

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imoptimizer/ImOptimizer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class ImOptimizer {
3939
localPasses.add(new GlobalsInliner());
4040
localPasses.add(new DispatchCheckDeduplicator());
4141
localPasses.add(new SimpleRewrites());
42+
localPasses.add(new LocalMerger());
43+
localPasses.add(new DispatchCheckDeduplicator());
4244
}
4345

4446
private final TimeTaker timeTaker;

de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/LuaTranslationTests.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2293,7 +2293,12 @@ public void luaInlinerReusesRegistersAcrossSequentialInlineSites() {
22932293
false, Collections.emptyList(),
22942294
new RunArgs().with("-lua", "-inline", "-localOptimizations"),
22952295
lines.toArray(new String[0]));
2296-
String callerBody = getFunctionBody(compiled, "caller");
2296+
int callerStart = compiled.indexOf("function caller(");
2297+
assertTrue("caller function not found", callerStart >= 0);
2298+
int callerBodyStart = compiled.indexOf('\n', callerStart);
2299+
int callerEnd = compiled.indexOf("\nend", callerBodyStart);
2300+
assertTrue("caller function end not found", callerEnd > callerBodyStart);
2301+
String callerBody = compiled.substring(callerBodyStart + 1, callerEnd);
22972302
assertFalse("low-pressure sequential helper calls should still inline:\n" + callerBody,
22982303
callerBody.contains("helper("));
22992304
assertFalse("sequential inline temporaries should reuse registers:\n" + callerBody,

de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/OptimizerTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1632,7 +1632,7 @@ public <T> T measure(String name, java.util.function.Supplier<T> f) {
16321632

16331633
new ImOptimizer(timeTaker, translator).localOptimizations();
16341634

1635-
assertEquals(timeTaker.measurements, 8,
1635+
assertEquals(timeTaker.measurements, 10,
16361636
"the optimizer should run each configured local pass exactly once per invocation");
16371637
}
16381638

0 commit comments

Comments
 (0)