path: root/6/asm.h
AgeCommit message (Collapse)Author
2017-03-20Step by line in gdb.Ori Bernstein
I guess it's a good idea.
2017-01-08Dedup const initialization.Ori Bernstein
2017-01-02Fix clang warnings.Ori Bernstein
Apparently enums getting promoted to ints in va_start() is undefined behavior. This is stupid.
2016-12-06Grow the adjacency lists incrementally.Ori Bernstein
We don't need to waste *THAT* much RAM on them.
2016-12-04Reset register numbers.Ori Bernstein
In our register allocator, we create a matrix that's got nreg*nreg bits in it. When the register numbers get big, this matrix also can get big. We can't do anything about that in giant functions, but if we have lots of smaller functions, we can clear the value before generating the code, keeping the sizes of the matrixes and bit sets in check. This speeds up builds significantly in files with thousands of functions.
2016-08-20Print the function name when debug dumping RAOri Bernstein
2016-05-08Use uvlong.Ori Bernstein
Format specifiers for precisely sized types are ugly.
2016-03-10Fix build on OSX, by deduping syms correctly.Ori Bernstein
With macho, we need to set a different attribute for asm than we need on ELF targets.
2016-03-05Add comdat support.Ori Bernstein
Start of work for deduping symbols.
2016-02-20Start refactoringOri Bernstein
Split flattening and lowering.
2015-11-18Fix BSS on OSX.Ori Bernstein
Our alignment was too big, and we really didn't need to leading '_'. In fact, we didn't even need zero blobs.
2015-11-17Put empty symbols in bss, and use .fill directives.Ori Bernstein
We don't need to put zero bytes into the binary, and we don't need to generate thousands of .byte directives.
2015-11-17MEGAPATCH: Tabification.Ori Bernstein
Tabs > spaces. By 4 spaces, to be precise. Let's use them.
2015-11-06Shuffle around functions.Ori Bernstein
Move some code into the frontend so the middle end can call it.
2015-09-27Don't index directly off of %rax.Ori Bernstein
We use it for function returns. We also use it for environment of called closures. This means we clobbered it. Oops.
2015-09-27Working closures.Ori Bernstein
2015-09-26Separate out the concepts of code and func ptrs.Ori Bernstein
In order to pass around functions with environments for closures, we need to refer to the type of a function pointer, as well as the type of code. This is ugly. When I rewrite the backend I should change it.
2015-09-26Fix up constant initialization a bit.Ori Bernstein
2015-09-25Refer to captured vars through env ptrOri Bernstein
The other half to populate an env pointer isn't there, so we haven't enabled this.
2015-09-16Add futex op constants.Ori Bernstein
Needed for Linux libthread.
2015-08-23Merge branch 'peephole-opt'Ori Bernstein
2015-08-21Get closer to the C ABIOri Bernstein
2015-08-19Start using mostly caller save ABI.Ori Bernstein
2015-06-28Implement '__init__' functions.Ori Bernstein
2015-06-27Factor out blob generation.Ori Bernstein
The logic for our type layout is common between platforms.
2015-06-22Get closer to a working Plan 9 build on new 6m.Ori Bernstein
2015-06-15Remove a few leaks.Ori Bernstein
This isn't really important, but it also cuts memory usage from 60 to 15 megs.
2015-05-22Add type size and other info.Ori Bernstein
2015-05-18Fix build on OSX.Ori Bernstein
A couple of symprefix doublings and type redefinitions.
2015-05-18Improve type generation code.Ori Bernstein
This should be simpler to port to plan 9, and the data should be more compact.
2015-03-26Generate type descriptions for valists.Ori Bernstein
the formatting test is still broken, but everything else seems to be working.
2015-01-25Clear structs.Ori Bernstein
When creating stack structs, clear them. TODO: only clear uninitialized values.
2014-12-26Handle localness of labels a bit differently.Ori Bernstein
use asmname() more liberally. it does the right thign.
2014-12-25Fix a few more bad asm issues on plan9.Ori Bernstein
Mostly to do with insn naming and symbol visibility.
2014-12-21First attempt at supporting plan9 assemblers.Ori Bernstein
2014-12-13Add plan9 instruction formats.Ori Bernstein
Work towards a plan9 port. This commit also fixes a bug with strings that contain '\0'. The commits got tangled, and I'm too lazy to detangle them.
2014-10-08Pull out typeinfo.c from simp.cOri Bernstein
2014-10-08Shuffle a few more functions.Ori Bernstein
2014-10-08Pull out actual code writing into it's own file.Ori Bernstein
2014-10-07Add '-c' (extracheck) option to mcOri Bernstein
To enable flaky checks. Checks guarded by this will eventually get enabled by default.
2014-10-07Keep track of source files as well as line numbers.Ori Bernstein
This makes our error messages better *AND* makes it easier to provide good debug info later.
2014-10-07Work on trimming BBs and inseting Orets.Ori Bernstein
This is to enable work on checking BBs for missed returns. This seems to be working, but is overzealous, and will error out when we try to call terminating functions like die().
2014-09-18Save and restore xmm registers correctlyOri Bernstein
Generate instructions with the right mode and all that good stuff.
2014-09-18Correctly save/restore xmm registers.Ori Bernstein
Our allocator wasn't acutally saving them, so we clobbered.
2014-06-18Optimize nodemoves()Ori Bernstein
Maintain sets for the instruction, so that we don't have to do lots of O(n) lookups. Those are slow.
2014-06-16Fix alignment on structs.Ori Bernstein
We were aligning big aggregates to 8, instead of to their most strict member. Oops.
2014-06-04Optimize the register allocator.Ori Bernstein
We don't need to iterate through lists to figure out which node a list is on. Store it in the node.
2014-05-25Make things slightly less O(maxreg)ishOri Bernstein
Use a dense vector for the adjacency list. This is slightly less stupid than using a sparse bit set.
2014-05-24Don't iterate over bit sets as much.Ori Bernstein
We shouldn't need O(n) bit set iteration when we can just keep a proper adjacency list.
2014-01-15Fix writing constant struct literalsOri Bernstein
We had alignment and padding issues. Fixed.