summaryrefslogtreecommitdiff
path: root/BCT/BytecodeTranslator
Commit message (Collapse)AuthorAge
* Added the heap representation I was supposed to have started with... A ↵Gravatar mikebarnett2011-01-21
| | | | general one that generates function calls for heap reads and writes so that the actual heap representation can be decided just by changing the prelude.
* Added a better options parsing by using functionality from MemberHelper.Gravatar mikebarnett2011-01-21
| | | | | | | 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.
* Fix order of getting the instance and the field from the expression heap so ↵Gravatar mikebarnett2011-01-21
| | | | that assignments are done correctly.
* Put back the prelude for the split fields heap that had been there before.Gravatar mikebarnett2011-01-21
|
* Use the interned key of field references, now that they have one.Gravatar mikebarnett2011-01-21
|
* Added a test for the split fields option.Gravatar mikebarnett2011-01-20
| | | | Refactored some code to make it easier to work with different heap representations.
* Moved the parts of the Prelude that depend on the heap representation into ↵Gravatar mikebarnett2011-01-20
| | | | | | the appropriate Heap objects. Also added the ability to easily have access to the ASTs that result from the specific heap representation's declarations.
* More structuring of the different heap representations. Now each heap ↵Gravatar mikebarnett2011-01-19
| | | | representation is implemented as a different object.
* Removed HeapVariable from everywhere now that it is encapsulated in the Heap ↵Gravatar mikebarnett2011-01-19
| | | | component.
* Removing resolution: there's no need to resolve field references in order to ↵Gravatar mikebarnett2011-01-18
| | | | translate them.
* The beginning of the encapsulation of the Heap representation so that we can ↵Gravatar mikebarnett2011-01-17
| | | | easily have different ways of translating the heap.
* Fix translation of "null" so that it produces a type-correct value.Gravatar mikebarnett2011-01-16
|
* 1. Converted assume to assert for the source infoGravatar qadeer2010-12-21
| | | | 2. Added tests for array translation
* Changed attribute names in the BPL for source context assumption statements.Gravatar mikebarnett2010-12-21
|
* Use an explicit PdbReader instead of the more general ↵Gravatar mikebarnett2010-12-21
| | | | ISourceLocationProvider so that we can get the closest source location even if the location we have doesn't correspond to an exact source location.
* added support for array translation.Gravatar qadeer2010-12-20
|
* Generate "assume {:filename "foo.cs"}{:line 3} true" statements for each ↵Gravatar mikebarnett2010-12-20
| | | | statement that has a source location.
* Translate boolean types into Bpl.Type.Bool.Gravatar mikebarnett2010-12-20
|
* Added Alloc implementation to the PreludeGravatar qadeer2010-12-15
| | | | | Fixed bug in translation of assume statement Added code for special handling of poirot specific calls
* Added a new option for splitting fieldsGravatar qadeer2010-12-15
| | | | Updated the regression input file
* Fixed declaration of procedures from static methods so that they don't have ↵Gravatar mikebarnett2010-12-14
| | | | | | the "this" parameter. If a method definition is marked with an attribute whose name is "AsyncAttribute", then all calls to that method have {: async } added as an attribute on the call.
* changed the prelude to use only the int type and eliminated bunch of axioms ↵Gravatar qadeer2010-12-14
| | | | not being used that were creating type checking problems at the Boogie level
* Translate calls to static methods.Gravatar mikebarnett2010-12-14
|
* Add freshly-allocated object as argument to ctors.Gravatar mikebarnett2010-12-14
|
* Translate object creation expressions.Gravatar mikebarnett2010-12-14
| | | | Translate static fields into global variables.
* Add a reference to ParserHelper.dll for the definition of IToken which was ↵Gravatar mikebarnett2010-12-09
| | | | moved into that assembly.
* Fixed field update and field dereference.Gravatar mikebarnett2010-12-09
|
* Adapt to new APIs in CCI.Gravatar mikebarnett2010-12-08
|
* General hygiene: introduced (fixed) a helper method that creates Boogie ↵Gravatar mikebarnett2010-07-05
| | | | tokens. Made it an extension method that takes any object implementing IObjectWithLocations. Much easier to use within the translator.
* Cleaned up the sink: removed the OutVars, which was state the sink needed ↵Gravatar mikebarnett2010-07-05
| | | | 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.
* Forgotten file: Sink.csGravatar mikebarnett2010-07-05
| | | | Added an override of ToString so MethodParameters show up nicer in the debugger.
* Introduction of the Sink: a global object that is threaded through all of ↵Gravatar mikebarnett2010-07-02
| | | | the traversers and which contains the information that they need to share with each other.
* Forgotten file.Gravatar mikebarnett2010-06-30
|
* Simplified the translator by merging the ToplevelTraverser, ClassTraverser, ↵Gravatar mikebarnett2010-06-28
| | | | and MethodTraverser into one traverser: MetadataTraverser. It will have to do a little more work to keep its state consistent (like saving any type-related state before traversing a nested type definition), but it seems worth it.
* Added the factory pattern so that all traversers are created through factory ↵Gravatar mikebarnett2010-06-16
| | | | | | | methods. This is the beginning of allowing plugins to perform methodology-specific translations. Added a CLR traverser that is meant to encode the CLR semantics. For now it just does one thing: add the assertion that a divisor should not be zero. Added an MS Test project so that we can use that for regression testing.
* Consistently use the new code pattern for translating locations to tokens ↵Gravatar mikebarnett2010-06-07
| | | | and putting the expression translation into a separate method.
* Added forgotten file.Gravatar mikebarnett2010-06-06
|
* Updated the project to .NET v4.0.Gravatar mikebarnett2010-06-06
| | | | | | | | 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.
* BCT: Added prelude. Started test1 as a test of verification.Gravatar rustanleino2010-05-12
|
* Moved BCT project references for Boogie to the Boogie\Binaries directory.Gravatar rustanleino2010-04-16
|
* Upgraded solution file and project file to VS2010.Gravatar mikebarnett2010-04-16
|
* Updated to use new CCI API.Gravatar mikebarnett2010-04-16
|
* Setting up test cases for BCTGravatar schaef2009-11-20
|
* Update use of CCI's API for decompiling the IL model to the Code Model.Gravatar mikebarnett2009-11-17
|
* Changed solution to include the CCI projects from Codeplex. (Still flaky in ↵Gravatar mikebarnett2009-11-10
| | | | that it assumes the CCI sources are in a particular relative location to the BCT sources.)
* Changed error message to have correct program name.Gravatar mikebarnett2009-11-10
| | | | | Deleted custom host, just use the default host. Write output file to current directory, use "foo.bpl" as the output file name for the input assembly "foo".
* Please ignore. Just testing my account.Gravatar schaef2009-08-19
|
* The beginnings of a CCI Metadata (http://ccimetadata.codeplex.com) based ↵Gravatar mikebarnett2009-08-09
bytecode translator.