[Scummvm-cvs-logs] SF.net SVN: scummvm:[51546] tools/branches/gsoc2010-decompiler/decompiler/ test/codegen.h
pidgeot at users.sourceforge.net
pidgeot at users.sourceforge.net
Sat Jul 31 20:10:44 CEST 2010
Revision: 51546
http://scummvm.svn.sourceforge.net/scummvm/?rev=51546&view=rev
Author: pidgeot
Date: 2010-07-31 18:10:44 +0000 (Sat, 31 Jul 2010)
Log Message:
-----------
Add test for block coalescing
Modified Paths:
--------------
tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h
Modified: tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h
===================================================================
--- tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h 2010-07-31 18:10:18 UTC (rev 51545)
+++ tools/branches/gsoc2010-decompiler/decompiler/test/codegen.h 2010-07-31 18:10:44 UTC (rev 51546)
@@ -199,4 +199,37 @@
delete engine;
}
+ // This test requires script-48.dmp from Sam & Max: Hit The Road.
+ // afd7dc5d377894b3b9d0504927adf1b1 *script-48.dmp
+ void testCoalescing() {
+ Scumm::v6::Engine *engine = new Scumm::v6::Engine();
+ Disassembler *d = engine->getDisassembler();
+ d->open("decompiler/test/script-48.dmp");
+ std::vector<Instruction> insts = d->disassemble();
+ delete d;
+ ControlFlow *c = new ControlFlow(insts, engine);
+ c->createGroups();
+ Graph g = c->analyze();
+ onullstream ns;
+ CodeGenerator *cg = engine->getCodeGenerator(ns);
+ cg->generate(g);
+
+ VertexIterator v = boost::vertices(g).first;
+ GroupPtr gr = GET(*v);
+ // Find first node
+ while (gr->_prev != NULL)
+ gr = gr->_prev;
+ // Find vertex to test
+ while (gr->_start->_address != 0x1A3)
+ gr = gr->_next;
+
+ TS_ASSERT(gr->_code.size() == 3);
+ TS_ASSERT(removeSpaces(gr->_code[0]._line).compare("}else{") == 0);
+ TS_ASSERT(removeSpaces(gr->_code[2]._line).substr(0, 2).compare("if") == 0);
+
+ delete cg;
+ delete c;
+ delete engine;
+ }
+
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list