summaryrefslogtreecommitdiff
path: root/chapter18/src/test/java
Commit message (Collapse)AuthorAgeFilesLines
* Final vars and forced constants do not lazy-phiCliff Click2025-01-151-2/+20
| | | | Better comments on why a field is final
* Promote outside of constructorsCliff Click2025-01-151-0/+20
| | | | | Var picks up a Real(tm) isFRef flag. Minor progress bug.
* Forward Ref type to BottomCliff Click2025-01-152-7/+57
| | | | | | So FRefs can strictly lift when defined. Parser can support forward refs in more cases, by upcasting now and proving the cast is correct later. Monotonic for some float ops.
* Fix a series of small bugsCliff Click2025-01-153-9/+52
| | | | Various kinds of missing checks, over-aggressive asserts, and a few odds and ends
* Series of minor bugsCliff Click2025-01-151-3/+37
|
* Finalize function semanticsCliff Click2025-01-153-57/+84
| | | | | | | Rename ScopeMin to MergeMem. Move Var to its own file. Allow out-of-scope id lookups in functions, as long as its a final constant. This allows e.g. factorial to find "fact" as an out-of-scope final constant function.
* Add Call/CallEnd in many CFG walksCliff Click2025-01-152-2/+34
| | | | | | Can store into an array. Check array is "of nullable" Add crazy closure test
* Handle recursive functionsCliff Click2025-01-152-86/+200
| | | | | | Define a "Return PC" type, which maps a simple bit vector to call sites. Returns take an RPC; function headers merge RPC from all callers. Work over the Eval2 control path to support recursion; probably 90% to closures now as well.
* Cleanup Eval2Cliff Click2025-01-152-64/+86
|
* Add function forward refsCliff Click2025-01-154-10/+21
| | | | | | Add FRefNode, making and defining a forward ref. Forward refs promote out of scopes instead of being an undefined error. Add location data to all errors, because introducing more "delayed errors"- forward references are not errors if they get eventually defined. Touches many Nodes. Fix FunNode idom/idepth.
* Compile pipeline deals with functionsCliff Click2025-01-154-18/+60
| | | | | | | | | Pretty-print functions. GCM deals with functions. Tighten linker API. CallEnd asserts harder proper graph. Eval2 makes (non recursive) function calls Peeps infer sharper function return sigs.
* Getting error code to report same w/out peepsCliff Click2025-01-156-13/+27
| | | | | | | | | Parse "arg--2" as "arg - -2" and not "arg-- 2". Use ParserException instead of RuntimeException. Add a Field w/out final test. Allow Float NaN to hash/compare Bug cast didn't check type when GVN Better handling of dead return/exit paths
* More getting errors reliableCliff Click2025-01-153-27/+30
| | | | | ...with and without peeps. Float moves out of the TypeNil set. Eval2 picks up the FLT compares.
* More precise error reportingCliff Click2025-01-158-39/+36
| | | | | | | Demand CFG cleanup, even if peeps are off; cleans up some tests & a lot of fuzzer bugs related to trying to find infinite loops in dead code. Logical subclass for better error reporting on &,|,^,>>,<<,>>> More precise error reporting on multi returns and trinaries Fuzzer uses new Eval2
* Parallel assign PhisCliff Click2025-01-152-67/+106
|
* New evaluator, more Compiler Driver cleanupCliff Click2025-01-1523-447/+700
| | | | | | | | | | More compiler driver cleanup: Stop only has Return inputs, never an expr. Drop extra lexical scope. Linker table moves to CodeGen. Replace evaluator with a simpler design; I was unable to get the current design to work with the other changes. Updates to old eval; proper idoms; forced type checks; extensions for Fun, Return, Call, CallEnd. Accessor find next control to execute. Accessor for deciding when its ok to optimize a Function/Return, Call/CallEnd, Stop, ScopeMin (merge) Add local scheduling pass. IRPrinter uses SB instead of StringBuilder Spelling SubF comment
* Cleanup compile driverCliff Click2025-01-1525-955/+939
| | | | | | | | | | Top level makes a "main" function and calls it. Opto() pass inlines main into top-level and removes the function call. If peeps are off, the function call remains; this breaks many tests. Add a FunNode function header; Return is its end. Return no long used at the top level; only a single return per-function, merging all returns (breaks many tests). Add a Call & CallEnd nodes. Fix many tests to pass again. Fix a bunch of minor bugs.
* Intercept first function definitionCliff Click2025-01-151-3/+15
|
* Clean up public API for nil/byte testingCliff Click2025-01-154-20/+16
|
* All parsing null to be TFP or TMPCliff Click2025-01-1513-46/+56
| | | | | | | | Insert a TypePtr/TypeNil around TypeMemPtr and TypeFunPtr in the lattice; allows the parsing of "null" to mean either a TMP or TFP null. Cleanup Type null checks and several prints. Drop Type.lub, Type.makeInit. Add a Parser NIL & ZERO. Clean up parser errors, track line numbers for future parser errors.
* Greatly improved JSViewerCliff Click2025-01-152-2/+2
| | | | | | | | | | Handle memory edges. Color-coded edges & nodes to match lattice. Add SB vs StringBuilder. JSViewer needs SB to keep my sanity. Catch successful peeps and `show` them. Drop unused LLVM format, so I don't need to support Yet Another Printer. SimpleWebSocket handles longer packets; more robust close. Bug fix st/new fold. Bug fix Phi pull-down op losing precision.
* First cut function ptr typeCliff Click2025-01-151-0/+36
|
* Initial pushCliff Click2025-01-1527-0/+6886