Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

416 check-ins using file Dockerfile version f61cb250a2

2020-01-13
03:57
Add elimination of LOAD-STORE redundancy - don't put into the callframe a value that we just got from there. This check may or may not be useful; the test suite exercises it but only on 'set x '. It does come up in other langauges. Leaf check-in: 933c8a03f0 user: kbk tags: kbk-refactor-callframe
2020-01-09
21:56
Handle 'invokeExpanded'. Restore the ability to remove references to the callframe when calling compiled functions or builtins that don't use it. check-in: b54d2746cb user: kbk tags: kbk-refactor-callframe
2020-01-08
03:12
Handle correctly the case where there is 'moveFromCallFrame' the same variable from the same callframe on two converging execution paths. check-in: c3e7daa5b9 user: kbk tags: kbk-refactor-callframe
2020-01-07
03:18
Fix incorrect analysis of avail vars at a merge point. All tests but poly1305 pass. Still mislinkage of call frames in direct operation tests. check-in: 7ab1ef546d user: kbk tags: kbk-refactor-callframe
2020-01-05
20:51
Calculate effect of 'invoke' on variable analysis. Not yet 100% correct - breaks six additional test cases. check-in: 0fdceaac26 user: kbk tags: notworking, kbk-refactor-callframe
05:51
Liveness analysis of variables in the callframe, enabling store-store and dead-store optimizations. Build is working only because poly1305::compute is commented out. check-in: e392a97b1a user: kbk tags: kbk-refactor-callframe
2020-01-04
00:17
Refine callframe effect of direct operations check-in: 6205ad764a user: kbk tags: kbk-refactor-callframe
00:07
Clean up console dribble check-in: 5b6b3c8348 user: kbk tags: kbk-refactor-callframe
00:00
Refine callframe effect of directGet and directSet, fix bugs in alias handling check-in: f87e575ff7 user: kbk tags: kbk-refactor-callframe
2020-01-03
23:22
Refine the callframe effect of 'variable' check-in: b0449c3905 user: kbk tags: kbk-refactor-callframe
23:19
refine callframe effect of 'nsupvar' and 'upvar' check-in: 3c1db65142 user: kbk tags: kbk-refactor-callframe
22:51
Restore the logic that, after a catch, requires any globals that are aliased in the callframe to be reloaded lest they alias errorInfo or errorCode. Also propagate that requirement out to callers of the proc containing the catch. check-in: 0acf314fef user: kbk tags: kbk-refactor-callframe
20:47
Update a few missing ops in quadcodes.txt check-in: fedf0433fc user: kbk tags: kbk-refactor-callframe
19:48
Patch out poly1305::compute for now - segfault! - and break out the 'vartest' tests. check-in: 13b2b5767e user: kbk tags: notworking, kbk-refactor-callframe
2020-01-02
21:12
Make the poly1305 routines explicit in the tester check-in: 7466722d0e user: kbk tags: kbk-refactor-callframe
20:48
Detect that 'invoke' preserves some callframe variables. Add buffer flushing so that the identity of a test is reported before a crash. Remove some redundant test invocations. check-in: 65069fda8f user: kbk tags: notworking, kbk-refactor-callframe, current
18:50
Add consistency check that callframes are linked correctly before generating speculative phi operations. check-in: b541601fb1 user: kbk tags: kbk-refactor-callframe
17:46
remove some dead code in callframe.tcl check-in: a04a2b1d01 user: kbk tags: kbk-refactor-callframe
17:24
Need to write back to the stack after duplication. check-in: 4d3d8fac22 user: dkf tags: kbk-refactor-callframe
2020-01-01
23:51
Don't abort all the performance tests because one test throws an error. Make the 'arrayExists' operation consistent with 'extractArray' and 'extractScalar' throughout (there were bad optimizations). Revert a misguided change to 'dict update' that was actually an attempt to work around the 'extractScalar' inconsistency. check-in: 5b6ac87fe8 user: kbk tags: kbk-refactor-callframe
2019-12-31
17:32
Separate exists and doesn't-exist paths in 'translate' of read-modify-write operations. Fix overeager elimination of 'extractArray'. Move 'partialredundancy' off to its own specializer step, since 'tidy' passes may NOT introduce new variables. Only 'lsetest' is now failing. check-in: 09d85d696a user: kbk tags: notworking, kbk-refactor-callframe
00:10
Finish up elision of 'moveFromCallFrame' in the simpler cases. check-in: bbb81cb21e user: kbk tags: notworking, kbk-refactor-callframe
2019-12-30
03:14
Provide a hook on which to hang speculative phi generation. check-in: f635c5689f user: kbk tags: notworking, kbk-refactor-callframe
01:50
Peephole optimization of 'moveFromCallFrame' when the value in the callframe is known. (Will be much more effective once more instructions are analyzed: notably 'invoke' and 'phi'.) check-in: 188df1dde4 user: kbk tags: notworking, kbk-refactor-callframe
2019-12-27
23:01
Add the basic framework for forward analysis of available callframe variables check-in: 85ea960b98 user: kbk tags: notworking, kbk-refactor-callframe
2019-12-01
20:32
Remove remnants of unused 'startCatch' and 'callFrameNop' instructions, and the pass that removes them (since they're never emitted, they're never removed). check-in: c2d0f14a30 user: kbk tags: kbk-refactor-callframe
20:21
Remove one false start at callframe analysis, and add some stubs for another attack on the problem. check-in: 5741a8ab06 user: kbk tags: kbk-refactor-callframe
2019-11-26
09:58
Starting to support 8.7's arrays with defaults Leaf check-in: e7a8c3f643 user: dkf tags: dkf-array-default
2019-11-24
01:15
Modify varargs to not rewrite if the target procedure is not being compiled. This change restores poly1305 to compilability. check-in: e86f7b8518 user: kbk tags: kbk-refactor-callframe
2019-11-23
23:21
Merge trunk and return to mostly-working status. Two test cases commented away: magicreturn and poly1305. check-in: 824a7974cf user: kbk tags: kbk-refactor-callframe
23:02
merge trunk check-in: c3fc2d4137 user: kbk tags: notworking, kbk-refactor-callframe
22:35
Merge trunk: a couple of ops that interact with the callframe and were missed while refactoring Leaf check-in: 19e26fa988 user: kbk tags: notworking, tcl_8_7_branch
22:29
Merge in refactoring of two operations, directIsArray and directMakeArray, that interact with the callframe and were missed on the first go. Leaf check-in: 7a21900824 user: kbk tags: trunk
22:24
directMakeArray interacts with the callframe Closed-Leaf check-in: 1f1e370993 user: kbk tags: kbk-refactor-directops
21:54
directIsArray interacts with the callframe check-in: a83ba5d5c3 user: kbk tags: kbk-refactor-directops
2019-11-22
20:31
Rejigger printing of results so that a crashing test can be identified more readily. check-in: c7402fd29e user: kennykb tags: notworking, tcl_8_7_branch
19:44
Initial changes to support differences in the Tcl 8.7 ABI check-in: 668d4221ed user: kennykb tags: notworking, tcl_8_7_branch
2019-11-19
13:05
Remove unused code Leaf check-in: 66cd584bff user: dkf tags: stdlib-in-c
03:52
Merge refactoring so that all direct operations interact correctly with the callframe. check-in: b9e2a13b96 user: kbk tags: trunk
03:48
Merge dkf's fixes that make type coercion run in a reasonable amount of time check-in: bf9270cd5a user: kbk tags: kbk-refactor-directops
00:48
Fix a couple of typos ('target' s/b 'targetinfo') - code now compiles the test suite again. Closed-Leaf check-in: d9095e2b40 user: kbk tags: dkf-cheaper-autoconvert
2019-11-18
20:29
Stop confusion over what is being mapped to what. Merge loops that should be merged. check-in: a4634d05b6 user: dkf tags: dkf-cheaper-autoconvert
2019-11-16
14:39
Refactor stuff better (and more correctly) check-in: ebcd44d358 user: dkf tags: dkf-cheaper-autoconvert
14:28
Cheaper builder type conversion algorithm (untested) check-in: fe14e0068c user: dkf tags: dkf-cheaper-autoconvert
2019-11-15
23:09
Change return type of directUnset and directUnsetArray from CALLFRAME FAIL to CALLFRAME FAIL BOOLEAN, because void values aren't handled well in the code issuer. Simply discard the unused result. check-in: 731e9cafc6 user: kbk tags: kbk-refactor-directops
2019-11-13
03:55
directUnset interacts with the callframe and retuns CALLFRAME FAIL check-in: e06c6257c1 user: kbk tags: kbk-refactor-directops
2019-11-12
03:13
direct append operations interact with the callframe check-in: 9837744239 user: kbk tags: kbk-refactor-directops
02:48
directArraySet interacts with the callframe check-in: 1ff2a97784 user: kbk tags: kbk-refactor-directops
02:36
directArrayGet interacts with the callframe check-in: 9d33782061 user: kbk tags: kbk-refactor-directops
02:15
directArrayExists interacts with callframe check-in: cac986debc user: kbk tags: kbk-refactor-directops
02:05
directExists interacts with callframe check-in: 8d343ec32d user: kbk tags: kbk-refactor-directops
01:52
directGet interacts with the callframe. (Has 'out' as well as 'in' because of traces). check-in: 22c7d8b278 user: kbk tags: kbk-refactor-directops
01:03
Add 'generate-callframe-op' method to quadcode translator to refactor 'directXXX' ops. check-in: e877e7f449 user: kbk tags: kbk-refactor-directops
2019-11-11
21:01
Fix bug - previous refactoring of directSet accidentally clobbered a use of directSetArray check-in: ebf9ad75df user: kbk tags: kbk-refactor-directops
2019-11-08
21:57
Refactor directSet to accept and return the callframe check-in: 26b53d7b5a user: kennykb tags: kbk-refactor-directops
2019-08-03
15:01
Starting to work on being able to write (most of) the stdlib in C; lots of things are not yet working... check-in: 63f2d78960 user: dkf tags: stdlib-in-c
2019-07-21
19:56
Fix a bunch of Markdown formatting issues in callframe motion implementation plan check-in: ab89bbf879 user: kbk tags: kbk-refactor-callframe
2019-06-08
22:21
Remove cfRedundancy' header - added prematurely before method structure actually designed. check-in: 74a853f4cd user: kbk tags: kbk-refactor-callframe
2019-03-26
20:45
Oops - didn't commit images for callframe.md! check-in: a19796b4e5 user: kbk tags: kbk-refactor-callframe
2019-02-25
04:41
More about code motion check-in: 2f51c8d73b user: kbk tags: kbk-refactor-callframe
2019-02-18
04:25
Write up first couple of tasks check-in: 643eefa7e6 user: kbk tags: kbk-refactor-callframe
2019-02-16
21:52
Fix some Markdown typos check-in: 9a45fec3f8 user: kbk tags: kbk-refactor-callframe
21:49
Fix some Markdown typos check-in: e1f3a19eb7 user: kbk tags: kbk-refactor-callframe
21:48
Fix some Markdown typos check-in: bdd91a03bf user: kbk tags: kbk-refactor-callframe
21:43
Fix some Markdown typos check-in: a0fc4f2102 user: kbk tags: kbk-refactor-callframe
21:40
Start writing discussion of callframe management check-in: 50af9aa069 user: kbk tags: kbk-refactor-callframe
2019-02-02
18:14
Expansion... sort of Leaf check-in: 721be90d96 user: dkf tags: list-and-dict-types
2019-01-29
13:19
Fix misorderered scalar check/copy to result check-in: 36e8177510 user: kbk tags: notworking, kbk-refactor-callframe
02:00
Fix translation bugs that broke [dict] tests check-in: ab6da27502 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-23
02:12
Add conversion to IMPURE ZEROONE INT, needed in booltest. Keep code motion from messing with the callframe for now. Patch out the handful of remaining tests that abort. Next up: fix the dictest tests involving 'dict update', lsetest, and re-add support for direct ops. check-in: 27339e7e0c user: kbk tags: notworking, kbk-refactor-callframe
2019-01-22
02:52
Restore the 'timings' list - if 'transform' doesn't produce it, there's a crash. check-in: 3e49a05889 user: kbk tags: notworking, kbk-refactor-callframe
02:36
Run dead code elimination before copy propagation because copyprop explodes otherwise. check-in: 9e16d3b8d6 user: kbk tags: notworking, kbk-refactor-callframe
02:35
Bug fixes to make all the 'expandtest' cases work check-in: 4f7b3a4d01 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-21
22:33
Enough partial implementation for expandtest::test1-test3 check-in: 89030dcc42 user: kbk tags: notworking, kbk-refactor-callframe
19:45
Fix mislinking of phi operations on the error branch of 'invoke' check-in: 407e1ef055 user: kbk tags: notworking, kbk-refactor-callframe
18:14
Enough changes to get through first two 'expandtest' tests check-in: 5557b1e592 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-18
04:22
Add the final processing in 'varargs' - next, emit the error path. check-in: 305328fa6b user: kbk tags: notworking, kbk-refactor-callframe
2019-01-16
02:30
More argument preparation code in 'varargs' check-in: 76b943ad4a user: kbk tags: notworking, kbk-refactor-callframe
2019-01-14
03:46
Further development of varargs. Note that the invocation sequence is much, much simpler than it used to be, so 'invoke.tcl' is no more. check-in: 90e908dae3 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-13
15:43
Clean out dead 'exists.tcl' source check-in: f283d28ebd user: kbk tags: notworking, kbk-refactor-callframe
15:38
Merge the (not-working) vararg reform branch. It appears that both these tasks need to be attacked at the same time because the changes are tightly interwoven. check-in: 05c93c9cc5 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-09
01:52
Add support for compiled procs that alter the callframe, then fail. check-in: 30d6a54fdb user: kbk tags: notworking, kbk-refactor-callframe
2019-01-08
04:17
Fix more trivial errors in 'translate' and missing cases in code gen check-in: fba0ec7241 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-05
22:48
Generate only one moveFromCallFrame per bytecode instruction check-in: 9dbaca7922 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-02
16:22
A little bit less wrong. check-in: 75fd3b203e user: dkf tags: list-and-dict-types
02:20
Oops, one extra callframe ref in 'callframe-error-quads' check-in: cdc4d10e86 user: kbk tags: notworking, kbk-refactor-callframe
2019-01-01
23:06
Update quadcode generation and documentation so that 'direct' operations refer to the callframe (which is necessary in the event that they are emitted to deal with double-dereference). CODE ISSUER IS NOT YET UPDATED TO COPE WITH THE CHANGE. check-in: 104debc734 user: kbk tags: notworking, kbk-refactor-callframe
21:57
Move callframe moves to the actual points where callframe values are moved. They can then be optimized by avaiability and liveness analysis. check-in: dbd9571178 user: kbk tags: notworking, kbk-refactor-callframe
2018-12-29
21:00
Keep dictionary iterations out of the callframe - they can never be addressed by upvar check-in: ea7b788fb4 user: kbk tags: kbk-refactor-callframe
20:26
Open a branch for some experiments on refactoring callframe operations check-in: 7454a5228c user: kbk tags: kbk-refactor-callframe
2018-12-27
19:47
Add 'buiilder.tcl' inadvertently omitted from previous commit Closed-Leaf check-in: 2e3b3ea76f user: kbk tags: notworking, kbk-refactor-varargs
19:44
Very rough beginning of a refactored 'varargs' pass check-in: 7c9d400e5e user: kbk tags: notworking, kbk-refactor-varargs
04:12
Eliminate the 'isBoolean' instruction in favour of using the type checking machinery check-in: 0718166269 user: kbk tags: trunk
04:09
Eliminate the 'isBoolean' opcode in favour of 'instanceOf', to allow for type inferemce based on tryCvtToBoolean Closed-Leaf check-in: bd009801ca user: kbk tags: kbk-isBoolean
03:53
Open a branch for rework of 'isBoolean' so that it informs type inference check-in: 2a34883328 user: kbk tags: kbk-isBoolean
2018-12-18
15:12
OOPS: remove 'source' of unused file check-in: 3bf74c48dc user: kbk tags: trunk
02:32
Add a long-forgotten 'specializer.md' discussing what the specializer does. check-in: 7bd4d23ac9 user: kbk tags: trunk
2018-12-17
23:19
Integrate kbk-jumpthread: replace the node-by-node splitting with a single pass that identifies many threading opportunities and also reduces the number of splits. Eliminate the old nodesplit pass, and the renameTemps pass, which is no longer required. check-in: a934a75e1f user: kbk tags: trunk
23:13
result, returnCode, returnOptions must be split into FAIL and non-FAIL paths because the backend isn't prepared to deal with all combinations of FAIL + someOtherType. Closed-Leaf check-in: 94358b53ea user: kbk tags: kbk-jumpthread
22:08
Finish jump threading - actually do the block duplication and redirection of jumps. Add the logic for SSA deconstruction (required by jump threading) and make SSA construction work with the deconstructed result. check-in: a41b93130e user: kbk tags: notworking, kbk-jumpthread
2018-12-16
05:18
Add constant folding for unary +. It probably ought to be folded out altogether, since it serves only to trigger type checking. Add an outline of the actual process of jump threading once the threads have been determined. check-in: c388c8737b user: kbk tags: notworking, kbk-jumpthread
04:55
Add a 'cos2' test case to illustrate the cost of non-numeric ordering comparisons check-in: 86167d6917 user: kbk tags: notworking, kbk-jumpthread
04:43
Finish forward analysis in the jump threading pass. check-in: dc90afa15d user: kbk tags: notworking, kbk-jumpthread
2018-12-10
04:51
Remove vestiges of the old node splitter from 'inline.tcl'. Make console dribble in 'jumpthread.tcl' contingent on debug-jumpthread. check-in: fd2ea3e6f1 user: kbk tags: notworking, kbk-jumpthread
04:09
OOPS! Didn't add the new 'jumpthread.tcl' module! Remove the old 'nodesplit.tcl', and remove the 'renameTemps' pass since 'nodesplit' was the only thing that ever depended on it. check-in: 67b989853b user: kbk tags: notworking, kbk-jumpthread
01:34
Calculation of anticipable tests for jump threading check-in: f138663832 user: kbk tags: notworking, kbk-jumpthread
2018-12-09
21:52
Start with the most basic framework for invoking the jump threading pass. check-in: 6bdc33061b user: kbk tags: kbk-jumpthread
20:55
Open a branch for experiments with more accurate and faster jump threading. check-in: 67902a50a2 user: kbk tags: kbk-jumpthread
2018-12-08
21:46
Add a micropass to optimize away conditional jumps that are identical to a conditional jump in a dominator. (Partial redundancy elimination appears to create these.) check-in: 344567b919 user: kbk tags: trunk
21:45
Add a micropass to optimize away conditional jumps that are identical to a conditional jump in a dominator. (Partial redundancy elimination appears to create these.) Closed-Leaf check-in: 1c9b4510d1 user: kbk tags: kbk-deadcond
17:56
merge trunk check-in: 01fb4f7ffb user: dkf tags: list-and-dict-types
2018-12-07
02:43
Fixes that make poly1305 compilable. check-in: 602b3659c7 user: kbk tags: trunk
02:23
Increase recursion limit to allow compilation of longer procedures. Correct a bug in expandInlines that left dangling references to procedure args. Correct a bug in analyzeTypes where the INT/ENTIER break was set to int32 rather than int64. Add shift operations to constfold. Improve auditing. Merge trunk. Closed-Leaf check-in: 023d0828f0 user: kbk tags: poly1305
2018-12-06
21:17
merge trunk check-in: c2a6505ae9 user: dkf tags: poly1305
21:14
Huge mess of half-converted code, with something horrible inside. Definitely buggy... check-in: 462eec7d43 user: dkf tags: list-and-dict-types
03:15
Merge kbk-pre - add the optimizations of loop inversion (enables loop-invariant code motion) and partial redundancy elimination, and fix multiple bugs exposed by these optimizations. check-in: 0e06123e97 user: kbk tags: trunk
03:13
Array initialization cannot be hoisted because every array needs its own initArray. Code insertion must ignore operations that it has already inserted, or infinite loops can result. All tests pass! Closed-Leaf check-in: cf87d02677 user: kbk tags: kbk-pre
01:42
Remove speculative phis if they turned out not to be useful check-in: bd6294fade user: kbk tags: notworking, kbk-pre
2018-12-05
05:37
Rewrite pre_insert and pre_phi_translate to NOT use a persistent cache. The missing piece in VanD04 is that pre_insert must call pre_phi_translate for all the anticipated expressions first, and then use the dictionary that results for the translated values. There are still further bugs, but we're over this hump at least. check-in: 0bbe5a5dd3 user: kbk tags: notworking, kbk-pre
2018-12-03
05:08
Stop constant folding from leaving dead code behind, Add a test for simple nested iterations, using [lmap]. Temporarily patch 'foreach' operations from being hoistable - I don't think this will be necessary, but it's tickling other bugs. Make translation of values across a phi work if one of the inputs to the phi is a literal. Put 'bbidom' and 'bblevel' directly after dead code elimination, because virtually everything depends on having dominators, which deadcode destroys. check-in: 4f50ed77b2 user: kbk tags: notworking, kbk-pre
01:06
Fix crashing bug in creating variable name for a phi operation. Fix bug where partial redundancy elimination got stale dominators, causing much weirdness. Add additional tracing to available expression calculation. check-in: ce1088b7a7 user: kbk tags: notworking, kbk-pre
2018-12-02
23:27
Turn on partial redundancy elimination. Correct bug in availability analysis that led to infinite loop in 'msrange2' check-in: 68da56cfee user: kbk tags: notworking, kbk-pre
2018-12-01
17:37
Restructure pass management in 'tidy'. Add constant folding of a few more operations. check-in: e2750cb57e user: kbk tags: kbk-pre
2018-11-29
13:57
merge trunk check-in: b0b8f8280b user: dkf tags: list-and-dict-types
11:34
This is getting somewhere; next up, using actual types we can now assume in code issue check-in: 0ec315adac user: dkf tags: list-and-dict-types
00:56
merge trunk check-in: 815387c202 user: kbk tags: notworking, kbk-pre
2018-11-28
08:52
Default type conversions. check-in: 7a7e53d026 user: dkf tags: list-and-dict-types
08:31
Account for emptiness in LIST and DICT types check-in: 67f834abb0 user: dkf tags: list-and-dict-types
2018-11-27
13:48
Also assert that DICT has a 'free' conversion to LIST check-in: 7de430014e user: dkf tags: list-and-dict-types
08:22
Constants and types check-in: 58434a3dd0 user: dkf tags: list-and-dict-types
03:07
Fix bug in finding variable names among the args to 'regexp' check-in: 6311170b65 user: kbk tags: trunk
2018-11-26
08:35
merge trunk check-in: 45f62a2c25 user: dkf tags: list-and-dict-types
04:57
Added a couple of tests to trigger loop-invariant code motion. Corrected du-chain mismanagement in callframe.tcl (deleting moveToCallFrame), copyprop.tcl (deleting any quads), uselessphis (deleting anything), and narrow.tcl (cleanupNarrow, deleting anything). NOT WORKING: During node splitting, at least 'flightawarebench', 'msrange', 'bug7c59', and 'cse-caller' are still coming out with mismanaged chains. Improved auditing in the 'tidy' pass of the transformer, and made it less aggressive about rechecking everything. NOT WORKING: in the 'wordcounter2' test case, it's missing at least one invocation of 'initArrayIfNotExists' because we're falling into the code gen in 'compile.tcl' for initArrayIfNotExists(ARRAY). Advanced partial redundancy elimination to 'code complete' status. The stuff surrounding it is in bad enough shape at the moment that it is far from tested, and known not to be working for everything, but is patched out at the moment. check-in: 02ab4301aa user: kbk tags: notworking, kbk-pre
2018-11-23
18:42
Back out from quite a long false path - switch over from Simpson's modified SSAPRE to VanDrunen's GVNPRE. Implemented the two phases of BUILDSETS - results look correct for a couple of simple tests. check-in: e69362f376 user: kbk tags: kbk-pre
2018-11-13
02:57
Code complete for PRE - except that I don't know how to introduce a phi if PRE has made an expression available on two afferent flow graph edges rather than in a dominator. check-in: fa9f7e0eb3 user: kbk tags: notworking, kbk-pre
2018-11-12
16:38
Tidy up commentary and calculation of INSERT and DELETE. Build the place to start code rewriting, and add some methods to start on renaming variables wholesale. check-in: e901ec10df user: kbk tags: kbk-pre
01:38
Change signatures in preparation for code rewriting: include enough information in signatures so that INSERT can reconstruct an instruction check-in: c098311242 user: kbk tags: kbk-pre
2018-11-11
22:34
Add bitwise Boolean operations to constant folding. Modify partial redundancy elimination to use bit vectors for dataflow calculations and debug the dataflow equations. check-in: 71a4e793a1 user: kbk tags: kbk-pre
2018-11-10
22:17
Use the lexical-name algorithm for 'altered' for now. May change to value-driven later. check-in: 592020ed7a user: kbk tags: notworking, kbk-pre
19:10
Better copy prop exposes more opportunities for constant folding. check-in: edb0c23738 user: kbk tags: kbk-pre
18:41
Fix bug where reverse copy propagation crashed (triggered by fixing bug where reverse copy propagation never happened). Add code in specializer to detect and recover from errors thrown in procedure inlining. check-in: 3f9877077d user: kbk tags: kbk-pre
2018-11-09
03:48
Temporarily revert a change made to copyprop until the crash that it causes can be investigated. Add a loop inversion pass at the front of processing, so that every natural loop body is executed at least once and might have loop-invariant computations. Add more coding to partial redundancy elimination check-in: f141d962a5 user: kbk tags: kbk-pre
2018-11-04
23:49
merge trunk check-in: 7b85bdfca9 user: dkf tags: poly1305
23:27
Add calculation of ANTIN, ANTOUT, and EARLIEST. check-in: ea6904fb1f user: kbk tags: kbk-pre
21:02
OOPS: Didn't add pre.tcl on last commit! Continue partial implementation of Value-Dependent Code Motion from the Simpson thesis. check-in: 3a32295d4d user: kbk tags: kbk-pre
01:38
Start development of partial redundancy elimination. Complete though base-case of the dataflow solution. check-in: 534d2b9f68 user: kbk tags: kbk-pre
2018-11-01
22:04
Allow IMPURE values to builtin mathfuncs check-in: dfc7885448 user: kbk tags: trunk
2018-10-31
11:32
Also ask for critical math function to be compiled check-in: fb47c5a2cd user: dkf tags: poly1305
11:22
Suggested test case from Neil Madden check-in: 4801fbf7c9 user: dkf tags: poly1305
11:05
use [my Warn] correctly check-in: b99007d3a3 user: dkf tags: trunk
2018-10-23
01:34
Add return from invokeExpanded. Add a test case for invokeExpanded. Correct a few comments in the compilation of invokeExpanded. Leaf check-in: 41fe6d416f user: kbk tags: kbk-nre
2018-10-21
22:49
Squelch unnecessary test failures. check-in: 35ee4b3111 user: dkf tags: kbk-nre
22:41
Implement NRE.invokeExpanded check-in: 7e61b1c24c user: dkf tags: kbk-nre
17:48
Test case for NRE.invokeExpanded check-in: 7c7508effb user: dkf tags: kbk-nre
16:30
First step of the NRE invokeExpanded machinery. check-in: 115a9a6616 user: dkf tags: kbk-nre
16:12
merge trunk check-in: 3c382b2d30 user: dkf tags: kbk-nre
16:08
First cut at the code generators for list/dict type checks check-in: 593d4987de user: dkf tags: list-and-dict-types
2018-10-19
12:58
Starting to create LIST and DICT types check-in: dc90f65b5e user: dkf tags: list-and-dict-types
2018-10-18
10:59
Add support for LLVM 7; two intrinsics changed signature to become simpler check-in: 961facd520 user: dkf tags: trunk
2018-10-17
12:29
Fix Sean's problem with [lrange]. check-in: e33c1317fd user: dkf tags: trunk
2018-10-15
21:28
Fix crash if a parameter to a procedure is unused within the procedure. check-in: ba43f318d7 user: kbk tags: trunk
17:08
Enable random numbers. check-in: 6841dceaad user: dkf tags: trunk
16:09
Added explicit recursive fib test check-in: 347443afbe user: dkf tags: trunk
12:58
Flipped the sense of some tests check-in: 9912776e7c user: dkf tags: trunk
11:13
Expand the basic eq/ge/gt/le/lt/ne ops to allow doubles too. check-in: 9bbeeddfb9 user: dkf tags: trunk
2018-07-08
09:12
Slightly better script for demos check-in: b12c0dc620 user: dkf tags: trunk
2018-05-02
05:28
Add support for invoking non-compiled Tcl commands using NRE. Still have to do invokeExpanded. check-in: 9f6d191beb user: kbk tags: kbk-nre
2018-05-01
02:13
Make sure that local vars are located on the coro frame and not on the stack. Fix a spurious error when an 'upvar' follows a 'moveToCallFrame' for a nonexistent local var. check-in: 2945c2321c user: kbk tags: kbk-nre
2018-04-30
19:01
Allow 'inlinehint' as an overriding inline control attribute, just like 'noinline'. check-in: ebcc398686 user: dkf tags: kbk-nre
2018-04-29
17:37
merge trunk check-in: 23f46849a7 user: dkf tags: kbk-nre
17:21
Fix native code generation when building DLLs check-in: 412811a9f7 user: dkf tags: trunk
2018-04-28
08:36
Added mrtest as a separately buildable package. check-in: a5f8fcd325 user: dkf tags: trunk
08:25
Added mrtest as a separately buildable package. check-in: 05a6521445 user: dkf tags: kbk-nre
2018-04-27
20:32
Move more 'alloca' instructions to the entry block, before they can mess up coro.begin. Allow NRE procs to return CALLFRAME COROHANDLE, needed for bookkeeping if they both use NRE and reference the callframe. Put in a test case for the CALLFRAME COROHANDLE condition - that case still crashes check-in: 8c6a038bf1 user: kbk tags: notworking, kbk-nre
2018-04-25
00:59
Improve commentary check-in: 7a5af13a50 user: kbk tags: kbk-nre
00:47
Streamline returnFromInvoke a tiny bit. check-in: 020581c952 user: kbk tags: kbk-nre
2018-04-24
03:39
Use llvmtcl 3.9 (release) features to provide the target platform information before starting to generate code in a module, and to do 'sizeof' and 'alignof' correctly. mrtest::* now compile correctly. check-in: c2b79891aa user: kbk tags: kbk-nre
2018-04-23
03:10
Force alignment of coroutine promise to 2*sizeof(pointer), in hopes of getting consistent alignment between coro.begin and later references to the coro frame. (Didn't help, alas, but it doesn't hurt to specify the alignment that's required in any case. check-in: bc3db1940d user: kbk tags: notworking, kbk-nre
2018-04-20
02:26
Add NRE test that throws error check-in: fcf84a8631 user: kbk tags: notworking, kbk-nre
2018-04-18
23:03
Alignment constraints on coroutine intrinsics must be actual integer constants, not just constant expressions of integer type. check-in: d611cc5908 user: kbk tags: notworking, kbk-nre
2018-04-17
21:53
Added debugging types for NRE callbacks. check-in: 11236a5639 user: dkf tags: notworking, kbk-nre
00:13
Merge trunk Leaf check-in: 25e63838cd user: kbk tags: inline
00:11
Merge trunk: expunge last uses of 'uniqueUndef' in constructing phi's check-in: 1855f5dc7a user: kbk tags: notworking, kbk-nre
00:09
Finish expunging the uses of 'uniqueUndef' in constructing phis. check-in: f71cdfbdae user: kbk tags: trunk
00:06
Finish expunging the uses of 'uniqueUndef' in constructing phis. Closed-Leaf check-in: c50485d110 user: kbk tags: kbk-phi-reform
2018-04-16
23:46
Dump bitcode to files after module verification, to try to debug optimizer crashes. Commit missing changes to the debug helper for better phi handling. check-in: 504ceb334b user: kbk tags: notworking, kbk-nre
04:17
More purges of uniqueUndef check-in: c9c75024dc user: kbk tags: kbk-phi-reform
01:09
Merge trunk to get better handling of 'phi' operations. Fix issues that prevented compilability with these changes. check-in: bc9590bbdb user: kbk tags: notworking, kbk-nre
2018-04-15
21:52
Merge kbk-phi-reform. The code issuer no longer creates dummy 'undef' slots for variables only to replace them. Instead, 'phi' operations are created without data sources and have their data sources added after processing the quadcode. check-in: 3578806182 user: kbk tags: trunk
21:49
Reform the processing of 'phi' operations in 'codegen/compile.tcl', observing that variable definitions dominate all uses of the variables except for those in 'phi' operations, so creating dummy phi's and backpatching the data sources is a simpler approach than creating explict 'undef' values only to overwrite them. check-in: f4b8bc60e5 user: kbk tags: kbk-phi-reform
19:12
Remove one llvm.lifetime call that is incompatible with LLVM5 check-in: d3b289185c user: kbk tags: kbk-phi-reform
19:03
Create new branch named "kbk-phi-reform" check-in: f1141ea3b4 user: kbk tags: kbk-phi-reform
03:07
Finish coding the thunk builder for NRE procs. Generated code for NRE now aborts in the optimizer. check-in: ab703b4b95 user: kbk tags: notworking, kbk-nre
2018-04-14
22:10
Finish up return from an invoked function. Still need to do invoked commands and invokeExpanded in the NRE case. check-in: 2b2ba21e34 user: kbk tags: notworking, kbk-nre
2018-04-13
01:58
Merge trunk, and do some further tidying of objv management check-in: 1fac62e1ab user: kbk tags: notworking, kbk-nre
2018-04-11
03:57
Move alloca to the entry blocks check-in: 7e92153b7f user: kbk tags: trunk
03:40
Eliminate stacksave/stackrestore and dynamic alloca from 'list' check-in: 11be702fa8 user: kbk tags: trunk
03:16
Rework foreachStart so that it doesn't require stacksave/stackrestore or dynamic alloca check-in: 5f0c7721ff user: kbk tags: trunk
2018-04-10
03:44
Move more alloc's into entry blocks. check-in: aa81f2ac20 user: kbk tags: trunk
03:31
Move allocas in standard library up to the entry blocks of the routines, where the inliner can find them check-in: 63a1bf25ff user: kbk tags: trunk
03:05
Reform 'buildBitArray' to use preallocated space in the LLVM callframe check-in: 7f04a0d947 user: kbk tags: trunk
02:46
Reform buildVector and clearVector to use preallocated space in the LLVM callframe check-in: a7ae4fde24 user: kbk tags: trunk
2018-04-09
02:46
Generate code for return from NRE functions and for suspend. Simplify 'clearVector' so that it can be called without the parameter specification. Next up will be to modify NRE invoke to return a tuple of {coro handle, clear flag, vector} so that NRE return can find the vector to clear it. check-in: 87e8f9147d user: kbk tags: notworking, kbk-nre
2018-04-08
21:28
Fix an error in wiring up the test for whether non-compiled commands need NRE - needed to assess 'lsort'. check-in: 978b9d80c4 user: kbk tags: notworking, kbk-nre
2018-04-06
03:29
Begin refactoring the invoke issuer in preparation for NRE.invoke. Need to fix: needsNRE and nreRequired in specializer, these need full args, not just types, in the case of builtins. Need to examine invokeExpanded because it's still used for Tcl builtins. check-in: df651f8f32 user: kbk tags: notworking, kbk-nre
2018-04-03
02:57
Break up LLVM coroutine invocation into separate 'invoke', 'suspend', 'returnFromInvoke' to assist code gen check-in: 9331dcf8d2 user: kbk tags: notworking, kbk-nre
2018-04-02
03:40
Start coding the implementation of NRE procs. check-in: e1f5a1f2d6 user: kbk tags: notworking, kbk-nre
2018-03-30
20:28
Advance version of llvmtcl required (omitted from previous commit); add accessor for NRE requirement in specializer check-in: bda33aa9ea user: kbk tags: notworking, kbk-nre
19:29
Add a function pass manager so that we can get coroutine support. check-in: 3147c5dac5 user: kbk tags: notworking, kbk-nre
2018-03-28
04:21
Write the function tcl.coro.resume - CRASHES ON MODULE INITIALIZATION check-in: 41b58defb4 user: kbk tags: notworking, kbk-nre
01:09
Added missing 'nre.tcl' check-in: af5efe3e99 user: kbk tags: kbk-nre
2018-03-27
01:44
merge trunk check-in: 6b733cc796 user: kbk tags: kbk-nre
01:40
merge trunk check-in: c0e88e91be user: kbk tags: inline
01:36
Merge changes: complete type checking of Boolean args to 'jumpTrue', 'jumpFalse', 'not', 'land', and 'lor' check-in: 0b62f38ede user: kbk tags: trunk
01:32
Fix a problem where adding and dropping references to/from FAIL IMPURE values would dereference a null pointer in the FAIL case. Closed-Leaf check-in: 0bd0c41f0a user: kbk tags: kbk-domain-check
2018-03-26
03:21
Comment out one crashing test case check-in: cbc4e47dbe user: kbk tags: kbk-domain-check, notworking
02:36
Add test cases for && and ||. Note that the LAND and LOR instructions are never generated, since they are intrinsically buggy. check-in: 67f26787c0 user: kbk tags: kbk-domain-check, notworking
02:10
Avoid type promotion on jumpTrue and jumpFalse. check-in: 5913b29fcd user: kbk tags: kbk-domain-check, notworking
00:42
Correct the type name for boolean strings. Add a better 'isNumericOrBoolean' check check-in: c5f9a2da90 user: kbk tags: kbk-domain-check, notworking
2018-03-22
05:43
Start debugging the support for type checking of Boolean operands check-in: c415818ee6 user: kbk tags: kbk-domain-check, notworking
2018-03-20
04:54
Partial implementation of code gen for type checking on Boolean values check-in: 5032b57581 user: kbk tags: kbk-domain-check, notworking
01:18
Update to current trunk check-in: b287bafe45 user: kbk tags: kbk-domain-check, notworking
2018-03-19
02:05
Compute NRE requirement for compiled procedures check-in: 4602a634be user: kbk tags: kbk-nre
2018-03-18
23:58
Add NRE indication to the command table. At this point no compilable Core commands require NRE. This is expected to change in the future. check-in: ab0a234378 user: kbk tags: kbk-nre
22:56
Create new branch named "kbk-nre" check-in: 7e886a7ca9 user: kbk tags: kbk-nre
22:30
merge trunk check-in: 1cbcf74c81 user: kbk tags: inline
22:29
merge trunk check-in: 0325c2ada8 user: kbk tags: inline
2018-03-15
22:09
Correct broken Markdown formatting in NRE notes check-in: 86584bbbc5 user: kbk tags: trunk
22:08
Correct broken Markdown formatting in NRE notes check-in: 92a74282a4 user: kbk tags: trunk
22:05
Correct broken Markdown formatting in NRE notes check-in: a7fc57b32b user: kbk tags: trunk
21:57
Correct broken Markdown formatting in NRE notes check-in: b2de40ed6f user: kbk tags: trunk
21:56
Add preliminary notes on implementation of NRE check-in: b985f7690a user: kbk tags: trunk
2018-03-11
22:14
Merge: Refactor liveness calculations to a simpler formulation due to Bradner (citation in source code), make it available separate from 'free' insertion, and split out the Conventional-SSA transformation check-in: bbecfe5c48 user: kbk tags: trunk
22:10
Separate out Conventional SSA transformation and add to ssa.tcl. Refactor live range computation so that it can stand alone, and massive refactoring of liveness properties to a much cleaner formulation due to Brandner (cite in the soure code) Closed-Leaf check-in: 0d21027e54 user: kbk tags: kbk-liveness
2018-03-10
23:12
Create new branch named "kbk-liveness" check-in: 66890f0640 user: kbk tags: kbk-liveness
2018-03-09
02:28
Insert 'extractFail' on the 'jumpMaybe' path of quads that have their tests emitted by 'error-quads'. Add an 'errortest9' that tests correct throwing of local errors. check-in: d69c66add5 user: kbk tags: inline
2018-03-05
04:31
Fix overzealous demand for split markers in every basic block. Correct incorrect line numbers for fatal errors. Mark procedures that throw errors as also changing globals, to account for errorInfo and errorCode. check-in: 2c961de037 user: kbk tags: inline
2018-03-04
05:04
Allow constant folding for 'listConcat' check-in: 9c0c36b669 user: kbk tags: inline
03:56
Commit changes from trunk to pass both absolute and context-relative line numbers out of the front end. Get correct line numbers after procLeave in inlined procedures. Get correct line numbers in 'fatal' messages. check-in: 82e8e4e276 user: kbk tags: inline
02:49
Pass the line number relative to the enclosing context on the @debug-line directive check-in: 0f2366e18c user: kbk tags: trunk
02:47
Pass the line number relative to the enclosing context on the @debug-line directive Closed-Leaf check-in: 97de78964b user: kbk tags: kbk-dbginfo
02:34
Reopen leaf - need front-end help for procedure-relative line numbers check-in: 348d453899 user: kbk tags: kbk-dbginfo
00:21
Merge in code to track file and procedure context through @debug directives, and to make sure that every basic block is labeled with its proper context. check-in: 8eefa1e572 user: kbk tags: trunk
2018-03-03
23:11
Restore source context on return from inlined procedure check-in: e0efda5f9e user: kbk tags: kbk-dbginfo
22:04
Fix bug in context for diagnostics check-in: 4f2d4ef9cf user: kbk tags: kbk-dbginfo
21:58
Make sure that every basic block has debug info check-in: 952d79018e user: kbk tags: kbk-dbginfo
21:55
Make sure that every basic block has debug info check-in: 3a61b39f34 user: kbk tags: kbk-dbginfo
21:08
Rename @debug-proc to @debug-context check-in: b9793df669 user: kbk tags: kbk-dbginfo
20:50
Make 'sourceInfo' also return information about the active procedure. check-in: 1494e2a83f user: kbk tags: kbk-dbginfo
20:40
Add new file 'dbginfo.tcl' and reorganize some of the handling of '@debug' into it. check-in: 174d4b06ca user: kbk tags: kbk-dbginfo
2018-02-28
04:10
First steps toward embedding file and proc information in debugging directives - will be needed to get backtrace right when inlining. check-in: 402e9ee0b6 user: kbk tags: kbk-dbginfo
03:35
Create new branch named "kbk-dbginfo" check-in: a06e6a5b52 user: kbk tags: kbk-dbginfo
2018-02-19
20:28
Allow inlining of procedures that may throw. Fix bug in 'dictGet' inlining if the dictionary is known not to contain the given key. check-in: dd9a8eab1b user: kbk tags: inline
18:45
Merge mark check-in: 18c7e4f3eb user: kbk tags: inline
18:44
Merge 'infline' branch - a few more trivial optimizations check-in: 35264fe340 user: kbk tags: trunk
05:27
Temporary hack - follow 'initException' that's known to be a FAIL with 'extractFail' so that downstream code knows the status - avoids excess node splits check-in: 3061db19f1 user: kbk tags: inline
05:04
Additional minor optimization - exceptions can be discarded if no code looks at them. check-in: 6ed839c56b user: kbk tags: inline
04:30
Additional optimization - flatten away 'result' when the answer is known. check-in: 8ed8c62621 user: kbk tags: inline
04:01
Merge mark - dovetail merged a tranche of changes into trunk. check-in: 0f30f4eff6 user: kbk tags: inline
04:01
Another tranche of code toward support of inlining: pass the current interpreter result or exception into a 'catch' block explicitly, to enable separation of normal and error paths. Required refactoring of many quadcodes that threw errors, to preserve the error results. check-in: 992e4ebed1 user: kbk tags: trunk
03:55
Flow the current return status into 'returnOptions' and optimize it away if the status is known to be TCL_OK check-in: d6acffc055 user: kbk tags: inline
03:18
Make 'returnCode' use the current exception. Optimize it away if the current return is known to be TCL_OK check-in: c4be83adea user: kbk tags: inline
02:30
Begin splitting normal from exception returns check-in: 6877f5f5ad user: kbk tags: inline
02:03
Pass the exception through to 'result', which should eventually use it if it's known. check-in: c61dcc090a user: kbk tags: inline
00:11
Missed one 'throwIfArray/throwIsArray pair - stomp on it! check-in: cbd19199f5 user: kbk tags: inline
2018-02-18
23:56
checkArithDomain and throwArithDomainError are now dead. Kill off the code that processes them. check-in: a82f73f9a5 user: kbk tags: inline
23:43
Don't use checkArithDomain. Refactor into 'instanceOf' and 'initException'. check-in: e4c73e17de user: kbk tags: inline
22:54
Eliminate the vestiges of 'narrowToParamType' and 'narrowToNotParamType'. Refactor 'checkFunctionParam' into separate operations 'instanceOfParamType' and 'initParamTypeException' so that the FAIL object is made explicit. Add debug logic into several early passes of the 'middle end'. check-in: 34e0e3e461 user: kbk tags: inline
02:59
Constant folding for [info exists] when the variable's value is constant. check-in: 9f310b0264 user: kbk tags: inline
02:54
Kill off throwIfArray and throwIsArray in favour of generating equivalent code inline - allows for passing an object of type FAIL to the catch block. check-in: 4e2e14ceab user: kbk tags: inline
02:41
Kill off throwIfScalar and throwIsScalar in favour of generating equivalent code inline - allows for passing an object of type FAIL to the catch block. check-in: c54be579c4 user: kbk tags: inline
2018-02-15
04:33
Remove throw(If)?NotExists from the documentation, it's dead. check-in: 676ce12783 user: kbk tags: inline
04:25
Eliminate 'throwIfNotExists' and 'initIfNotExists' in favour of explicit inline existence check and initialization of an exception. Prepares for having all exceptions generate an explicit FAIL object. check-in: c79b0c5648 user: kbk tags: inline
03:31
Fix crashes in 'narrow' that were caused by unreachable code introduced in 'varargs'. Change 'setReturnCode' to produce a FAIL. check-in: a14ce4fdee user: kbk tags: inline
02:00
Bury 'returnException' - it's dead, dead, dead. check-in: ad9e594859 user: kbk tags: inline
01:49
Place the FAIL objects corresponding to all thrown exceptions in a known temporary, so that 'returnCode', 'result' and 'returnOptions' can find them. Add an 'extractFail' operation on the 'jumpMaybe' path so that we know the temporary is indeed just a FAIL and never represents a successful result. check-in: 97c90599f0 user: kbk tags: inline
2018-01-30
02:32
Merge mark - dovetail merged initial tranche of changes for inlining into trunk. check-in: 6bcf0e4e95 user: kbk tags: inline
02:30
Merge first tranche of code devoted to procedure inlining. check-in: a36562ea0b user: kbk tags: trunk
2018-01-27
23:39
Make 'wrong # args' work in varargs handling and enable test check-in: e82c9f4d7d user: kbk tags: inline
23:28
Add FIXME comment on commented-out case check-in: e877f8cd4f user: kbk tags: inline
23:27
Prepare to handle multiple invokes per basic block check-in: 29796333b2 user: kbk tags: inline
23:26
Add audit of du- and ud-chains and make auditing optional at run time check-in: 8f211baf33 user: kbk tags: inline
23:26
Better debug logging check-in: 01bb1c0348 user: kbk tags: inline
23:26
Fix bug where unreachable code yields bad SSA repair check-in: 29c1297c18 user: kbk tags: inline
23:22
Add auditing of du- and ud-chains, and fix a bug in copy propagation that failed to track deleted value uses check-in: 5fbd247520 user: kbk tags: inline
2018-01-17
20:45
Refactor argument expansion so that 'invoke' and 'invokeExpanded' share a path. Note that the path generates horrible code, but the rest of compilation is able to tidy it up again. check-in: 8f1e0d889e user: kbk tags: inline
2018-01-10
05:56
Merge in changes to inline 'wrong # args' on 'invokeExpanded'. Still need to do 'invoke'. check-in: bb71cb0eba user: kbk tags: inline
05:54
Fix the bug in the last commit - was a misplaced closing curly brace that caused SSA to be mislinked Closed-Leaf check-in: 481298b855 user: kbk tags: inlineWrongNumArgs
05:10
Add code to throw the 'wrong # args' exception locally without actually trying to invoke the procedure check-in: c3623b95d5 user: kbk tags: notworking, inlineWrongNumArgs
04:04
Notes to self on where code must throw a runtime error check-in: 13e6f8f207 user: kbk tags: inline
02:21
Correct bad checks in 'wrong # args' handling, and add test cases for too few and too many args check-in: f8030b501c user: kbk tags: inline
2018-01-08
03:10
Refactor {*} so that the generated code does not have FAIL SOMETHING or CALLFRAME SOMETHING meet at a phi check-in: 26486c7423 user: kbk tags: inline
2018-01-07
21:01
merge trunk check-in: ee0fedf4cf user: kbk tags: inline
2018-01-04
22:20
No more returnException opcode; we can correctly do everything through plain return now. check-in: c6dc410ca3 user: dkf tags: trunk
20:25
Corrections to [dict update] instruction sequence and narrowing of 'arrayExists'. check-in: cbc1c6e988 user: dkf tags: trunk
2018-01-03
08:22
Gets rid of returnException. Closed-Leaf check-in: f3d6edbe08 user: dkf tags: end-of-returnException
2018-01-02
21:03
Added a demo based on code from comp.lang.tcl Leaf check-in: 0eb2f94f82 user: dkf tags: slkspirit's-demo
18:24
Ensure that the current error code is written back so inlining won't become confused. check-in: 6f8b1b3abc user: dkf tags: trunk
15:53
Separate the part of the proc-exit exception handling sequence that messed with inlining. check-in: a24ef31481 user: dkf tags: trunk
2018-01-01
01:36
Corrections to a comment. check-in: 8f701467e5 user: dkf tags: trunk, minor change
2017-12-30
20:47
Completed initial attack on procedure inlining. Only a handful of opportunities so far, including no really useful ones, but it's at least doing the basics of bringing the rewritten code into the caller and optimizing it in its new home. check-in: a58e401eaa user: kbk tags: inline
2017-12-29
23:14
merge trunk check-in: b4049cdf41 user: kbk tags: inline
23:08
Add missing dropReference(FAIL IMPURE ZEROONE BOOLEAN) check-in: 49199b2701 user: kbk tags: trunk
20:08
Take recursion into account when deciding whether a procedure may be inlined. check-in: f95d5ac2a7 user: kbk tags: inline
2017-12-27
20:19
Some initial sketches toward procedure inlining. check-in: a9a9735747 user: kbk tags: inline
2017-12-25
17:56
Corrections so that errors are reported more usefully. Don't const-fold anything that necessarily interacts with an interp. check-in: a86e497781 user: dkf tags: trunk
2017-12-23
08:38
Trying to fix the resolution of commands to really happen at the right time. Leaf check-in: cd60d83f32 user: dkf tags: fix-call-resolution
2017-12-20
09:25
Resolution context passed to invoke. Still need to stop quadcode engine from pre-resolving (at least in error cases). check-in: 4f606de75c user: dkf tags: fix-call-resolution
2017-12-19
23:57
[7907c1c801] Make [dict update] work with NEXIST and ARRAY. check-in: 55314ea72f user: dkf tags: trunk
23:55
Make [dict update] handle ARRAYs Closed-Leaf check-in: 691e663c5f user: dkf tags: dkf-dict-update
21:54
More docs check-in: 87a78afea0 user: dkf tags: minor change, dkf-dict-update
21:35
doc check-in: c443f31af1 user: dkf tags: minor change, dkf-dict-update
21:28
Rearranging the 'invoke' code to conceptually separate resolution from the command invocation core. check-in: 8a771984d2 user: dkf tags: trunk
08:12
Corrections to make [dict update] work. check-in: bd31927166 user: dkf tags: dkf-dict-update
2017-12-18
20:40
Following the rabbit through the type logic. check-in: 0b30d236de user: dkf tags: dkf-dict-update
2017-12-17
17:44
Working on making a proper [dict update]. check-in: 60af66d773 user: dkf tags: dkf-dict-update
07:17
Working towards making [unset] generate errors correctly without -nocomplain Leaf check-in: 041d7201fe user: dkf tags: dkf-unset-complain
07:10
Implementation of local arrays that can be moved in and out of the callframe cheaply, instead of previous hack with dictionaries. check-in: e0c9c0d70f user: dkf tags: trunk
06:41
Change throwIfNotArray/throwNotArray to throwIfScalar/throwIsArray; slightly clearer naming promotes easier reading. Closed-Leaf check-in: 3ac0e14793 user: dkf tags: proper-local-arrays
2017-12-16
07:41
More moving of methods to the correct place. check-in: 6f8d83e59a user: dkf tags: proper-local-arrays
07:15
Rearranging method order in build.tcl check-in: ee3c450f04 user: dkf tags: proper-local-arrays
07:03
More documentation for build.tcl. check-in: d5b7f0097c user: dkf tags: proper-local-arrays
2017-12-15
10:37
Adding documentation comments. check-in: 9221eb7c24 user: dkf tags: proper-local-arrays
2017-12-10
12:16
Even more error cases. All now correct except one evil edge case in [dict update]. check-in: 9da7701f83 user: dkf tags: proper-local-arrays
09:20
Yet more error cases, being much more thorough. check-in: 316d67117e user: dkf tags: proper-local-arrays
2017-12-09
16:50
Get error messages largely correct. check-in: 20e17e25f1 user: dkf tags: proper-local-arrays
2017-12-08
21:53
Move the structure type construction to the place that knows how to do it. check-in: fb28d3250e user: dkf tags: proper-local-arrays
09:50
merge trunk check-in: 6720f64156 user: dkf tags: proper-local-arrays
09:47
Trim trailing whitespace. check-in: 0d8ff9b54f user: dkf tags: trunk, minor change
09:27
Better error messages. Work still in progress. check-in: a2572c56d2 user: dkf tags: proper-local-arrays
2017-12-07
15:51
Make some more tests not crash, but their outputs are currently very wrong indeed. check-in: ef6a80f709 user: dkf tags: proper-local-arrays
2017-12-06
08:09
Switch over debugging messages to use new macro. check-in: 2d24c37973 user: dkf tags: minor change, proper-local-arrays
08:04
merge trunk check-in: d9e2ad7b41 user: dkf tags: proper-local-arrays
08:04
Add in debugging macro for printing a pointer. check-in: 36350bd3e7 user: dkf tags: trunk
2017-12-03
13:58
merge trunk check-in: f5842336d4 user: dkf tags: proper-local-arrays
13:55
Corrections to the exception handling system. check-in: e34eb3c5ae user: dkf tags: trunk
08:51
Remove unused quadcode. check-in: 6daeaa831b user: dkf tags: proper-local-arrays
08:25
Fix some silly errors that cause crashes. check-in: adbd4e9b57 user: dkf tags: proper-local-arrays
2017-12-02
07:38
Fix problems with wrong semantics. Track array 'provenance' to determine whether deletes are safe. check-in: 3cec951cca user: dkf tags: proper-local-arrays
2017-12-01
06:32
Getting the arrays working a bit more. check-in: 1d5f30b99a user: dkf tags: proper-local-arrays
2017-11-26
23:03
merge trunk check-in: 1ef18beefb user: dkf tags: proper-local-arrays
23:03
Add a better error message when the builder's Call method fails because of an absent function. check-in: 2f8daa2e39 user: dkf tags: trunk
23:01
Various small type fixes. check-in: c9414ea187 user: dkf tags: proper-local-arrays
21:59
Now runs all wordcounter tests. Problems were related to exception handling... check-in: 014682c9d7 user: dkf tags: proper-local-arrays
12:06
Added better guessing of the name of the overall package file. check-in: c09230cd31 user: dkf tags: trunk
11:40
Corrections to [try/finally] and result handling of unset opcodes. check-in: 0bac133d19 user: dkf tags: proper-local-arrays
07:35
Generate the correct code for compound operations on arrays. check-in: a5eea801ab user: dkf tags: proper-local-arrays
2017-11-25
22:52
Trimming some of the trailing whitespace. check-in: b845a764a2 user: dkf tags: minor change, proper-local-arrays
21:52
Fixing a bunch of bugs. Not yet working, but much closer. check-in: 06e3f57f48 user: dkf tags: proper-local-arrays
15:35
merge trunk check-in: e91ba0b3e0 user: dkf tags: proper-local-arrays
15:34
Added missing file. check-in: 221d14095f user: dkf tags: trunk
15:34
More of the implementation. check-in: c8627723bf user: dkf tags: proper-local-arrays
13:04
Delete operations that should be unreachable because of narrowing. check-in: 5311c14622 user: dkf tags: minor change, proper-local-arrays
13:02
Basic array operations should not fail, but may NEXIST. Also clean up a bunch of narrowing. check-in: 47c8079d01 user: dkf tags: proper-local-arrays
2017-11-22
20:33
merge trunk check-in: c2cd55e2c3 user: dkf tags: proper-local-arrays
10:37
Add support for LLVM 5; the lifetime intrinsics grow an extra parameter (NB: this is not mentioned in LLVM docs at all...) check-in: 2e82a03cb5 user: dkf tags: trunk, LLVM 5 support
2017-11-20
20:59
A bit more tweaking of the build binding. check-in: cb728da6cb user: dkf tags: proper-local-arrays
2017-11-19
08:32
More of the binding layer check-in: 46c8a233a4 user: dkf tags: proper-local-arrays
2017-11-18
10:24
Starting to build out implementations. check-in: be43b4716d user: dkf tags: proper-local-arrays
2017-11-16
20:57
Code issuer is getting better. check-in: 44814b192d user: dkf tags: proper-local-arrays
16:12
Add PDF link for the diagram check-in: 952dfad077 user: kennykb tags: trunk
16:09
Splice the diagram into the middle end documentation check-in: f1c2e7b660 user: kennykb tags: trunk
15:55
Demote indentation levels for Fossil's markdown convention check-in: 4eb8af2e32 user: kennykb tags: trunk
15:46
add some documentation about how the compiler 'middle end' is structured. check-in: fb3629ef11 user: kennykb tags: trunk
2017-11-15
06:22
Remove change made while bug hunting. check-in: c311ac4ce8 user: dkf tags: minor change, proper-local-arrays
06:05
Fix the quadcode generation. check-in: d9a9a83d82 user: dkf tags: proper-local-arrays
2017-11-14
06:34
Add in array/scalar type assertion ops. check-in: 0efba9c4ed user: dkf tags: proper-local-arrays
2017-11-12
22:21
Remove 'fqcmd' from transformer.tcl - it's now in a file by itself. check-in: 6b393d4030 user: kbk tags: trunk
21:17
Remove obsolete 'commandList' variable from the specializer and use the database of registered procs instead. check-in: 38bcf4dba8 user: kbk tags: trunk
14:51
Correct type assertions about new quadcodes. check-in: 49b52b0de1 user: dkf tags: proper-local-arrays
13:34
Starting to work on doing local arrays properly. check-in: 875075e86c user: dkf tags: proper-local-arrays
2017-11-11
22:47
Implementation of argument {*}-expansion check-in: 12553204c4 user: kbk tags: trunk
22:43
Analyze callframe effects of calls with expanded args Closed-Leaf check-in: fe8fabf48d user: kbk tags: expand
19:46
merge trunk check-in: 48a782e823 user: kbk tags: expand
19:27
More implementation of direct array operations check-in: 0ee0cc8fde user: kbk tags: trunk
19:03
Add the remaining extended direct array operations. check-in: eacad361c3 user: dkf tags: trunk
19:01
Marked more quadcode instructions as having possible 'interesting' side effects. Closed-Leaf check-in: 108032e564 user: dkf tags: extended-direct-array-ops
18:57
Working towards doing the extended direct array operations. These work... but spit out (wrong) warnings for now. check-in: d58fd0b0f7 user: dkf tags: extended-direct-array-ops
15:45
merge trunk check-in: 2174198e74 user: kbk tags: expand
10:18
Support direct global/FQ arrays, especially tcl_platform and env. check-in: 17b11d4fd2 user: dkf tags: trunk
10:17
Fix various bugs in the direct array access code. Closed-Leaf check-in: ecfc03f396 user: dkf tags: direct-array
2017-11-10
11:16
Adding some test cases. check-in: c5fc20c192 user: dkf tags: direct-array
09:28
Don't need so many implementation functions. check-in: 5c933f0f1b user: dkf tags: direct-array
06:26
Back-end implementations of new quadcodes. check-in: 2acbb07d91 user: dkf tags: direct-array
01:24
Surface compilation of new quadcodes. check-in: 9677287cb5 user: dkf tags: direct-array
01:10
Add (trivial) types of new quadcodes. check-in: 40b978f0a6 user: dkf tags: direct-array
01:02
Working towards direct accesses to global/FQ arrays. check-in: 0de1159513 user: dkf tags: direct-array
2017-11-09
05:11
Implement 'invokeExpanded' translation to 'invoke' for compiled procedures, to edtract partial type information from initial nonexpanded arguments check-in: daa8f2856d user: kbk tags: expand
2017-11-08
12:42
Can do code issuing for [return -level 0] efficiently, but it ought to be done at the quadcode level so there is still a warning. check-in: 26950e6836 user: dkf tags: trunk
11:23
Pass callframe context into invoke. Handle non-ERROR FAIL return cases. check-in: 42f2bc6729 user: dkf tags: trunk
2017-11-06
03:30
Refactor varargs in preparation for supporting 'invokeExpanded' rewriting check-in: 446a714717 user: kbk tags: expand
02:12
Resolve inadvertent fork check-in: 538b725bf9 user: kbk tags: expand
02:11
Fix typo in upvar analysis that caused vars read/written by builtins not to be recorded. (How'd we ever get away with this?) check-in: 6d86ceba2d user: kbk tags: expand
01:31
merge trunk check-in: 3c69510f33 user: dkf tags: expand
01:28
Corrected dispatch into procs with args from standard Tcl. check-in: 74f8168ef4 user: dkf tags: trunk
00:48
Allow specializer to request frame effect from procs reached by 'invokeExpanded' as well as plain 'invoke' check-in: 26b6b4fe8f user: kbk tags: expand
00:46
Refactor fqcmd micropass into its own file, don't clutter transformer.tcl with it. check-in: 980aeeb149 user: kbk tags: expand
00:40
Make sure that 'invokeExpanded' command name is fully qualified for analysis check-in: 3e33c04e46 user: kbk tags: expand
00:37
Make sure invokeExpanded doesn't get killed until we have proper killability analysis check-in: 052e68b85f user: kbk tags: expand
00:35
Add 'invokeExpanded' to the calculation of commands called by a given proc, and correct that calculation, which will give more nearly correct precedence information in specializer (and hopefully give less chaotic compilation) check-in: 05cea5aace user: kbk tags: expand
2017-11-05
07:32
Expansion is working. Special 'args' argument handling is buggy. check-in: ccfcaf6b2c user: dkf tags: expand
07:19
Implementation of expansion. Compiles, but not fully tested yet. check-in: 6421de686c user: dkf tags: expand
2017-11-04
22:54
Add test for 'expandDrop' - which comes out unreachable because we don't handle 'return -code' fully. check-in: 8d9b89e5b5 user: kbk tags: expand
22:27
Fix an apparent type error in tcl.list.length and tcl.dict.size. Resolve a merge problem in the translation of 'expandStkTop' and 'invokeExpanded'. check-in: 12a98660ce user: kbk tags: expand
22:16
merge trunk check-in: f501783689 user: kbk tags: notworking, expand
21:56
Refactor the 'bytecode' procs to be methods of quadcode::transformer. check-in: b722b11937 user: kbk tags: trunk
21:54
Debug translate.tcl - all perf tests pass again. Closed-Leaf check-in: 92576f2208 user: kbk tags: translate-reform
21:36
Reform the bytecode procs to be methods of quadcode::transformer check-in: d27a12520c user: kbk tags: notworking, translate-reform
2017-11-03
05:34
List verification needs to happen at the right places. check-in: 5df759df66 user: dkf tags: expand
2017-11-02
13:54
A lot of the machinery for issuing expansions. Work in progress. check-in: 2528a1de31 user: dkf tags: expand
04:32
Initial stack effect analysis, quadcode translation, and (stupid) type analysis for argument expansion. Next steps have to be callframe, upvar and better type analysis. check-in: d236e0a96d user: kbk tags: expand
02:12
Open a branch for implementation of argument expansion check-in: 3d5e2542a8 user: kbk tags: expand
2017-11-01
20:18
Direct multi-value lappend support. check-in: 19376fbda7 user: dkf tags: trunk
10:52
Hide generated functions. Stop problems with ENTIER in codegen; INT is 64-bit. check-in: 97f690371a user: dkf tags: trunk
2017-10-31
15:36
Implementation of [info level]. check-in: a8a6795c88 user: dkf tags: trunk
2017-10-30
18:22
Added metadata for docker check-in: 723181c542 user: rkeene tags: trunk