| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
is desired, then the CCI nodes must be created and an expression/statement
traverser used to translate it.
|
| |
|
|
|
|
| |
translating a method body.
|
|
|
|
| |
Also did some more substitutions to get valid Boogie identifiers
|
| |
|
|
|
|
| |
1. first cut at implementing structs
|
| |
|
|
|
|
|
|
| |
Added support for string literals.
Translating structs no longer crashes the translator, but on the other hand, they are just skipped and not translated...
Added a helper method to make sure that generated identifiers are Boogie-legal.
|
| |
|
|
|
|
| |
Sink because a procedure needs to be created for every method called in the translated program and not just the methods defined in the assembly being translated. This means the contract provider is needed only in the sink and not by any of the traversers.
|
|
|
|
|
|
|
| |
Translate "default value" expressions.
Fix translation of non-trivial conditional expressions and added two more optimizations for trivial ones (trivial ones are where either the true branch or the false branch are constants).
Fix translation of array length expressions.
Fix translation of logical negation expressions.
|
|
|
|
|
|
|
| |
Added a new heap representation, TwoDBoxHeap.
Made method names unique (previously, overloads all shared the same procedure name). As part of that, no longer require method references to be resolved in order to generate a name.
Added a regression test for TwoDBoxHeap.
Added tests for method overloads for unique name generation.
|
|
|
|
| |
Refactored some code to make it easier to work with different heap representations.
|
|
|
|
| |
easily have different ways of translating the heap.
|
| |
|
| |
|
|
|
|
|
| |
Fixed bug in translation of assume statement
Added code for special handling of poirot specific calls
|
| |
|
|
|
|
| |
tokens. Made it an extension method that takes any object implementing IObjectWithLocations. Much easier to use within the translator.
|
|
|
|
| |
only for assigning the local copy of a method's parameter to the out parameter of the Boogie procedure. But now that is simplified: instead of three versions of each parameter (in, local, and out), there are only two: in and out. For a parameter that is *not* by reference and is *not* an out parameter (i.e., just a plain pass-by-value parameter), the "out" version is a local variable. Otherwise it is an out parameter of the Boogie procedure.
|
|
|
|
| |
Added an override of ToString so MethodParameters show up nicer in the debugger.
|
|
|
|
| |
the traversers and which contains the information that they need to share with each other.
|
|
|
|
|
|
|
|
| |
Added helper methods to the statement traverser.
Handle ILocalDeclarationStatement, IAssertStatement, IAssumeStatement in StatementTraverser.
Handle simple logical-and and logical-or expressions in ExpressionTraverser.
Inject assertion that divisor is non-zero for IDivision in ExpressionTraverser.
Added static variable BCT.Host so all parts of translation can access the CCI Metadata host.
|
| |
|
|
bytecode translator.
|