Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
919 check-ins using file README.md version 425ac25136
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 | |
15:36 | Added documentation. Closed-Leaf check-in: bcbfa13992 user: dkf tags: minor change, info-level | |
14:43 | Support no-argument [info level] as well. check-in: d74cb2ac95 user: dkf tags: info-level | |
11:20 | Fix a reference count management issue. check-in: 1741e5a351 user: dkf tags: info-level | |
2017-10-30
| ||
18:22 | Added metadata for docker check-in: 723181c542 user: rkeene tags: trunk | |
17:49 | Added basic docker build script based on Debian check-in: 9fe909a82e user: rkeene tags: trunk | |
10:49 | merge trunk check-in: 4e9f76923d user: dkf tags: info-level | |
10:48 | Working on supporting the [info level ] command check-in: a52d5f5d49 user: dkf tags: info-level | |
2017-10-29
| ||
22:37 | Crash less often on compilation errors; add more builtins that were inexplicably omitted check-in: ecace623dd user: kbk tags: trunk | |
20:53 | Remove obsolete test harness 'quadcode.tcl' check-in: fbbb8ec66f user: kbk tags: trunk | |
20:44 | Resolve inadvertent fork check-in: 36f90f343b user: kbk tags: trunk | |
20:41 | Centralize optimization-time error reporting in the specializer. Don't quit on noncompilable procedures. Don't compile procedures that depend on noncompilable procedures. check-in: 9ba8e97bd8 user: kbk tags: trunk | |
20:38 | Don't try to invoke non-compiled commands from compiled code. Don't crash on compilation failures, just leave the script intrpreted. Closed-Leaf check-in: 92722395e8 user: kbk tags: kbk-better-errors | |
18:52 | Implement consolidated message reporting in the specializer. Still need to eliminate failed procs and use the reporting more widely. check-in: 4bcbb29876 user: kbk tags: kbk-better-errors | |
15:08 | Add missing operations. Found when compiling tcllib unicode package. check-in: 1490cca296 user: dkf tags: trunk | |
12:46 | Moving some more files check-in: 50681a6e38 user: dkf tags: trunk | |
12:41 | Added code for compiling by packages, as demonstrated at the 2017 Tcl Conference. Also moves code around for greater sensibleness. check-in: d987746ef4 user: dkf tags: trunk | |
12:36 | Moving around files to be in more standard locations and with better names Closed-Leaf check-in: 50136db770 user: dkf tags: package-compiler | |
12:35 | Set things up more properly as tests Closed-Leaf check-in: 898da806cc user: dkf tags: dkf-code-rearrange | |
11:38 | Move another file to a more sensible location. check-in: f5e1334f6b user: dkf tags: dkf-code-rearrange | |
11:30 | Fixing some tests check-in: e04abcd066 user: dkf tags: dkf-code-rearrange | |
2017-10-28
| ||
18:38 | Make sensible error messages in 'translate.tcl' check-in: 349d4d5929 user: kbk tags: kbk-better-errors | |
17:57 | Open a branch for developing better error reporting. check-in: 881b8eac0d user: kbk tags: kbk-better-errors | |
17:55 | merge mark Leaf check-in: 1ee0f078b5 user: kbk tags: bug-458fe332a9 | |
17:54 | First tranche of bugs reported in [458fe332a9] - existsArray, unsetArray, [namespace current], mistakenly trying to store FAIL in a variable. check-in: 9e170f90ec user: kbk tags: trunk | |
14:46 | More moving things around check-in: ff986790e3 user: dkf tags: dkf-code-rearrange | |
14:35 | Moving the package compiler demo check-in: 59f50f8dc0 user: dkf tags: dkf-code-rearrange | |
14:22 | Fixing some paths and namespaces check-in: f6999d72b5 user: dkf tags: minor change, dkf-code-rearrange | |
13:47 | Adjust name and title. check-in: ebfa830730 user: dkf tags: dkf-code-rearrange | |
13:44 | Rearranging the code. check-in: 6ec06b1cea user: dkf tags: dkf-code-rearrange | |
12:03 | merge trunk check-in: 6080694c3a user: dkf tags: package-compiler | |
2017-10-25
| ||
06:59 | Convert the weird global USE_TCL_STUBS into a proper configurable. check-in: 1a763ecebc user: dkf tags: package-compiler | |
2017-10-23
| ||
03:05 | Implement (partially) 'unsetArray' check-in: 3d0f183697 user: kbk tags: bug-458fe332a9 | |
02:42 | (1) Implement 'info exists array(element), previously overlooked. (2) Correct logic so that moveToCallFrame is not inserted for FAIL items. They will get moved to the callframe on a subsequent 'extractMaybe'. check-in: 6acb7f2965 user: kbk tags: bug-458fe332a9 | |
01:14 | Improve test cases in 'nstest' - no improvement to whethery they actually work, alas. check-in: e3053e040c user: kbk tags: bug-458fe332a9 | |
00:48 | Implement [namespace current] check-in: 4efeee57e5 user: kbk tags: bug-458fe332a9 | |
00:28 | Start work on bug [458fe332a9] check-in: d4ee94de67 user: kbk tags: bug-458fe332a9 | |
00:07 | More constant folding - merge 'constfold' branch changes check-in: b5c2dea020 user: kbk tags: trunk | |
2017-10-22
| ||
23:48 | Make the package compiler Work On My Machine. This messy machine dependency probably belongs in llvmtcl, not quadcode, and should be autoconf'ed. check-in: a14a39d933 user: kbk tags: package-compiler | |
00:28 | Better code for determining where system binaries are installed. check-in: a3f19f9060 user: dkf tags: package-compiler | |
2017-10-21
| ||
12:31 | Tweakery in the demo showed at Tcl 2017. check-in: 9f3aba25fe user: dkf tags: minor change, package-compiler | |
2017-10-20
| ||
19:07 | Host triple determination is now under Tcl control and we have a sensible default. check-in: e5a0287829 user: dkf tags: package-compiler | |
18:53 | Repair strrange with end- constant folded. Closed-Leaf check-in: 67d3da2d01 user: kennykb tags: constfold | |
2017-10-19
| ||
21:43 | Add additional opportunities for constant folding - exposes bug in code gen for 'strrange' check-in: 31cf0d0e30 user: kennykb tags: notworking, constfold | |
19:48 | Initial (very rough) framework for constant folding. check-in: 5e41d1acbb user: kennykb tags: trunk | |
19:32 | More cases for constant folding. check-in: d7c1d5c126 user: kennykb tags: constfold | |
16:18 | merge trunk check-in: 84707cc00b user: kennykb tags: constfold | |
11:42 | merge trunk check-in: 09b391365c user: dkf tags: package-compiler | |
11:41 | Shore up the package construction. check-in: fe14f5fccb user: dkf tags: package-compiler | |
11:27 | Added test case for a (currently) uncompileable package. Clean up some errors. check-in: 239195f2e2 user: dkf tags: package-compiler | |
2017-10-18
| ||
20:53 | Fix tcl.write.var.ptr.numeric to allow a variable that does not yet exist. Enable the 'listIndex' constant folding, which crashed in upvartest0::init without the fix. check-in: f6e107fc47 user: kennykb tags: constfold | |
2017-10-17
| ||
23:54 | Do the object file generation directly, and try to fix the linking to be more useful when working with non-stubbed code. check-in: 1aafd67d2f user: dkf tags: package-compiler | |
2017-10-16
| ||
23:00 | Tidy slides for conference check-in: e4e63af603 user: kennykb tags: trunk | |
22:15 | Add Tcl2017 conference materials check-in: 974ec096f4 user: kbk tags: trunk | |
21:16 | Make a working (on my machine) demo of compiling a package. check-in: ca247f6b41 user: dkf tags: package-compiler | |
20:45 | Use llc for converting bitcode to object code. check-in: 295551afde user: dkf tags: package-compiler | |
04:38 | Fix bugs in calculating effect of 'invoke' on named variables check-in: 32a749c1fe user: kbk tags: constfold | |
03:03 | Start on constant folding. Need to figure out the source of segfaults on the cases marked 'XXX'. check-in: 4c625c21aa user: kbk tags: constfold | |
2017-10-14
| ||
11:49 | Fix silly mistakes in the code to compile to a DLL check-in: 9793ce721b user: dkf tags: package-compiler | |
11:29 | Merge trunk check-in: 129c63dbe1 user: dkf tags: package-compiler | |
2017-10-10
| ||
12:02 | Mark more parameters in the Tcl API as OUT. check-in: a84ef0b8e1 user: dkf tags: trunk | |
2017-10-09
| ||
10:40 | Allow the empty string to be used for NULL in more function calls. check-in: 273c85cd9c user: dkf tags: trunk | |
2017-09-30
| ||
17:10 | Experimental package-oriented compiler. check-in: 113af7c111 user: dkf tags: package-compiler | |
11:25 | merge trunk Leaf check-in: 040132931b user: dkf tags: dkf-optimization-experiment | |
2017-09-24
| ||
06:59 | Fast-path code can share some bits. check-in: 98fffb2a69 user: dkf tags: trunk | |
2017-09-23
| ||
11:33 | A more efficient way to store numeric values in a Tcl_Var. check-in: e550f13c8c user: dkf tags: trunk | |
2017-09-22
| ||
07:18 | Ensure that all discovered local variables get an LVT entry. check-in: c85b37c213 user: dkf tags: trunk | |
2017-09-19
| ||
02:12 | Correct oversight: direct variable access must adjust 'readsGlobal', 'writesGlobal' and the 'pure' and 'killable' flags. check-in: 114a1a01b4 user: kbk tags: trunk | |
2017-09-17
| ||
23:10 | Initial implementation: direct variable access check-in: 53eb49f304 user: kbk tags: trunk | |
23:08 | Initial implementation of direct variable access. Closed-Leaf check-in: 3ade2b58f3 user: kbk tags: namespace-variables | |
22:14 | Direct variable access: merge in dkf-direct-variables, make varframe.tcl not crash. Need code and test cases for spoliation of local may-alias vars when direct vars are updated. check-in: 1b5ad48130 user: kbk tags: namespace-variables | |
2017-09-16
| ||
14:03 | merge trunk Leaf check-in: 63c5af8e72 user: dkf tags: errorline-fixing | |
2017-09-15
| ||
04:19 | merge namespace-variables: fix bug that prevented optimization of 'moveToCallFrame' check-in: e1519285ca user: kbk tags: trunk | |
04:15 | Fix bug that prevented optimization of 'moveToCallFrame' check-in: f019722399 user: kbk tags: namespace-variables | |
03:38 | Merge namespace-variables: make sure that variables created with pass-by-name are listed in the initial callframe check-in: 2570e4a684 user: kbk tags: trunk | |
03:36 | Make sure that variables that are created in pass-by-name have callframe slots in advance check-in: 46dd653d5e user: kbk tags: namespace-variables | |
03:12 | Merge namespace-variables: more aggressive detection that a proc doesn't touch the callframe at all. check-in: 7a6695ff7e user: kbk tags: trunk | |
03:10 | Add cleanup optimization, the lack of which was causing 'eliminateCallFrame' not to find a fair number of opportunities. check-in: caf952b7b6 user: kbk tags: namespace-variables | |
02:18 | Make sure that 'errorCode' and 'errorInfo' are available when errors are caught. check-in: fbb0672c61 user: kbk tags: trunk | |
01:59 | merge trunk check-in: edbdde5e70 user: kbk tags: namespace-variables | |
01:56 | Make sure that errorCode and errorInfo are available after a caught errror check-in: edd073a183 user: kbk tags: namespace-variables | |
2017-09-14
| ||
12:33 | merge trunk check-in: 6d79c2c2f1 user: dkf tags: errorline-fixing | |
12:33 | Generate correct errorinfo traces on error. Has a negative performance impact. check-in: e03627d13b user: dkf tags: trunk | |
12:27 | Added some information about the support pseudo-instructions that I use. check-in: cd53fc1345 user: dkf tags: errorline-fixing | |
10:48 | Update documentation comments. check-in: 9902f56df4 user: dkf tags: errorline-fixing | |
01:47 | Merge in a rudimentary implementation of [upvar], [namespace upvar], global check-in: 9bb4742561 user: kbk tags: trunk | |
01:44 | Conservatively model frame effects of calling a proc that uses namespace variables. check-in: 3b6c5ae00b user: kbk tags: namespace-variables | |
2017-09-13
| ||
21:13 | Fix the error line generation. Makes error handling quite a bit slower, but that's inevitable for perfection right now. check-in: 4d2c3566df user: dkf tags: errorline-fixing | |
02:46 | Refactor the methods 'variablesUsedBy', 'variablesProducedBy', 'canEliminateCallFrame' into quadcode::transformer out of quadcode::specializer. check-in: e950773b33 user: kbk tags: namespace-variables | |
02:31 | Remove code that was obviated by the last few refactorings check-in: 96e9b9f12f user: kbk tags: namespace-variables | |
02:25 | Calculate frame effects of the three builtins that have to be parsed to determine them check-in: 0756376dee user: kbk tags: namespace-variables | |
01:57 | Refactor varsUsedBy and varsProducedBy to use the frameEffect method rather than reaching into the data structures directly. check-in: c142f038a8 user: kbk tags: namespace-variables | |
01:44 | Refactor the 'frameEffect' method to take the quadcode instruction that invokes the command check-in: 1756e035ff user: kbk tags: namespace-variables | |
01:39 | Return to building builtins.tcl from builtins.{txt,tcl.in} check-in: 97987fdae2 user: kbk tags: namespace-variables | |
2017-09-12
| ||
02:07 | Remove redundant tests of upvar; start adding tracking of whether procs manipulate globals; correct 'varsReadBy and 'varsWrittenBy' to return variable lists as documented. check-in: 4e884fd992 user: kbk tags: namespace-variables | |
2017-09-10
| ||
02:16 | More debugging of support for procedure side effects. Performance now equals trunk, and upvattest::test2 and test4 now pass. check-in: 1e812f9282 user: kbk tags: namespace-variables | |
2017-09-09
| ||
20:29 | Make demos work again:: (1) Fix typos in 'frame.release'. (2) Add missing 'addReference(FAIL DICTITER)'. (3) Don't analyze or generate code for procs with NOTHING args - they're always in unreachable code, or code that will be re-analyzed. (4) Remove console dribble. (5) Make sure that procs that use caller variables force the caller to have a callframe, and ones that write variables are not killable. check-in: ed5d20535c user: kbk tags: namespace-variables | |
14:52 | Change specializer API to pass param types along with procedures when inquiring about callframe effects check-in: 8df6d12af0 user: kbk tags: namespace-variables | |
14:46 | Fix bugs in upvar tests so that demos don't crash. check-in: f310c12a4b user: kbk tags: trunk | |
14:15 | Development checkpoint - beginnings of code needed to calculate frame effects of procs on their callers. check-in: e01460f477 user: kbk tags: namespace-variables | |
2017-09-08
| ||
14:41 | Getting better; now generate correct trace except for an error line number. check-in: f17a341138 user: dkf tags: errorline-fixing | |
2017-09-07
| ||
10:18 | Getting better. Still not getting traces really right. check-in: ee3e63a7b1 user: dkf tags: errorline-fixing | |
2017-09-04
| ||
21:18 | Improving the testing. Fix a crash case. check-in: 06912b9738 user: dkf tags: errorline-fixing | |
18:49 | Development checkpoint - partial implementation of a better analysis of [upvar]. check-in: 35305bdca1 user: kbk tags: namespace-variables | |
2017-09-03
| ||
12:27 | Seems to be generating the right error lines now. Looks like there's a bug in Tcl in this area too. check-in: 764f4d2608 user: dkf tags: errorline-fixing | |
11:26 | merge trunk check-in: 8e8b56738a user: dkf tags: errorline-fixing | |
2017-08-29
| ||
00:18 | Oops: remove console dribble. check-in: 8775c6ae91 user: kbk tags: namespace-variables | |
2017-08-27
| ||
20:51 | Add quick-and-dirty approximation to [upvar]'s callframe effect, enough to get something working, but known to be incorrect in significant corner cases. check-in: 0e3ab8a2bd user: kbk tags: namespace-variables | |
18:51 | Merge trunk: return to autogenerating builtins.tcl check-in: e797987631 user: kbk tags: namespace-variables | |
18:50 | Return to auto-generating builtins.txt, to allow for evolution of the builtin dictionary check-in: f98b1a6985 user: kbk tags: trunk | |
2017-08-26
| ||
20:13 | Merge trunk: do not emit spurious labels in tcl.*.var.ptr check-in: 241fb9fa72 user: kbk tags: namespace-variables | |
20:11 | [dabd7e27c7]: Do not emit extraneous labels in tcl.{read,write,unset}.var.ptr. Also, correct type signature of Tcl_ObjectContextObject. check-in: 73ed5e7b93 user: kbk tags: trunk | |
15:22 | Tinkering for clarity Leaf check-in: 364ac98f7c user: dkf tags: minor change, dkf-enhanced-output-diff | |
2017-08-21
| ||
23:56 | Working towards fixing the errorline info. check-in: 10a6ce570f user: dkf tags: errorline-fixing | |
00:16 | Better highlight of differences of outputs when before/after results vary check-in: 728a7a9fe0 user: dkf tags: dkf-enhanced-output-diff | |
00:14 | Better result dictionary comparisons; exclude more irrelevant bits. check-in: ffaba6143f user: dkf tags: trunk | |
2017-08-17
| ||
23:05 | Fix problems with incorrect return codes greater than 1. check-in: d0352a75a3 user: dkf tags: trunk | |
23:02 | Fix memory corruption issue Closed-Leaf check-in: fb58adf162 user: dkf tags: minor change, returncode-bug | |
22:36 | Made the handling of return codes follow standard rules for procedures much more correctly. check-in: 3f15f0ff00 user: dkf tags: returncode-bug | |
2017-08-06
| ||
10:32 | Start of branch hunting problems with non-error [return] calls. check-in: 4401285e32 user: dkf tags: returncode-bug, broken | |
2017-07-29
| ||
15:20 | Add documentation comments. Closed-Leaf check-in: 775cd5d9f1 user: dkf tags: minor change, dkf-direct-variables | |
14:46 | Provide direct access to fully-qualified variables. Needs work to be safe for other types of qualification or unqualified. Also, Tcl's hiding away of [incr] guts is highly annoying. check-in: d294b80062 user: dkf tags: dkf-direct-variables | |
11:27 | merge trunk check-in: 683bc2014e user: dkf tags: namespace-variables | |
11:27 | Better use of API. Extend to support changes in int-api. check-in: 3c5bafd097 user: dkf tags: trunk | |
2017-07-23
| ||
21:17 | Split things up a bit more internally to keep method size down. check-in: 76da08214e user: dkf tags: trunk, minor change | |
12:14 | Move the variable and callframe implementations out to their own file. check-in: b2242736f9 user: dkf tags: trunk | |
11:55 | merge trunk check-in: 039332be89 user: dkf tags: namespace-variables | |
11:54 | Minor tweaks. check-in: 0915d690aa user: dkf tags: trunk | |
10:56 | Changes from namspace-variables branch that are reasonably meaningful elsewhere. check-in: 3bfaafe6a7 user: dkf tags: trunk | |
06:38 | Defining a few more non-null assumptions/assertions. check-in: 3849083e94 user: dkf tags: minor change, namespace-variables | |
05:42 | Tame TclObjGetFrame more thoroughly. check-in: e64a80df2d user: dkf tags: namespace-variables | |
2017-07-22
| ||
11:14 | Fix the empty-error problems. TclObjGetFrame has a strange result encoding. check-in: dccd96edb7 user: dkf tags: namespace-variables | |
2017-07-13
| ||
22:36 | Commit temporary 'upvar0' test just to try to debug resolution check-in: 7308d80f26 user: kbk tags: namespace-variables | |
2017-07-08
| ||
20:40 | Add simple tests (comented out) for upvar. Correct an issue where 'moveFromCallFrame' referenced a FAIL EMPTY CALLFRAME, rather than a CALLFRAME. check-in: e297479fb6 user: kbk tags: namespace-variables | |
16:09 | merge trunk - new string hashing tests. check-in: 00f0d5601b user: kbk tags: namespace-variables | |
2017-07-07
| ||
12:52 | Added tests for string hashing. Key test features: callframes, namespace variables, math, [scan %c] and [binary scan]. check-in: 57baf130c3 user: dkf tags: trunk | |
2017-07-04
| ||
21:05 | Add some working notes on 'upvar' handling check-in: 6860ba5f08 user: kbk tags: namespace-variables | |
2017-07-03
| ||
10:14 | Basic support for [global], [variable] and [namespace upvar] commands. check-in: d1dbb6df59 user: dkf tags: trunk | |
2017-07-02
| ||
23:06 | Finished code issuer for upvar. Not yet generated by quadcode engine. check-in: 4ddcd68805 user: dkf tags: namespace-variables | |
16:11 | Add descriptive comments for more builder methods. check-in: e32cbf5f43 user: dkf tags: namespace-variables | |
15:37 | Need to follow variable links when reading or writing. check-in: 9cf6622f71 user: dkf tags: namespace-variables | |
2017-07-01
| ||
19:47 | Add code to allow variable binding to fail check-in: f58eccaca7 user: kbk tags: namespace-variables | |
08:05 | Variable binding implementation function done. Something not working. check-in: 2dd141efab user: dkf tags: namespace-variables | |
2017-06-28
| ||
23:01 | Most of the error handling machinery on the implementation side. check-in: 4e68c6df02 user: dkf tags: namespace-variables | |
22:36 | Define the variable lookup functions. check-in: a824df10bf user: dkf tags: namespace-variables | |
18:51 | Basic type signatures of implementation functions. check-in: 3cb89fef73 user: dkf tags: namespace-variables | |
09:34 | Machinery for code issue. Still needs implementations. (Can varname lookup fail?) check-in: d817e69c7a user: dkf tags: namespace-variables | |
08:45 | Work around bug in older release of 8.6 check-in: c7a2aa057f user: dkf tags: namespace-variables | |
2017-06-27
| ||
23:49 | Resolve inadvertent fork check-in: a82c0275b3 user: kbk tags: namespace-variables | |
22:33 | OOPS: Forgot to add aliases.tcl. check-in: 5e6b1a7c87 user: kbk tags: namespace-variables | |
18:46 | merge trunk check-in: 6968dde9a9 user: dkf tags: namespace-variables | |
18:46 | Fix a spot that wasn't using the namespace path right. check-in: 2d672d3dca user: dkf tags: trunk | |
02:18 | Add demos for 'namespace upvar' and make a bunch of niggling changes in support of namespace variable testing. check-in: 801e909810 user: kbk tags: namespace-variables | |
01:08 | Merge trunk and correct 'infant mortality' typos in analysis of namespace variables (and other proc effects) Closed-Leaf check-in: de509d61a1 user: kbk tags: kbk-namespace-variables | |
00:51 | Oops - correct misspelt -errorinfo check-in: 5d4e019513 user: kbk tags: trunk | |
00:45 | Add the failed procedure to the backtrace from specializer operations check-in: ed477e79d4 user: kbk tags: trunk | |
2017-06-25
| ||
15:15 | Defining a general 'write this module to a file' capability. Leaf check-in: aced25cd25 user: dkf tags: dkf-write-to-file | |
2017-06-24
| ||
15:29 | merge trunk Leaf check-in: 981e7c27f2 user: dkf tags: tcl-api | |
15:28 | Since we require llvmtcl 3.7, we can assume its set of commands. Leaf check-in: af458d10dc user: dkf tags: dkf-remove-unused-functions | |
15:26 | merge trunk check-in: 1e4c76ade5 user: dkf tags: dkf-remove-unused-functions | |
15:25 | merge trunk check-in: 229d383856 user: dkf tags: dkf-optimization-experiment | |
15:24 | merge trunk Leaf check-in: c1a920e91c user: dkf tags: dkf-colored-output | |
15:23 | merge trunk Leaf check-in: cca323cf88 user: dkf tags: dkf-callframe-debug | |
10:57 | Implementation of synthetic Tcl callframes, allowing compiled code to call many more standard Tcl commands. check-in: 972e702bf1 user: dkf tags: trunk | |
10:54 | An actual working argument synthesis scheme that doesn't overuse reference counting and doesn't misuse the C stack frame. Closed-Leaf check-in: adaedf59a8 user: dkf tags: callframe-impl | |
2017-06-23
| ||
23:16 | Working towards completing the basic callframe support. check-in: e06a820668 user: dkf tags: callframe-impl | |
03:35 | Code works again for procs that do not use nonlocal variables - ready to start debugging the ones that do. check-in: 9893a019b4 user: kbk tags: kbk-namespace-variables | |
03:04 | Merge callframe-impl and start on some of the FIXME's. NOT WORKING check-in: 4d8021b2c3 user: kbk tags: not-working, kbk-namespace-variables | |
2017-06-12
| ||
00:58 | Remove use/def of the callframe from 'invoke' instructions when the invoked code cannot access the caller's frame at all. check-in: b569ee9109 user: kbk tags: callframe-impl | |
2017-06-11
| ||
10:10 | merge callframe-impl check-in: 46a0f7c302 user: dkf tags: dkf-callframe-debug | |
10:09 | merge trunk check-in: 6cff1465f9 user: dkf tags: tcl-api | |
05:06 | merge trunk check-in: 2e6d84f46a user: dkf tags: callframe-impl | |
2017-06-10
| ||
17:35 | Prepare for new version of llvmtcl. check-in: dda382ae60 user: dkf tags: trunk | |
2017-06-08
| ||
22:47 | Added internal API that will be new in 8.6.7 check-in: 926ed7fa7d user: dkf tags: tcl-api | |
2017-06-06
| ||
19:22 | Generate local Tcl variables in a true on-stack LVT rather than in a ckalloc()ed hash table. check-in: e27adddd5f user: dkf tags: callframe-impl | |
19:16 | Add comment about key feature of one procedure; it is *NOT* to be compiled. Closed-Leaf check-in: 3abcf6b767 user: dkf tags: dkf-improved-proc-metadata | |
19:14 | Remove a bit of the debugging machinery that was unnecessary. check-in: 5f0d2b9a5b user: dkf tags: dkf-improved-proc-metadata | |
19:12 | Force creation of debugging delegate for type in internal function signature. check-in: a4369d511d user: dkf tags: dkf-improved-proc-metadata | |
19:08 | Strip some unnecessary code. check-in: 17f2b1e74a user: dkf tags: minor change, dkf-improved-proc-metadata | |
19:01 | LocalCache structures are refcounted; remember to increment on use! check-in: 351c3f697a user: dkf tags: dkf-improved-proc-metadata | |
01:09 | Rationalize the callframe-elimination code a little bit. check-in: 15b0db31bb user: kbk tags: callframe-impl | |
00:33 | Eliminate callframe allocation/deallocation from procs that are known not to use the callframe at all. check-in: c7f3940a8f user: kbk tags: callframe-impl | |
2017-06-05
| ||
01:10 | Update to the current callframe implementation check-in: ffb94761a7 user: kbk tags: not working, kbk-namespace-variables | |
01:08 | Merge in the refactoring of callframe data motion. check-in: 352c2285f9 user: kbk tags: not working, kbk-namespace-variables | |
00:11 | Begin merging incrementally up to current callframe implementation. check-in: f187bb549f user: kbk tags: not working, kbk-namespace-variables | |
2017-06-04
| ||
17:10 | Working towards better metadata generation check-in: 34cc0dd981 user: dkf tags: not working, dkf-improved-proc-metadata | |
11:11 | Tweaks that will report where there are problems once we clean up the callframe handling. check-in: da4845de02 user: dkf tags: dkf-callframe-debug | |
11:08 | merge trunk check-in: 3258ec1305 user: dkf tags: callframe-impl | |
11:07 | Removed unreachable methods now that 'purify' exists. check-in: b1ff0849e1 user: dkf tags: trunk | |
02:59 | Correct specializer logging to silence it when it's not turned on check-in: 7a7195c5f5 user: kbk tags: callframe-impl | |
02:55 | merge trunk: attempt at more disciplined node splitting check-in: f77f4de1f4 user: kbk tags: callframe-impl | |
02:49 | Tidy up [a2a91411dd] - remove no-longer-used code check-in: ba388913d7 user: kbk tags: trunk | |
02:45 | Merge kbk-less-nodesplit: Attempt at more disciplined node splitting logic check-in: a2a91411dd user: kbk tags: trunk | |
02:39 | Fixed bug that kept code from splitting on IMPURE Closed-Leaf check-in: 566a36d4e2 user: kbk tags: kbk-less-nodesplit | |
01:58 | Changes to node splitting to constrain splitting to phi's whose merged results have types that inform downstream decisions. check-in: 0cde061e97 user: kbk tags: kbk-less-nodesplit | |
2017-06-03
| ||
10:31 | Corral the slowest compilation off in the name of getting a little speed during normal testing. check-in: dd976d6de3 user: dkf tags: minor change, callframe-impl | |
2017-06-02
| ||
20:06 | Working towards not needing callframes in all cases. check-in: 1183b74b93 user: dkf tags: callframe-impl | |
2017-05-31
| ||
20:37 | Work around for bug in slightly older Tcl 8.6. check-in: 5a1002d67a user: dkf tags: minor change, callframe-impl | |
05:25 | merge trunk check-in: e099d2178c user: dkf tags: tcl-api | |
2017-05-30
| ||
13:29 | merge trunk check-in: 998eabdc54 user: dkf tags: callframe-impl | |
02:49 | Merge in some significant optimizations to data motion to and from callframes. check-in: 43425a5758 user: kbk tags: callframe-impl | |
02:40 | Refactor control of data motion to and from the callframe. All tests now pass with the exception of four changed error dictionaries. Closed-Leaf check-in: f7f046450c user: kbk tags: kbk-callframe-motion | |
2017-05-29
| ||
22:46 | Fix the thing that my check in my previous commit was put in to catch. Ooops. check-in: e81f42ea1d user: dkf tags: trunk | |
19:38 | Merge fixes to code generation for unconditional failures. check-in: 0fdcff1361 user: kbk tags: kbk-callframe-motion | |
19:35 | Repair infinite loop in compilation of 'mrtest', caused by promotion of FAIL to FAIL STRING in procedure return types. Added code to optimize 'jumpMaybe' when a FAIL reaches it, because the unreachable code starts having NOTHING types for values, which cannot be compiled. Added some instrumentation to the specializer. Closed-Leaf check-in: 7f968bed5e user: kbk tags: kbk-callframe-fixes | |
14:47 | Instrumentation used to detect possible infinite loops in the specializer. Closed-Leaf check-in: 2e3f00cdc4 user: dkf tags: dkf-specializer-instrumentation | |
08:42 | merge trunk check-in: 0797bc8f18 user: dkf tags: callframe-impl | |
08:24 | Add some type sanity checking; there are quite a few places where function types can't be used in other types. check-in: 50e4691642 user: dkf tags: trunk | |
02:06 | Merge kbk-callframe-motion: repair 'varargs' to work with callframes. check-in: 053faeabbd user: kbk tags: kbk-namespace-variables | |
02:02 | merge dkf-callframe-impl: repair 'varags' pass check-in: cd31f6b8c0 user: kbk tags: kbk-callframe-motion | |
01:57 | Correct varargs to examime the 'invoke' quadcode taking into account the callframe args - and do a major drive-by refactoring. Now passes the 'cos' and 'xsum' tests. Fix for ticket [2fb4388b96]. check-in: 1facb9b83c user: kbk tags: callframe-impl | |
2017-05-27
| ||
17:11 | Make the cos-related commands all compile again by applying critical fix for default handling. check-in: 1d6cb9af0a user: dkf tags: callframe-impl | |
16:40 | merge trunk check-in: a5a49b87eb user: dkf tags: callframe-impl | |
2017-05-26
| ||
08:40 | Added TclOO API. Shorten many type names. check-in: bddfdfe9b7 user: dkf tags: trunk | |
08:37 | Add TclOO internal API. Slightly better stub table definitions. check-in: 87bd77bbbc user: dkf tags: tcl-api | |
2017-05-23
| ||
09:50 | Add TclOO public functions. Refactor the Tcl API declaration mapping code. check-in: dfab654aa1 user: dkf tags: tcl-api | |
2017-05-22
| ||
08:51 | merge trunk check-in: 5279ec9d42 user: dkf tags: tcl-api | |
08:50 | Shorten many type names and remove useless redefinitions. check-in: b2fe57d7b6 user: dkf tags: tcl-api | |
04:18 | Start working on support for 'variable', 'namespace upvar', 'global', and 'upvar #0'. Code is not working as yet. Next steps toward making it work are to rework the FIXME's in callframe.tcl, and eliminate 'callframeNop' once it's done its job. Then comes implementation of 'nsupvar', 'upvar', 'variable' quadcodes, and implementation of the 'loadStk' and friends in translate.tcl check-in: 7199a45325 user: kbk tags: not working, kbk-namespace-variables | |
2017-05-21
| ||
22:55 | merge trunk: remove use of other passes from copyprop check-in: 60da56484d user: kbk tags: kbk-callframe-motion | |
22:54 | merge trunk: remove use of other passes from copyprop check-in: 77e043898f user: kbk tags: callframe-impl | |
22:49 | It's a bad practice to invoke passes from other passes, and copyprop doesn't care about dead code cleanup, so remove the cleanup optimizations from its head. check-in: 06ed6d7b96 user: kbk tags: trunk | |
21:37 | merge trunk - pick up Tcl API additions check-in: abd70c7494 user: kbk tags: kbk-callframe-motion | |
21:34 | merge trunk - pick up new Tcl API defs check-in: 5bb434eda6 user: kbk tags: callframe-impl | |
21:30 | Fix typo in declaration of Tcl_DbCkalloc check-in: 84998bf23a user: kbk tags: trunk | |
15:51 | Clean up the type declarations by implementing a scheme letting them happen 'simultaneously', getting rid of many void* values in the process. check-in: 6b8592a4b6 user: dkf tags: tcl-api | |
10:01 | Added definitions from Tcl's internal API. check-in: 5a61f0db3b user: dkf tags: trunk | |
10:00 | Another tranche of internal API check-in: ab08f69afd user: dkf tags: tcl-api | |
2017-05-20
| ||
19:35 | merge dkf-callframe-impl; fix for [e1f697c808] check-in: dce3d345c1 user: kbk tags: kbk-callframe-motion | |
19:33 | merge trunk; fix for [e1f697c808] check-in: f05421f9df user: kbk tags: callframe-impl | |
19:16 | merge code from dkf-callframe-impl, including the simplification of 'extractCallFrame'. Update 'cfProducer' to handle the additional dereference required to locate the operation that actually produced the frame. check-in: 4d2382ff32 user: kbk tags: kbk-callframe-motion | |
19:08 | accept the changes from dkf-simplify-callframe check-in: 0fa06190a8 user: kbk tags: callframe-impl | |
17:27 | Another tranche of internal API check-in: 44c7741c26 user: dkf tags: tcl-api | |
17:12 | merge trunk check-in: c5caf68f2b user: dkf tags: tcl-api | |
16:47 | Another tranche of internal API check-in: 7f1baa9fc1 user: dkf tags: tcl-api | |
14:19 | [e1f697c808] Fix compilation result type of commands that only yield Tcl errors. check-in: 3f2faab2d6 user: dkf tags: trunk | |
13:39 | merge dkf-callframe-impl check-in: 6126b0c7f6 user: dkf tags: kbk-callframe-motion | |
13:37 | An alternate approach to CALLFRAME handling that untuples the CALLFRAME type as soon as possible. Closed-Leaf check-in: a44383f5f2 user: dkf tags: dkf-callframe-impl | |
08:18 | merge trunk check-in: f2e7834438 user: dkf tags: dkf-callframe-impl | |
08:17 | About 7% acceleration in the quadcode transformer by changing how shared variables are handled. This is because it is quite a bit faster to use the variable resolver in TclOO than it is to use [my variable]. check-in: b72caf8964 user: dkf tags: trunk | |
07:21 | Redo the type widening so that it doesn't get so awful. check-in: 46abd31cc7 user: dkf tags: dkf-callframe-impl | |
2017-05-19
| ||
21:51 | merge dkf-callframe-impl check-in: 3f580223cb user: kbk tags: kbk-callframe-motion | |
21:48 | Merge trunk Closed-Leaf check-in: b30d5235b8 user: kbk tags: kbk-bug-e1f697c808 | |
08:25 | merge trunk check-in: 9218c64ce6 user: dkf tags: dkf-callframe-impl | |
08:22 | Added definitions for much of the remaining Tcl API. check-in: d1240091e0 user: dkf tags: trunk | |
08:20 | Internal API and call attribute tweaking. check-in: 6c8693dd16 user: dkf tags: tcl-api | |
2017-05-18
| ||
23:55 | Merge trunk check-in: 49aa9ba778 user: kbk tags: kbk-bug-e1f697c808 | |
23:38 | Another tranche of Tcl's API check-in: 7f77b6974a user: dkf tags: tcl-api | |
08:46 | Another tranche of Tcl's API check-in: 25a234d851 user: dkf tags: tcl-api | |
2017-05-16
| ||
22:15 | Another tranche of Tcl's API check-in: 72b4c1b4dd user: dkf tags: tcl-api | |
08:42 | Another tranche of Tcl's API check-in: ead48dfe8b user: dkf tags: tcl-api | |
2017-05-14
| ||
23:16 | Add a nanopass to remove 'moveFromCallFrame' and 'moveToCallFrame' when it is known that (a) an invoked command doesn't use/modify the variable being moved, or (b) the value being moved to the callframe is already there. The code includes characterization of the effect of a great many of Tcl's builtin commands on the caller's variables. check-in: e016cb6dc3 user: kbk tags: kbk-callframe-motion | |
17:46 | Another tranche of Tcl's API check-in: b96224cf75 user: dkf tags: tcl-api | |
16:59 | Another tranche of Tcl's API check-in: 5219c0900a user: dkf tags: tcl-api | |
16:03 | Another tranche of Tcl's API check-in: 2335c968a4 user: dkf tags: tcl-api | |
13:57 | merge trunk check-in: 0ee077fe05 user: dkf tags: tcl-api | |
12:13 | merge trunk check-in: 30bdc52a01 user: dkf tags: dkf-callframe-impl | |
10:44 | merge trunk check-in: 4419de9303 user: dkf tags: dkf-colored-output | |
10:40 | merge trunk Leaf check-in: 95e004d191 user: dkf tags: more-flightaware-examples | |
10:35 | merge trunk check-in: fbf82b2d69 user: dkf tags: dkf-optimization-experiment | |
10:03 | merge trunk check-in: e51accf9c3 user: dkf tags: dkf-remove-unused-functions | |
10:02 | [5800594ba4] Add hard error in case this ever comes up again. check-in: 4976822fe2 user: dkf tags: trunk | |
03:49 | If a procedure always throws an error, change its return type from a bald FAIL to FAIL STRING. Otherwise, there are several issues with trying to generate code for its callers. check-in: 2ea9177c1f user: kbk tags: kbk-bug-e1f697c808 | |
2017-05-13
| ||
21:39 | Bug [5800594ba4] - Do not emit widening instructions whose target is a literal check-in: 8b82804231 user: kbk tags: trunk | |
21:26 | toss out obsolete code check-in: a314fc6fcc user: kbk tags: trunk | |
21:14 | Complete rework of SSA repair. Node splitting and type narrowing are now much simpler, and the SSA repair technique is much more like a 'black box' that is agnostic to the specific program transformation that damaged SSA. check-in: 7d469bcdc0 user: kbk tags: trunk | |
21:10 | Fix stupid bug in SSA repair that caused phi nodes to be mislinked Closed-Leaf check-in: f1db21a01e user: kbk tags: kbk-ssa-repair | |
18:47 | Make node splitting use the 'black box' SSA repair. NOT WORKING - powmul2 infinite loop? check-in: a89601c4ce user: kbk tags: kbk-ssa-repair | |
14:29 | Added testcase (for [5800594ba4]) that highlights issues with widening of literals. check-in: 327019999e user: dkf tags: trunk | |
13:32 | merge trunk check-in: e5a6f94d24 user: dkf tags: dkf-remove-unused-functions | |
13:31 | GC of unused functions now part of llvmtcl 3.7 check-in: 462299a7c9 user: dkf tags: dkf-remove-unused-functions | |
08:11 | Fixes to handling of IMPURE and reference count management problems that that exposed. check-in: 44fa79e9a9 user: dkf tags: trunk | |
08:08 | Workaround for leaks caused by bad widenTo's of literals. (See [5800594ba4]) Closed-Leaf check-in: ef635af798 user: dkf tags: dkf-workaround-widenTo-literal | |
2017-05-12
| ||
21:55 | merge trunk check-in: 48585a0c71 user: kbk tags: kbk-ssa-repair | |
08:23 | Corrections to reference count handling for narrowToType when working with IMPURE types. Closed-Leaf check-in: 11bb40a048 user: dkf tags: fixing-impure2-issues | |
03:06 | Return to aggressive copy propagation for temporaries. Adopt a new theory of SSA repair that reconstructs SSA for specific variables by renaming only the affect variable and tracing uses upward to their reaching defs, adding phis as necessary. Temporarily bypass node splitting/jump threading, because it is not yet using the new approach to SSA repair. New algorithms should not require Conventional SSA for the repairs, so efforts to preserve it have been abandoned. check-in: f7580cf32d user: kbk tags: kbk-ssa-repair | |
2017-05-11
| ||
08:02 | merge trunk check-in: 534f624da1 user: dkf tags: fixing-impure2-issues | |
08:01 | Add capability to suppress inlining of some macro implementation functions. check-in: 58dbacc6fe user: dkf tags: trunk | |
07:59 | Fix refcount handling for copying of constants. check-in: ef569cfebf user: dkf tags: fixing-impure2-issues | |
2017-05-10
| ||
07:26 | Fix refcount handling with constants in vectors check-in: 1715597d9b user: dkf tags: fixing-impure2-issues | |
2017-05-09
| ||
18:37 | Garbage collect those functions that are currently unused. Which are unused depends on what Tcl bytecodes were in starting code. check-in: 5473c2585a user: dkf tags: dkf-remove-unused-functions | |
07:26 | Fix for debugging prints when applied to STRING? types. check-in: 63dc044805 user: dkf tags: fixing-impure2-issues | |
2017-05-08
| ||
19:24 | Fix silly error. check-in: 32add5260b user: dkf tags: fixing-impure2-issues | |
2017-05-07
| ||
17:27 | Working on fixing the issues with compiling impure2. check-in: 121519fdcf user: dkf tags: fixing-impure2-issues | |
2017-05-03
| ||
07:31 | Make better use of colour. check-in: a9c75a3565 user: dkf tags: dkf-colored-output | |
2017-05-02
| ||
18:41 | Tinkering with errortest2. !!BUG!! errortest2-caller currently uncompileable. check-in: 2d11c0a858 user: dkf tags: trunk | |
10:17 | merge trunk check-in: be2e8d7c6a user: dkf tags: dkf-colored-output | |
09:40 | Factor out the code to run the demos from the demos themselves. check-in: 4abaf40456 user: dkf tags: trunk | |
07:18 | merge trunk check-in: 0ce9320ff8 user: dkf tags: dkf-callframe-impl | |
2017-04-24
| ||
13:57 | Add colour to banners printed by demo code. check-in: d124d0d754 user: dkf tags: dkf-colored-output | |
13:56 | Silence some 'puts' calls in non-debug mode. check-in: 93e7b76578 user: dkf tags: trunk | |
2017-04-22
| ||
15:37 | Generate correct Tcl line numbers in LLVM IR debugging info. check-in: 8cafd1d034 user: dkf tags: trunk | |
15:23 | Improve the generation of source information in warnings. check-in: 570f3ec2e5 user: dkf tags: trunk, minor change | |
12:37 | merge trunk check-in: 29b9c473e9 user: dkf tags: dkf-callframe-impl | |
2017-04-19
| ||
19:49 | Uncomment the test (which now passes) check-in: d91216509e user: dkf tags: trunk, minor change | |
19:41 | [7c599d4029] Switch to using typecodes in tcl function names so that we can have two versions of something with the same LLVM implementation type. check-in: 8414358591 user: dkf tags: trunk | |
2017-04-15
| ||
20:03 | Reinsert critical [source] calls lost in merge. check-in: 6064e6b5e8 user: dkf tags: dkf-callframe-impl | |
18:38 | merge trunk check-in: df89ed8fb8 user: dkf tags: dkf-callframe-impl | |
18:02 | Merge in changes to specializer order of operations so that node splitting does not create un-analyzed procedure instances. check-in: 982ee9ab19 user: kbk tags: trunk | |
17:57 | Cosmetic changes to nodesplit.tcl Closed-Leaf check-in: 22976e49d6 user: kbk tags: kbk-bug-7c599d4029 | |
17:34 | Finish renaming 'typeunroll' to 'nodesplit' check-in: 86e33b69b3 user: kbk tags: kbk-bug-7c599d4029 | |
17:27 | Start to expunge the name, 'typeunroll', in favour of 'nodesplit'. check-in: f504469463 user: kbk tags: kbk-bug-7c599d4029 | |
17:20 | Remove unused 'typeunroll' method check-in: 3d0f7aee3a user: kbk tags: kbk-bug-7c599d4029 | |
17:12 | Update the bug-7c599d4029 case to demonstrate problem with quadcode type algebra check-in: fa0b850c48 user: kbk tags: kbk-bug-7c599d4029 | |
16:48 | Refactor specializer so that the order of operations respects the fact that node splitting may change types of invoked procedures. check-in: 364120427c user: kbk tags: kbk-bug-7c599d4029 | |
15:30 | Make dead code elimination and copy propagation track whether they have changed the program. check-in: ea85afde7b user: kbk tags: kbk-bug-7c599d4029 | |
14:57 | merge trunk check-in: 4b9267fa69 user: kbk tags: kbk-bug-7c599d4029 | |
14:52 | Make 'cleanupNarrow' track whether it has modified the program. check-in: 9428105279 user: kbk tags: kbk-bug-7c599d4029 | |
11:58 | Move more of codegen.tcl into a separate file. Mark all files in codegen/ as UTF-8 for Emacs. check-in: f19b7c2814 user: dkf tags: trunk | |
2017-04-14
| ||
19:15 | Refactor worklist management in preparation for big refactor of node splitting check-in: 73b3d6f437 user: kbk tags: kbk-bug-7c599d4029 | |
16:12 | Further simplification to type unrolling: consolidate a method to find a single node to split and split it. check-in: 29e3d534df user: kbk tags: kbk-bug-7c599d4029 | |
16:00 | Remove misguided hack that tried to keep node splitting from running on incomplete type information check-in: 062b737ea8 user: kbk tags: kbk-bug-7c599d4029 | |
15:54 | Refactor 'removeSplitMarkers' out of 'typeunroll' check-in: 572788f99a user: kbk tags: kbk-bug-7c599d4029 | |
15:40 | Place cleanup optimizations into a single method check-in: a5d36d8a81 user: kbk tags: kbk-bug-7c599d4029 | |
15:10 | Refactor the placement of split markers out of typeunroll in preparation for bigger refactor of unrolling. check-in: 9dcbbe3832 user: kbk tags: kbk-bug-7c599d4029 | |
2017-04-08
| ||
19:53 | Don't fold a copy-to-temp together with a phi. check-in: 799df0d1dd user: kbk tags: kbk-bug-7c599d4029 | |
2017-03-25
| ||
15:13 | Adapt to changes to what instructions deal with CALLFRAMEs and add some more diagnostic warnings. check-in: c32e63b7cc user: dkf tags: dkf-callframe-impl | |
08:14 | merge trunk check-in: 23ec9d57a9 user: dkf tags: dkf-callframe-impl | |
08:13 | A bunch of corrections to support functions, developed originally on the dkf-callframe-impl branch. check-in: 482ae5b3be user: dkf tags: trunk | |
06:34 | More work on type conversions. check-in: 4e1c23c371 user: dkf tags: dkf-callframe-impl | |
2017-03-22
| ||
08:44 | Fix silly mistakes and change to arguments to 'return'. check-in: 6dbda5c9fe user: dkf tags: dkf-callframe-impl | |
06:25 | Rewrite the injected printers to use Tcl's API usually, for better output. check-in: ac26b5fb55 user: dkf tags: not working, dkf-callframe-impl | |
2017-03-19
| ||
07:18 | merge callframe branch; code is broken by this once again check-in: 021b966ed9 user: dkf tags: not working, dkf-callframe-impl | |
06:58 | And getting the reference count handling right seems to make it work. check-in: 250e218e6a user: dkf tags: dkf-callframe-impl | |
2017-03-18
| ||
19:04 | With a little help from that code, we've passed a test! More still to do... check-in: 15ed35ed76 user: dkf tags: not working, dkf-callframe-impl | |
17:38 | Critical fix to implementation of offsetof method. check-in: c5454c155a user: dkf tags: trunk | |
17:36 | Import interesting bits from dkf-global-read branch check-in: b32f55a148 user: dkf tags: dkf-callframe-impl | |
16:58 | No longer crashes... check-in: 88d1d542ba user: dkf tags: not working, dkf-callframe-impl | |
2017-03-17
| ||
09:24 | Threading the information more to where it belongs. check-in: 748311765b user: dkf tags: not working, dkf-callframe-impl | |
06:26 | Starting to assemble the metadata during module initialisation. check-in: 06b1dc1092 user: dkf tags: not working, dkf-callframe-impl | |
2017-03-14
| ||
16:01 | Merge trunk: peephole optimization of 'copy to variable from temp' Closed-Leaf check-in: 24c1c594d9 user: kbk tags: callframe | |
15:59 | Peephole optimization for 'copy to variable from temp' check-in: 5d203eae6b user: kbk tags: trunk | |
03:37 | Merge trunk - change to fix small bug that made copy propagation violate Conventional SSA check-in: ce19fcbe9a user: kbk tags: callframe | |
03:36 | Fix typo that caused some killing assignments to be missed, violating Conventional SSA check-in: 1a0a2c2bdc user: kbk tags: trunk | |
01:34 | Merge trunk: rename temps whose live ranges do not intersect, allowing for better copy propagation. check-in: 6ac5b3d569 user: kbk tags: callframe | |
01:33 | Rename temps whose live ranges do not intersect, to allow for more aggressive copy propagation. check-in: 1a0e986689 user: kbk tags: trunk | |
2017-03-13
| ||
03:46 | Merge trunk, to get code that has better source variable identification and control of live ranges. Fix a bug in 'widen' that crashed on 'return' if a return value needed to be widened. check-in: a63f47c0b2 user: kbk tags: callframe | |
02:52 | Merge in changes to copy propagation that force source variable names to be preserved and ensure that at most one version of any value is live at any point in the program (the Conventional SSA property). check-in: 200cbdce60 user: kbk tags: trunk | |
02:47 | Adjust copy propagation to kill the maximum number of copies that will still preserve the property that no variable's live range crosses a phi for another copy of that variable (Conventional-SSA form). Performance of 'impure' and the FlightAware benchmarks is now restored. Closed-Leaf check-in: 4cefa69f56 user: kbk tags: kbk-refactor-copyprop | |
2017-03-12
| ||
21:04 | Rearrange copy propagation so that source variables are always identified. Still has a performance bug in that safe copies around 'instanceOf' and 'narrowToType' are not folded. check-in: c98c9ec9cc user: kbk tags: kbk-refactor-copyprop | |
09:00 | Use more of Tcl's machinery. Actually do the variable placement. check-in: 3abe56cd62 user: dkf tags: not working, dkf-callframe-impl | |
2017-03-11
| ||
21:03 | Preserve variable names through widening operations check-in: 85ac9e1d12 user: kbk tags: trunk | |
17:45 | D'oh! Make the translator keep track of the name of the proc it's compiling! check-in: c2a8ca6a10 user: kbk tags: trunk | |
10:26 | Working towards frame creation. check-in: 53a1ec6206 user: dkf tags: not working, dkf-callframe-impl | |
08:34 | Add debug decls. check-in: 8abd4c694a user: dkf tags: not working, dkf-callframe-impl | |
08:17 | Push the frame handling code through another level of the code generator. check-in: b4f6d411fd user: dkf tags: not working, dkf-callframe-impl | |
2017-03-05
| ||
20:25 | Fix things that recent changes broke. check-in: a7112f0b47 user: dkf tags: minor change, not working, dkf-callframe-impl | |
12:24 | merge callframe branch check-in: 25977eee2c user: dkf tags: dkf-callframe-impl | |
04:41 | support for [regsub] check-in: 825e74e8e3 user: kbk tags: callframe | |
04:03 | Add partial support for [lsort] check-in: c5ce4dc2c0 user: kbk tags: callframe | |
2017-03-04
| ||
20:55 | Add support for [dict keys] and [regexp]. Move the store-load peephole optimization out of 'narrow' into 'cleanupCallFrameMotion' because doing it early misses opportunities to kill 'moveFromCallFrame' instructions. check-in: bf8242a174 user: kbk tags: callframe | |
17:06 | Fix some overlooked callframe refs in 'returnCode' and 'returnOptions' check-in: 56516707ae user: kbk tags: callframe | |
16:37 | Remove actual I/O from the callframe demo, and add missing tcl::dict::values to the builtin command table check-in: d619516e22 user: kbk tags: callframe | |
16:25 | merge trunk; fix channel leak in 'parseBuiltinsTxt' demo check-in: 32ceda9d40 user: kbk tags: callframe | |
16:18 | merge trunk Closed-Leaf check-in: 826deb31f4 user: kbk tags: kbk-impure | |
16:15 | 'invoke', by default, should result in FAIL STRING check-in: a487af5c87 user: kbk tags: trunk | |
16:12 | Remove some FIXME comments from stuff that's fixed. check-in: dc0c58c363 user: kbk tags: trunk | |
2017-02-28
| ||
04:13 | Add new files missing from previous commit check-in: 72d2924bfd user: kbk tags: callframe | |
04:07 | Add a pass that removes 'moveToCallFrame' and 'moveFromCallFrame' for variables that are known not to be consumed by/produced in a given invocation. check-in: 4aac9ac511 user: kbk tags: callframe | |
2017-02-26
| ||
01:52 | Merge trunk: implementations of 'resolveCmd' and 'originCmd' quadcodes. check-in: dc7a238870 user: kbk tags: callframe | |
01:51 | Merge trunk: implementations of 'resolveCmd' and 'originCmd' quadcodes. check-in: 4239bec35b user: kbk tags: kbk-impure | |
01:48 | Added implementations of 'resolveCmd' and 'originCmd' quadcodes (and test cases), which will be needed for callframe testing. check-in: 0c99bf7722 user: kbk tags: trunk | |
2017-02-25
| ||
18:02 | Working towards a first implementation of callframes. check-in: 86ec362dc6 user: dkf tags: not working, dkf-callframe-impl | |
18:01 | Type corrections in docs. check-in: ce1eada8ce user: dkf tags: callframe | |
15:49 | More updates to my notes. check-in: bf86b5f2f4 user: dkf tags: callframe | |
2017-02-23
| ||
15:48 | Updated the notes. check-in: 036dccb0dc user: dkf tags: callframe | |
2017-02-22
| ||
21:18 | add table of builtin functions check-in: 0283626768 user: kbk tags: callframe | |
04:39 | Answer some of Donal's questions in his 2017-02-11 note regarding callframes check-in: a1f5d76f1b user: kbk tags: callframe | |
04:34 | Correct return type of 'invoke' operations in the presence of callframes check-in: 43ddda402f user: kbk tags: callframe | |
04:09 | Fix a bug where the 'return' operation tried to widen the callframe rather than the return value check-in: bcbb7c22ef user: kbk tags: callframe | |
03:43 | Merge current IMPURE branch check-in: 19123d148a user: kbk tags: callframe | |
03:40 | Merge mark. check-in: fd465a19d6 user: kbk tags: kbk-impure | |
03:40 | Merge changes for IMPURE parameters and to remove premature type unrolling. check-in: 685bd8a5fb user: kbk tags: trunk | |
03:39 | Remove premature type unrolling from the specialiser. Add code to handle transmission of IMPURE parameters to compiled procedures. check-in: c83e14fa23 user: kbk tags: kbk-impure | |
2017-02-20
| ||
16:36 | merge mark check-in: 077a7aaf73 user: kbk tags: kbk-impure | |
16:35 | Merge changes to generate thunks for the EMPTY return type and to keep hexadecimal type codes from showing up in contexts where they're compared as strings. check-in: c5410ff1b2 user: kbk tags: trunk | |
16:34 | Keep hexadecimal typecodes from leaking out of types.tcl, and add thunk generation for the EMPTY return type. (Allows for some additional demonstration codes.) check-in: a07514e624 user: kbk tags: kbk-impure | |
03:40 | merge mark check-in: 2589e4c7f1 user: kbk tags: kbk-impure | |
03:40 | Merge kbk-impure branch - basic block cloning is now implemented, giving significant speedup to cases like 'xsum2', 'msrange' and 'impure', where values of different types converge in the program. check-in: 053f97df49 user: kbk tags: trunk | |
03:14 | deadcode: be much more aggressive about pruning worthless phi operations. check-in: daa3fdec8b user: kbk tags: kbk-impure | |
2017-02-19
| ||
22:47 | Fix bugs in resolving interprocedural dependencies during loop unrolling check-in: 2352a59d7f user: kbk tags: kbk-impure | |
20:27 | Avoid runaways by constraining how many copies may be introduced by splitting a basic block check-in: 54c6d0489d user: kbk tags: kbk-impure | |
2017-02-15
| ||
20:54 | All test cases pass once more, but only by virtue of a hideous hack inside typeunroll to keep it below a certain number of splits. The five cases, lcmRange, linesearch::getAllLines2, qsort, wordcounter2 and xsum2 all appear to go into runaway behaviour, growing program size exponentially (and perhaps not even converging). check-in: 68b8d45ad1 user: kbk tags: kbk-impure | |
03:57 | NOT WORKING: Fix bugs to make a few more test cases compile check-in: 4bdc54e7fd user: kbk tags: kbk-impure, not working | |
2017-02-13
| ||
03:27 | Allow a few more procs from ::linesearch check-in: 13076603e0 user: kbk tags: kbk-impure, not working | |
02:58 | NOT WORKING: continued work on loop unrolling for data type analysis. Passes many more tests, and speeds up 'impure' by 30x check-in: 97d781d5db user: kbk tags: kbk-impure, not working | |
2017-02-12
| ||
04:06 | NOT WORKING: Further debugging of node splitting check-in: e2dd4e6ce1 user: kbk tags: kbk-impure, not working | |
2017-02-11
| ||
13:21 | Added some notes on implementing a CALLFRAME. check-in: 2cdefc473f user: dkf tags: callframe | |
2017-02-08
| ||
01:35 | NOT WORKING: considerably more work on node splitting, but not finished. check-in: 90db1fcf7d user: kbk tags: kbk-impure, not working | |
2017-01-25
| ||
04:04 | Basic block splitting - identify the initial sets. Much more work to go here! check-in: 0618577d44 user: kbk tags: kbk-impure | |
01:35 | merge further work on IMPURE handline check-in: 2eaa1486ab user: kbk tags: callframe | |
2017-01-24
| ||
02:04 | Merge mark check-in: 231dad0bc1 user: kbk tags: kbk-impure | |
02:03 | Merge in changes to eliminate the BOOLWORD data type in favour of IMPURE BOOLEAN check-in: c9dfa64f05 user: kbk tags: trunk | |
02:00 | Remove the BOOLWORD data type - it's just an IMPURE BOOLEAN check-in: b0fee59756 user: kbk tags: kbk-impure | |
2017-01-22
| ||
06:37 | oops: remove console dribble check-in: 3dbb7d1baf user: kbk tags: minor change, kbk-impure | |
06:23 | Separate the string-compare and numeric-compare parts of comparison operators, and correct the type errors that arise. check-in: 46cc1a89c6 user: kbk tags: kbk-impure | |
2017-01-21
| ||
19:17 | Merge mark check-in: cb098090c6 user: kbk tags: kbk-impure | |
19:17 | Merge in the implementation of IMPURE objects. check-in: a89a734883 user: kbk tags: trunk | |
19:14 | Complete (?) the implementation of the 'IMPURE' type. Restore 'uplus', which must have the side effect of purifying an impure argument. Suspect that there may be memory leakage in the 'impure' handling? check-in: 3568a798b4 user: kbk tags: kbk-impure | |
17:40 | Now [uplustest] runs, but fails as unary plus semantics not right yet. check-in: 4d48a00e0e user: dkf tags: kbk-impure | |
2017-01-19
| ||
09:03 | Work around incompatibility with some revisions of Tcl 8.6. check-in: d430ba6853 user: dkf tags: minor change, kbk-impure | |
2017-01-17
| ||
03:49 | Remove a little bit of console dribble, and add the callframe to 'return' operations. check-in: 87f91db133 user: kbk tags: callframe | |
2017-01-16
| ||
19:48 | merge kbk-impure check-in: 5c0d321e61 user: kbk tags: callframe | |
19:47 | merge trunk check-in: efcb016e7f user: kbk tags: kbk-impure | |
2017-01-15
| ||
15:50 | Deprecate @debug-value and switch to using named sections for the module init function. check-in: c99a5954ba user: dkf tags: trunk | |
12:57 | Generate llvm.dbg.value annotations by implication. check-in: 9f60d78d45 user: dkf tags: trunk | |
2017-01-14
| ||
10:12 | merge trunk check-in: 8bbe3907b7 user: dkf tags: kbk-impure | |
2017-01-13
| ||
13:52 | Greatly improved generation of debugging metadata, supporting LLVM 3.8. check-in: 28824a512e user: dkf tags: trunk | |
13:47 | merge trunk Closed-Leaf check-in: 8aceacd07a user: dkf tags: dkf-llvm3.8-metadata-broken | |
13:45 | Much better mechanism for generation of valid debugging metadata, now with fewer hacks! check-in: 7eecd30e91 user: dkf tags: dkf-llvm3.8-metadata-broken | |
13:44 | Fix for generation of debugging information. Now correct, provided right llvmtcl version used. Closed-Leaf check-in: 8fcb75bc5f user: dkf tags: dkf-towards-doing-debugging-right | |
2017-01-11
| ||
22:16 | Working towards getting debug metadata handling done the LLVM way. check-in: 46a8ade53d user: dkf tags: dkf-towards-doing-debugging-right | |
2017-01-09
| ||
04:22 | merge trunk; improve tracing; make quadcode.tcl try to find out information about builtins check-in: 8e4200acb3 user: kbk tags: callframe | |
03:28 | SSA generation must not fail in the presence of unreachable code. check-in: 901523ebae user: kbk tags: kbk-impure | |
2017-01-08
| ||
02:04 | Merge mark check-in: c042455d72 user: kbk tags: callframe | |
02:03 | Merge trunk check-in: d91c391c1d user: kbk tags: kbk-impure | |
02:02 | Pass quadcode logging options through the LLVM configuration. check-in: 1f2861675f user: kbk tags: trunk | |
01:34 | merge trunk check-in: ca2e310318 user: kbk tags: kbk-impure | |
01:28 | Turn off generation of @debug-value for now. It messes up dead variable elimination, and is pretty worthless since the code issuer doesn't understand it. check-in: 71bac167a7 user: kbk tags: trunk | |
2017-01-07
| ||
19:19 | Add store-load peephole optimization to the callframe management check-in: 996ca57a46 user: kbk tags: callframe | |
2017-01-05
| ||
04:32 | Initial sketch of callframe management at 'invoke' - not working, but at least shows the opcodes check-in: 02f28f9bf9 user: kbk tags: callframe | |
2017-01-04
| ||
01:59 | Add notes about how constant jumps SHOULD be handled. check-in: 0a03f41f22 user: kbk tags: kbk-impure | |
01:25 | merge trunk, remove console dribble check-in: 7da15439d0 user: kbk tags: kbk-impure | |
01:21 | Make interprocedural specialization and varargs work again. 'uplustest' is now the only demo failing to build (because it needs FAIL IMPURE). check-in: d248a45c23 user: kbk tags: kbk-impure | |
2017-01-03
| ||
17:06 | Put helper procedures for types where they belong. check-in: 1636394572 user: dkf tags: dkf-llvm3.8-metadata-broken | |
02:53 | Major refactoring of quadcode optimization, in preparation for node splitting. STILL DOES NOT WORK - at least three bugs: (a) varargs are broken, (b) interprocedural analysis is broken, (c) FAIL IMPURE is not handled. Demo cases depending on these bugs are commented out in the commit. check-in: e20a4d618d user: kbk tags: kbk-impure | |
2017-01-02
| ||
17:33 | Add in support for debug info about (C) arrays, and reorganise the code to declare the Tcl API types. check-in: 299e27483e user: dkf tags: dkf-llvm3.8-metadata-broken | |
2017-01-01
| ||
19:11 | merge trunk check-in: 0cb5935dc5 user: dkf tags: dkf-llvm3.8-metadata-broken | |
19:07 | Rearranging where debugging code belongs. check-in: c47e1105be user: dkf tags: trunk | |
2016-12-31
| ||
14:15 | Fix by explicit installation of the function list. Requires llvmtcl update. check-in: 3e86ce7d9a user: dkf tags: dkf-llvm3.8-metadata-broken | |
00:25 | This exposes the brokenness of the debugging metadata handling. check-in: 6f7dbbbeba user: dkf tags: dkf-llvm3.8-metadata-broken | |
00:20 | Avoid problems with debug metadata in LLVM 3.8 by stripping it. Will do as interim approach. check-in: 883e2c849b user: dkf tags: trunk | |
2016-12-30
| ||
01:04 | Fix a typo in a paper reference [SG95] for [SGL95]. check-in: 70256622bf user: kbk tags: kbk-impure | |
01:00 | Merge in initial code for IMPURE data. This branch now needs work to generate code for 'NUMERIC BOOLEAN' - representing an acceptable argument to [jumpTrue], [jumpFalse] and [not]. check-in: 784b0f7e6f user: kbk tags: kbk-domain-check | |
00:48 | Merge mark check-in: 844f3bedb5 user: kbk tags: kbk-impure | |
00:47 | Merge code for IMPURE objects. Some tests become slower. See doc/20161227impure-plan.txt for a plan to make them faster again. check-in: 08d9daefec user: kbk tags: trunk | |
00:29 | Sreedhar and Gao algorithm for iterated dominance frontier. check-in: 6d1c23a91a user: kbk tags: kbk-impure | |
2016-12-29
| ||
17:57 | Fix crash in dropping refs to impure objects check-in: 473ed73891 user: kbk tags: kbk-impure | |
17:41 | Stop drooling on the console. check-in: 8a09c39b5b user: kbk tags: kbk-impure | |
17:38 | Add level number in dominator tree, not yet used for anything check-in: 8c73f85e04 user: kbk tags: kbk-impure | |
17:27 | Merge trunk and resolve conflicts in debugging data generation check-in: e142ea9b6b user: kbk tags: kbk-impure | |
16:53 | Add working notes on IMPURE - which implies modification to an SSA flowgraph, a complicated bit of work check-in: 12c4ef44d8 user: kbk tags: trunk | |
16:51 | Add missing SVG version of the type algebra diagram check-in: eebdf5b930 user: kbk tags: trunk | |
2016-12-28
| ||
18:05 | Cleaning up the debugging type system a bit. check-in: ffaa1a08a4 user: dkf tags: trunk | |
2016-12-27
| ||
16:46 | Documenting the debugging API better. Some minor cleanup. check-in: afb4918584 user: dkf tags: trunk | |
2016-12-22
| ||
16:33 | Further improvement to debugging generation, making it reasonably accurate for the standard library. check-in: 32b60b6507 user: dkf tags: trunk | |
08:31 | Improve the generation of debugging information for thunks, to work around LLVM 3.8 issue. check-in: fd2a22a4d8 user: dkf tags: trunk | |
2016-12-18
| ||
03:03 | Add an IMPURE type schema, which forces the system to remember the string rep of a noncanonical object. check-in: cd0f30783b user: kbk tags: kbk-impure | |
2016-12-16
| ||
18:46 | Add some missing working notes from early 2016 check-in: 04d9a61297 user: kbk tags: trunk | |
01:43 | Reapply changes from [082065b709] - basic type inference for Boolean values check-in: 53f0b13f8a user: kbk tags: kbk-domain-check | |
2016-12-15
| ||
22:46 | Introduce code to keep track of the list of commands being compiled. Remove insane 'upvar 3' that accessed the list' check-in: 3f948e7bcd user: kbk tags: trunk | |
20:56 | Add flightawarebench::test 5 5 2 to the slow demos check-in: e983950548 user: kbk tags: trunk | |
2016-12-11
| ||
16:36 | Ensure that we error on instructions issued after a terminator. check-in: 01ca11f042 user: dkf tags: trunk | |
2016-12-01
| ||
08:29 | Rearrange where IncrRefCount happens in strcat code. check-in: 8bb3474f9d user: dkf tags: trunk, minor change | |
2016-11-30
| ||
20:39 | merge trunk Leaf check-in: 6bd55c52f5 user: dkf tags: dkf-global-read | |
20:17 | Added more debugging code, identifying how much is still to be done on this branch... Leaf check-in: d2657b9f24 user: dkf tags: dkf-compile-into-clock | |
20:05 | merge trunk check-in: 26ad499395 user: dkf tags: dkf-compile-into-clock | |
20:04 | merge trunk check-in: 50d299e40c user: dkf tags: more-flightaware-examples | |
20:03 | Correction to refcount management in strcat. check-in: 6fdc75a4c4 user: dkf tags: trunk | |
2016-11-28
| ||
09:17 | Super-experimental work on compiling into [clock]. check-in: 360d4b8996 user: dkf tags: dkf-compile-into-clock | |
09:14 | merge trunk check-in: c2f49249b6 user: dkf tags: dkf-global-read | |
2016-11-27
| ||
19:06 | merge trunk check-in: eb1d8d81a9 user: dkf tags: more-flightaware-examples | |
19:06 | Use the right level parameter... check-in: d4eb573de6 user: dkf tags: trunk | |
18:59 | Improve inter-procedural invoke handling to stop it from leaking into third-party code. check-in: 1008f066e8 user: dkf tags: trunk | |
17:48 | More tinkering with demo examples. check-in: d0a635f7f2 user: dkf tags: more-flightaware-examples | |
2016-11-26
| ||
18:42 | First hack at code to build a DLL, working towards a non-JIT compiler. check-in: 3c522cf2bf user: dkf tags: dkf-optimization-experiment | |
17:56 | merge trunk check-in: 3aa425ef03 user: dkf tags: dkf-optimization-experiment | |
17:55 | Committing some more of the flightaware examples. Not yet optimized. check-in: 1093100800 user: dkf tags: more-flightaware-examples | |
16:37 | Corrections to object reference count management, noticeable with 'invoke'. check-in: 6011bb265b user: dkf tags: trunk | |
2016-11-20
| ||
13:37 | Tweak code generation path for [string cat] where first argument is a non-string. check-in: d66f906937 user: dkf tags: trunk | |
2016-11-19
| ||
11:06 | Extend Tcl API coverage to Tcl_Panic(). check-in: 80e23bd14a user: dkf tags: trunk | |
2016-11-17
| ||
16:30 | Fix bug in increment compilation. Working towards second of FlightAware performance challenges. check-in: d97e8922b0 user: dkf tags: trunk | |
2016-11-16
| ||
20:16 | Added mechanism to stop slow test cases from being normally run. check-in: 97730a8a55 user: dkf tags: trunk | |
20:03 | Added test case from the FlightAware benchmark suite. Fix bug found in testing. check-in: a951f54c8a user: dkf tags: trunk | |
14:01 | Added more test cases, work around bug that that exposed. check-in: eb9948752e user: dkf tags: trunk | |
2016-11-14
| ||
16:27 | More testing of calling out. Fix a couple of minor bugs exposed in the process. check-in: 269a1ff611 user: dkf tags: trunk | |
2016-11-12
| ||
14:57 | Added an example of sorting using quicksort. check-in: 589576287d user: dkf tags: trunk | |
13:35 | Added another example, necessesitating improvements to mod compilation. check-in: febaf76f23 user: dkf tags: trunk | |
2016-09-24
| ||
17:55 | merge trunk check-in: da941eeab2 user: dkf tags: dkf-global-read | |
17:54 | merge trunk Leaf check-in: a3653294b8 user: dkf tags: dkf-maybe-is-null | |
17:50 | Correct usage of getelementptr. Mostly cosmetic problems, but some latent bugs. check-in: 02c85466cb user: dkf tags: trunk | |
17:38 | merge trunk check-in: c12c7b2c67 user: dkf tags: dkf-maybe-is-null | |
15:18 | merge trunk check-in: 55b8981374 user: dkf tags: dkf-optimization-experiment | |
15:16 | merge trunk Leaf check-in: c85971a3a4 user: dkf tags: bignum | |
15:06 | merge trunk check-in: bf1f1bb7f1 user: dkf tags: dkf-global-read | |
15:01 | merge trunk check-in: eb2f5aae8b user: dkf tags: tcl-api | |
2016-09-20
| ||
08:32 | Add a couple more test cases. check-in: 231c6e85bc user: dkf tags: trunk, minor change | |
08:25 | [61ad268634] Make the non-string comparison operators behave correctly when applied to STRINGs that look numeric. check-in: a59d59c497 user: dkf tags: trunk | |
08:18 | merge trunk Closed-Leaf check-in: dd5594ecd8 user: dkf tags: bug-61ad268634 | |
07:30 | Some cleaning up of Call usage, constant handling and warnings. check-in: 01b9eac3dd user: dkf tags: trunk | |
2016-09-19
| ||
19:05 | Clean up some warning machinery. check-in: 4d1f961e4b user: dkf tags: bug-61ad268634 | |
17:13 | Fix collision in Tcl_Obj constant management. check-in: 4c4a5e72e5 user: dkf tags: bug-61ad268634 | |
2016-09-18
| ||
16:05 | Fixed some of the problems. check-in: bc5ee74861 user: dkf tags: bug-61ad268634 | |
11:53 | merge trunk check-in: 0b87c61aa2 user: dkf tags: bug-61ad268634 | |
11:52 | More neating up of call protocol. check-in: 327721c415 user: dkf tags: trunk, minor change | |
11:50 | Better performance. Triggering a bug elsewhere. check-in: ed9c4cfc98 user: dkf tags: bug-61ad268634 | |
11:21 | Semantically correct now, but performance stinks check-in: 48a7b57e01 user: dkf tags: bug-61ad268634 | |
11:03 | Demonstrate that comparisons are wrong when the type is believed to be STRING. check-in: 3ddaee4f10 user: dkf tags: bug-61ad268634 | |
10:58 | Remove some bits of junk. check-in: fc67fdb705 user: dkf tags: trunk, minor change | |
2016-09-16
| ||
08:57 | More factoring out of stuff. check-in: 40be7aa056 user: dkf tags: trunk | |
2016-09-13
| ||
15:56 | Remove detailed internal timing; the operations it studies are really fast now. check-in: ae2ba52b89 user: dkf tags: trunk | |
2016-09-10
| ||
14:40 | Cleaning up code to be less squirrelly. Allow {} as alias for NULL in API calls. check-in: ee1b9692db user: dkf tags: trunk | |
12:39 | merge trunk check-in: 81129c0d62 user: dkf tags: tcl-api | |
12:38 | merge trunk check-in: 2a91bf77da user: dkf tags: dkf-global-read | |
2016-09-08
| ||
10:30 | Updated the README. check-in: ab5cc6c33b user: dkf tags: trunk, minor change | |