mu-impl-fast merge requestshttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests2019-08-07T14:30:03+10:00https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/63implemented and tested instructions and intrinsics (except deadline, gc)2019-08-07T14:30:03+10:00Javad Ebrahimian Amirijavad.amiri@anu.edu.auimplemented and tested instructions and intrinsics (except deadline, gc)https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/62Rtmu dev2019-08-01T18:55:07+10:00Javad Ebrahimian Amirijavad.amiri@anu.edu.auRtmu devhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/61Quick-sort works using ealloc/delete on rtmu2019-06-26T18:22:30+10:00Javad Ebrahimian Amirijavad.amiri@anu.edu.auQuick-sort works using ealloc/delete on rtmuJavad Ebrahimian Amirijavad.amiri@anu.edu.auJavad Ebrahimian Amirijavad.amiri@anu.edu.auhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/60added timeval type, gettime and settime2019-06-24T09:36:46+10:00Javad Ebrahimian Amirijavad.amiri@anu.edu.auadded timeval type, gettime and settimeJavad Ebrahimian Amirijavad.amiri@anu.edu.auJavad Ebrahimian Amirijavad.amiri@anu.edu.auhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/59rtmu dev2019-06-21T15:11:00+10:00Javad Ebrahimian Amirijavad.amiri@anu.edu.aurtmu devrtmu dev repo is now in a mergeable statertmu dev repo is now in a mergeable stateJavad Ebrahimian Amirijavad.amiri@anu.edu.auJavad Ebrahimian Amirijavad.amiri@anu.edu.auhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/58Update rtmu-dev2019-03-22T12:33:05+11:00Javad Ebrahimian Amirijavad.amiri@anu.edu.auUpdate rtmu-devJavad Ebrahimian Amirijavad.amiri@anu.edu.auJavad Ebrahimian Amirijavad.amiri@anu.edu.auhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/57RTMu dev to Master2019-02-28T11:40:44+11:00Javad Ebrahimian Amirijavad.amiri@anu.edu.auRTMu dev to MasterMerges the changes which make the master branch pass these tests:
- test_api
- test_compiler
- test_ir
- test_runtimeMerges the changes which make the master branch pass these tests:
- test_api
- test_compiler
- test_ir
- test_runtimeJavad Ebrahimian Amirijavad.amiri@anu.edu.auJavad Ebrahimian Amirijavad.amiri@anu.edu.auhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/55GC rewrite2017-11-28T13:58:23+11:00Yi LinGC rewrite* new object/type encoding
* tiny immix space, normal immix space, freelist space, and immortal space have different encoding
* a global type table
* rewrote freelist allocator
* support heap growth
* reduced gc initilaisation time
Ther...* new object/type encoding
* tiny immix space, normal immix space, freelist space, and immortal space have different encoding
* a global type table
* rewrote freelist allocator
* support heap growth
* reduced gc initilaisation time
There are some left-over work recorded here: https://gitlab.anu.edu.au/mu/mu-impl-fast/issues/93https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/54using a better freeze heuristics, and fix code for memmap crate (their API ch...2017-10-31T12:01:38+11:00Yi Linusing a better freeze heuristics, and fix code for memmap crate (their API changed)https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/53Primordial threadlocal2017-10-31T16:42:07+11:00Isaac Garianoisaac@ecs.vuw.ac.nzPrimordial threadlocalhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/51freeze heuristics, slight change to tree gen2017-10-24T12:44:44+11:00Yi Linfreeze heuristics, slight change to tree gen* a freeze heuristic that prioritise freezing less frequently used nodes
* in tree generation, always put instructions that yield `int<1>` as child
* use `P<TreeNode` instead of `Box<TreeNode>` for block body
* def-use pass records defin...* a freeze heuristic that prioritise freezing less frequently used nodes
* in tree generation, always put instructions that yield `int<1>` as child
* use `P<TreeNode` instead of `Box<TreeNode>` for block body
* def-use pass records definitions of each SSA variables (not used for now)https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/50merge with develop2017-10-20T11:27:00+11:00Yi Linmerge with develop* overall improvements on generated code performance
* swapstack implementation
* machine-level loop analysis
* bug fixes and improvements in register allocation (more heuristics regarding loops)
* bug fixes and improvements in both x86_...* overall improvements on generated code performance
* swapstack implementation
* machine-level loop analysis
* bug fixes and improvements in register allocation (more heuristics regarding loops)
* bug fixes and improvements in both x86_64 and aarch64 backends
* bug fixes in a few passes (peephole optimisations, branch adjustment)
* switching CI to use native shell (instead of docker)
* performance CI with `mubench` (http://squirrel.anu.edu.au/mubench/)
* some initial preparation to support SEL4-rumprun
* IR validation
* Output for Mu IR complies with `muc` text formhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/49add a tool 'trace-filter' to help viewing Zebu trace2017-10-20T10:06:38+11:00Yi Linadd a tool 'trace-filter' to help viewing Zebu tracehttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/48Tree gen fix2017-10-20T09:24:50+11:00Isaac Garianoisaac@ecs.vuw.ac.nzTree gen fixhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/47Develop2017-10-19T13:37:33+11:00Isaac Garianoisaac@ecs.vuw.ac.nzDevelophttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/46multiple fixes and improvements2017-10-18T11:06:26+11:00Yi Linmultiple fixes and improvements* machine-level loop analysis (dom tree, loop nest tree, etc)
* changed rules on tree generation at IR level (only put nodes whose only use immediately follows their definition as children)
* more properly deal with addressing modes on x...* machine-level loop analysis (dom tree, loop nest tree, etc)
* changed rules on tree generation at IR level (only put nodes whose only use immediately follows their definition as children)
* more properly deal with addressing modes on x86 backend
* fixed bugs in register allocator
* check invariants in register allocator (by default, it is turned off)
* new heuristics about spilling, and color assignment
* fixed mov generation from go-to-with-values form that may move a value to itself (when a block branches to itself)https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/45Ir formatting2017-10-13T15:58:57+11:00Isaac Garianoisaac@ecs.vuw.ac.nzIr formattingMade some minor improvements (mainly the addition of a '___funcdecls.uir' file, and made the global '.uir' files be output before the main compilation starts.Made some minor improvements (mainly the addition of a '___funcdecls.uir' file, and made the global '.uir' files be output before the main compilation starts.https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/44Ir formatting2017-10-11T00:16:29+11:00Isaac Garianoisaac@ecs.vuw.ac.nzIr formattingIr formatting is now almost identical to what MUC expects (theirs a slight problem with 'extern's...)
Compilation now emits the following:
* f.uir containing the original IR for each function f
* ___types.uir contains typedefs for all s...Ir formatting is now almost identical to what MUC expects (theirs a slight problem with 'extern's...)
Compilation now emits the following:
* f.uir containing the original IR for each function f
* ___types.uir contains typedefs for all structs and hybrids
* ___globals.uir contains global definitions for each global cell
* the ir .dot files now have a very MUC'like IR representation
You should be able to recreate your mu boot image with the *.uir files (ofcourse VM arguments and heap state are not preserved, when MUC supports these features in text format, I will add output to Zebu).
Their are some instructions that won't display correct IR, namely those whose 'type parameters' depend on the types of the results (e.g. a swapstack with a ret_with clause)https://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/43allow REFCAST for global2017-10-09T10:46:54+11:00Yi Linallow REFCAST for globalhttps://gitlab.anu.edu.au/mu/mu-impl-fast/-/merge_requests/42Debug exceptions2017-10-04T10:10:20+11:00Isaac Garianoisaac@ecs.vuw.ac.nzDebug exceptionsI added more helpful debug info for exceptions (only when 'MU_LOG_LEVEL=debug' or greater of course), as well as changing the way inlinining works with calls...
(it will now not inline a call whose body has a potentially throwing instru...I added more helpful debug info for exceptions (only when 'MU_LOG_LEVEL=debug' or greater of course), as well as changing the way inlinining works with calls...
(it will now not inline a call whose body has a potentially throwing instruction, if the call has an exception clause, ofcourse we could still inline these, but doing so correctly will require some work and allot of thought...)