summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Constructors workingCliff Click2024-10-2132-458/+826
| | | | | | | | | Replace ArrayList with Ary, because no "setLength" in ArrayList and "size" is private so I cannot even override. Replace Utils.find with Ary.find. Split Scope into Scope and ScopeMin (bad name). Memory edges go in ScopeMin, and it is pointed at from Scope.mem(). This lets us lazily add memory edges without interleaving them through other non-memory aliases, which was breaking all sorts of parser invariants. ScopeMin aliases are added lazily. Scope & ScopeMin now use an array-of-Var structs instead of a struct-of-arrays.
* ConstructorsCliff Click2024-10-2112-138/+279
| | | | | | | | Missing arrays yet. Allow constructor syntax in 2 parts; the type description and at the New. must-init fields (final and not-null) have to be initialized in at least one of the two places; finals must be initialized exactly once. Any code is allowed in the constructors.
* final fields and multi defsCliff Click2024-10-2114-210/+326
| | | | | | `int x,y;` works `int !x = 3;` works Structs defs are statements, require a trailing `;`
* Add a first test to code toCliff Click2024-10-211-0/+39
|
* First pushCliff Click2024-10-2187-7/+12980
|
* Set authenticated remote in workflowThalia Archibald2024-10-141-0/+1
|
* fix lifetime issues with GVN gone wildCliff Click2024-10-143-8/+27
|
* missed commentCliff Click2024-10-131-1/+1
|
* more grammar cleanupCliff Click2024-10-136-167/+115
|
* update grammar filesCliff Click2024-10-134-21/+30
| | | | no idea if these are right, but seem closer to the mark
* Fix a null-check bugCliff Click2024-10-126-5/+59
|
* Turn off all printing during test runsCliff Click2024-10-12100-1169/+1022
| | | | was making 10000 lines of ignored output
* Grant push permission to workflowThalia Archibald2024-10-122-2/+4
|
* Automatically linearize chapter historyThalia Archibald2024-10-112-0/+127
|
* Fix testXmiliaH2024-10-111-1/+1
|
* Initialize int and flt field in NewNodeXmiliaH2024-10-112-3/+32
|
* Update DCE commentsCliff Click2024-10-061-5/+10
|
* add appendix section, dceTamas Hadhazy2024-10-062-139/+171
|
* add example 2Tamas Hadhazy2024-10-061-1/+15
|
* fix typos, better graph positionTamas Hadhazy2024-10-061-2/+3
|
* ch4 extend DCETamas Hadhazy2024-10-063-4/+265
|
* dce initHels152024-10-062-0/+143
|
* fix parsing nested structsRobert Obkircher2024-10-062-0/+16
|
* Clean up del codeCliff Click2024-10-063-13/+7
|
* Update evaluator toString for arraysXmiliaH2024-10-063-48/+148
|
* Fix brainfuck!Cliff Click2024-10-061-1/+1
|
* Force arrays to have a safety checkCliff Click2024-10-064-7/+35
| | | | Improves BrainFuck
* Fix broken dead-diamond peepCliff Click2024-10-061-3/+2
|
* Optimize Loads bypassing trivial unrelated array stores.Cliff Click2024-10-069-111/+161
| | | | | | Fix some graphviz display on array loads & stores Fix bug in GCM, extra code for infinite loops now handled elsewhere. Move BrainFuck out into its own test.
* fix typo ch 11Cliff Click2024-10-061-1/+1
|
* Add Brainfuck testXmiliaH2024-10-061-0/+84
|
* Sharpen null checksCliff Click2024-10-065-8/+127
| | | | | | Look for chances to sharpen checks of all kinds, especially null checks. Not terribly cheap check, probably needs a O(n^2) check Fix a bunch gold test result spelling.
* Switch array syntax againCliff Click2024-10-062-36/+49
| | | | | | `new u8[]?[4]` Always need a `?` since inner arrays can be null. Length given for the outermost array.
* minor spellingCliff Click2024-10-062-3/+3
|
* Fix parsing forward ref arraysCliff Click2024-10-065-43/+85
|
* Fix graph vizCliff Click2024-10-064-4/+13
|
* Unindent code blocks and mention # in introThalia Archibald2024-10-062-37/+38
|
* store-store opt checks offsetCliff Click2024-10-062-0/+15
|
* Update README.mdCliff Click2024-10-061-6/+9
|
* Lots of READMECliff Click2024-10-063-7/+173
|
* Update README.mdCliff Click2024-10-061-67/+12
|
* Sieve of EratosthenesCliff Click2024-10-061-0/+49
| | | | Really badly needs `i++` and a `for` loop
* Tests for negative array size and runtime OOBCliff Click2024-10-064-2/+35
|
* Fix 2 test casesCliff Click2024-10-062-0/+30
|
* Address math foldingCliff Click2024-10-063-7/+15
|
* arrays with loads and storesCliff Click2024-10-068-79/+150
| | | | | | | No range-checking yet. Length is "ary#" TypeStruct with special "[]" field is an array Fix some eager push-load-thru phi
* Redo address mathCliff Click2024-10-0619-227/+381
| | | | | | | | | | | | | Loads and Stores take a field offset instead of a field name; the name remains for debugging. NewNode takes a size and produces a pre-initialized chunk of memory with updated memory aliases for all fields. Field picks up an alias; TypeStruct loses one. TypeArray is a subclass of TypeStruct for now. TypeMem tracks a conservative value for its alias. TypeStruct computes field layouts. Now ProjNodes can have non-CFG input 0 - NewNode does, but so would a combined ModRem op from a divide, or a CAS producing both a success boolean and the old value. This impacts all the schedulers (IRPrinter, GCM, Scheduler) which previously believe slot 0 only held control nows, or could be modified to a control now. Aliases are now computed in the Parser instead of Start; Parser gets new Field math.
* Type picks up a log_size for doing struct layoutsCliff Click2024-10-066-59/+62
|
* sub same moves to computeCliff Click2024-10-061-4/+4
|
* Scope renames _scopes and _types as _idxs and _decls.Cliff Click2024-10-067-74/+66
| | | | Drop isCFG and use instanceof instead