7060 Commits (e9a2bf4556592536256180a10087f524a509e87f)
 

Author SHA1 Message Date
David Srbecký 8643290a4c Remove redundant 'goto' statements in form: 15 years ago
David Srbecký ecad71d802 Added custom Ast classes for Goto and Label statements that track the reference count of a label. 15 years ago
David Srbecký 45bedc8d1d Try to reconstruct if statements. The following logic is used: Depending on the value of the condition, the control flow will branch to one of two locations - let's call then 'true entry' and 'false entry'. Nodes reachable *only* from the 'true entry' are assumed to be the 'true' body of the if statement. Similarly, nodes reachable only from the 'false entry' are the 'false' body. Nodes reachable from both 'true entry' and 'false entry' and not part of the if statement and are placed after it. 15 years ago
David Srbecký 356c0b0d2f Completely rewritten the Node tree structure. It became increasingly difficult to maintain the node links (Predecessors, Successors) consistent during transformations. So rather then keeping them consistent I have implemented an algorithm that can calculate the Predecessors or Successors for any given node. There are a few caches on the way so that the calculation does not calculate everything again every time. Affected caches are automatically flushed when a tree structure changes. This is implemented using 'collection with events'. 15 years ago
David Srbecký 7bf471eec3 Some set operations that will be need for 'if' simplification 15 years ago
David Srbecký dda481d0fe Maintain node links at all levels, not just at the top one. 15 years ago
David Srbecký ff56995219 Reduce some 'goto's in loops to 'break' and 'continue'. 15 years ago
David Srbecký 7df6c364c6 Non-conditional branch does not have 'fall-through' node as successor. 15 years ago
David Srbecký b310187433 GUI debugging controls 15 years ago
David Srbecký 693bb16488 Generate the initial graph. 15 years ago
David Srbecký 0bff44d922 Create class for each node type 15 years ago
David Srbecký faff1bf5a9 Working on graph reduction algorithm. (Graph creation and presentation is still missing) 15 years ago
David Srbecký aba6b0950c Split method body to basic blocks 15 years ago
David Srbecký a43af72f9e Bugfix - keep return if it is labelled. 15 years ago
David Srbecký 22494bde37 Define local variables when value is first assigned to them 15 years ago
David Srbecký 82d3debe87 Do not output the very last return statement 15 years ago
David Srbecký 9eb2441490 Test on the compiler optimized version of quicksort 15 years ago
David Srbecký 29b95cd28c Remove some parenthesis 15 years ago
David Srbecký acdac3ecf5 Join consecutive expression together if possible 15 years ago
David Srbecký 37d40932d9 Convert ByteCodeCollection to new data representation: StackExpressionCollection; 15 years ago
David Srbecký ed413b7ec3 Move stack analysis to the ByteCode class 15 years ago
David Srbecký b7486c3221 Move StackBehaviour code to separate file 15 years ago
David Srbecký 53eed43bf5 Moved typing code to ByteCode.GetType() 15 years ago
David Srbecký 475eab39cf Move code from Util class to 15 years ago
David Srbecký 0fe95f6b0b Use custom data structure to store bytecode sequence 15 years ago
David Srbecký 9d82c6c55b Remove unnecessary labels 15 years ago
David Srbecký 970706161a Get type of elements obtained from array 15 years ago
David Srbecký a9ab824805 Get type for stack slots (partially implemented); Types are stored as Cecil TypeReferences 15 years ago
David Srbecký ffef73b007 Hack - convert int to bool on == operator 15 years ago
David Srbecký cfa3ecd70d Get type of new array 15 years ago
David Srbecký 56ced90f95 Added "using System;"; 15 years ago
David Srbecký 2642e6de19 Output local variables 15 years ago
David Srbecký 4468b4a3e1 Use stack analysis to figure out basic data flow - use actual inputs instead of the dummy ones 15 years ago
David Srbecký 238605c831 Initial stack analysis implementation: 15 years ago
David Srbecký 306b17db33 Started a type checking algorithm 15 years ago
David Srbecký 466e199cca Assign the result of each instruction to a temporary local variable 15 years ago
David Srbecký e650e1afe6 Ldelema; 15 years ago
David Srbecký 5032ab1df0 Implemented 'ret' instruction (function return) 15 years ago
David Srbecký c57f053f7a Add a label in front of every statement 15 years ago
David Srbecký 8faee275ed Implemented 'call' instruction 15 years ago
David Srbecký 8bf08b1e1e Implemented branching operations 15 years ago
David Srbecký fda3f6e0b5 Implemented comparison operators 15 years ago
David Srbecký cc2d74dc94 Implemented basic array operations 15 years ago
David Srbecký 6ee62de047 Finished arithmetic operations 15 years ago
David Srbecký af3a01cd44 Rename files 15 years ago
David Srbecký 7753b88bc5 Use NRefactory to create method bodies -> CodeDom not used anymore 15 years ago
David Srbecký e5500abf75 Output the skeleton code using NRefactory instead of CodeDom 15 years ago
David Srbecký 801a31f8d1 Generate code for some arithmetic operations (some operations are unsupported by CodeDom) 15 years ago
David Srbecký 35fcc443e6 Tweaks in the format of the output (place an empty line between commands) 15 years ago
David Srbecký a38d4f49c0 Group some op-codes: Arithmetic, Arrays, Branching, Comparison, Conversions, Indirect 15 years ago