Bill Currie
2f3ca9d9e4
[qwaq] Clean up the hierarchy
...
I think I've finally figured out what I want the core hierarchy to be.
Right now, it's just the two classes: View and Window (derived from
View). Window has a Group, and Group is just a collection of Views that
it manages. QwaqApplication is just an object but like a Window, it has
a Group of views.
View
Window has a Group
Group contains Views
QwaqApplication has a group
More work needs to be done on drawing and event handling, but things are
working again.
2020-03-19 11:32:44 +09:00
Bill Currie
b16093a533
[qwaq] Split out Array(Group) interface
2020-03-19 11:04:02 +09:00
Bill Currie
7447854d7c
[qfcc] Recover from syntax errors in abstract_decl
2020-03-19 11:01:26 +09:00
Bill Currie
4c6e1b7fc4
[qfcc] Fix some uninitialized variable warnings
...
I really wish gcc would catch more issues when not optimizing.
2020-03-18 01:51:52 +09:00
Bill Currie
f6f6b2cba3
[qwaq] Doc the issue number for blit slug
2020-03-18 01:40:58 +09:00
Bill Currie
affadc3d25
[qwaq] Create protocols for DrawBuffer and TextContext
...
Plenty of flaws at the moment (casts to id :/), but the basic idea seems
to be ok.
2020-03-18 01:40:41 +09:00
Bill Currie
e5bc6dd8b6
[qwaq] Split Array(Group) into its own file
2020-03-18 01:12:23 +09:00
Bill Currie
0293d335d0
[qfcc] Mark known source def live for movep
...
This fixes ivar-struct-return (and qwaq).
2020-03-18 00:02:36 +09:00
Bill Currie
43ea34535e
[qfcc] Make ivar-struct-return fail
...
It turns out that assignments to struct fields are not counted as live
when the whole struct is later used via a pointer move.
2020-03-17 23:39:17 +09:00
Bill Currie
22cd39c853
[qfcc] Mark ptr assignment offset as an operand
...
This fixes structptr. All current tests pass.
2020-03-17 23:05:57 +09:00
Bill Currie
578bf9a16f
[qfcc] Set dag node value for movep
...
This fixes compilation of all tests. However, structptr still fails.
2020-03-17 22:54:27 +09:00
Bill Currie
34c9ec51bb
[qfcc] Make opcode and statement type names available
2020-03-17 22:46:23 +09:00
Bill Currie
77806f4b1b
[qfcc] Get dag code generation mostly working
...
There's an ICE in return-ivar, but assignchain passes let alone builds.
2020-03-17 22:35:36 +09:00
Bill Currie
16bda66785
[qfcc] Add more statement types for move/memset
...
They ease the statement checks between assign/move/memset and the
pointer versions (don't need all those strcmps)
2020-03-17 21:39:49 +09:00
Bill Currie
3c2f6c8447
[qfcc] Simplify flow_analyize_pointer_operand
...
and its usage. The parts of flow_analyze_statement that use it know
where the returned operand needs to go. Unfortunately, this breaks dags
pretty hard, but that's because dags needs to learn about the fancy
assignment-type statements.
2020-03-17 21:30:16 +09:00
Bill Currie
dec2e6249e
[qfcc] Increase flow operand count to 5
...
MOVEP instructions have up to 5 operands: 2 pointers, the count, and 0-2
referenced variables (when known).
2020-03-17 21:24:12 +09:00
Bill Currie
fa2cbc72d8
[qfcc] Analyze tempop pointers in move/memset statements
2020-03-17 15:48:06 +09:00
Bill Currie
6ec92fb83b
[qfcc] Point pointer tempop to the operand
...
It turns out I need the operand itself, not just the tempop.
2020-03-17 15:47:42 +09:00
Bill Currie
0de011d0bf
[qfcc] Add some disabled additional statement info
...
It's a bit cluttered for normal debugging, but I haven't decided how to
make it optional just yet.
2020-03-17 15:23:24 +09:00
Bill Currie
0cbe438ac1
[util] Make va slight robust against chained use
...
va now cycles through a set of four dstrings rather than using just the
one. This allows for some simple chaining of va usage.
2020-03-17 15:05:58 +09:00
Bill Currie
c5cbe83f71
[qfcc] Initialize statement numbers to -1
...
This is to indicate the statement has not yet been flow analyzed.
2020-03-17 15:05:58 +09:00
Bill Currie
d02a01c282
[qfcc] Make tempop pointer strings more informative
...
Now that the address of a tempop can be taken, their op strings need to
be visible.
2020-03-17 15:05:58 +09:00
Bill Currie
28a8c1fda7
[qwaq] Implement more curses wrappers
2020-03-17 14:05:31 +09:00
Bill Currie
441e7b99bc
[qfcc] Correctly implement pointer arithmetic
2020-03-17 13:39:22 +09:00
Bill Currie
c5400c4581
[qfcc] Make anonstruct test robust against pointer math
...
I noticed that pointer math is currently incorrect in qfcc, but it would
be nice for fixing it to not break anonstruct since it is testing
something else.
2020-03-17 12:16:24 +09:00
Bill Currie
0d784d9ef4
[qfcc] Rework address expr calculation
...
This removes a bogus lea from the instruction stream (and there can be
many such).
2020-03-17 12:13:09 +09:00
Bill Currie
0d751dcdc5
[qfcc] Improve robustness of do_op_integer
2020-03-17 12:12:06 +09:00
Bill Currie
9cb3ee01d6
[qfcc] Add pointer value check
...
Extraction is a little more complicated, though, so undecided on that.
2020-03-17 11:19:12 +09:00
Bill Currie
c3f04384d5
[qfcc] Make a general integral value extractor
...
All too often I just want the value.
2020-03-17 11:18:37 +09:00
Bill Currie
80967e1471
[qfcc] Support def exprs in integral value extractors
2020-03-17 10:56:45 +09:00
Bill Currie
e4a403bbb3
[qfcc] Improve integral value extraction readability
2020-03-17 10:55:27 +09:00
Bill Currie
888192a9ea
[qfcc] Resurrect ex_def expression type
...
It turns out to be useful still as using symbol expressions isn't always
appropriate and the workarounds were getting nasty.
2020-03-17 01:42:46 +09:00
Bill Currie
fd06cd2b00
[qfcc] Analyze assignment through const pointers
...
This fixes a false-positive uninitialized warning.
2020-03-17 01:40:35 +09:00
Bill Currie
8e6baf1bde
[qfcc] Fix assigning to entity fields
...
At least for basic types. Compound types need testing.
2020-03-17 01:39:35 +09:00
Bill Currie
f9face0cef
[qfcc] Make is_indirect easier to read
2020-03-16 23:26:39 +09:00
Bill Currie
5c0c056e2c
[qfcc] Add is_entity type test helper
2020-03-16 21:07:31 +09:00
Bill Currie
ede7dd6d7e
[qfcc] Catch attempts to emit a bad operand type
2020-03-16 20:31:21 +09:00
Bill Currie
1d10136f2e
[qfcc] Treat all dereferences and indirect
...
Why I had a const pointer test on there is beyond me.
2020-03-16 20:24:22 +09:00
Bill Currie
69924fe717
[qfcc] Return correct value for is_const_ptr
...
It really helps if the logic is not inverted.
2020-03-16 20:21:07 +09:00
Bill Currie
db06300ddd
[qfcc] Make print_operand usable from gdb
...
It not emitting a \n made life difficult, especially whenever gdb
decided to make access to printf or puts awkward.
2020-03-16 20:20:07 +09:00
Bill Currie
b544a052bf
[gamecode] Bail if PR_SearchDefs is given 0 defs
...
Fixes the hang when searching for a field in progs that don't have any.
2020-03-16 14:24:48 +09:00
Bill Currie
c8e45c6cfc
[qfcc] Use operand_address in expr_deref
...
This fixes the technically correct but horrible mess of temps and
addressing when dealing with ivars, and the resulting uninitialized
temps due to the non-constant pointers (do need statement level constant
folding, though).
2020-03-16 14:24:48 +09:00
Bill Currie
b58deb5680
[qfcc] Rewrite operand_address to be much simpler
...
It now creates a pointer value and returns that rather than generating
an address statement.
2020-03-16 14:24:47 +09:00
Bill Currie
a0c28a5ac5
[qfcc] Support pointers to temp operands
...
This is necessary for correctly taking the address of operands.
2020-03-16 14:24:47 +09:00
Bill Currie
2f07d9a310
[qfcc] Improve accuracy of some more diagnostics
2020-03-16 10:42:18 +09:00
Bill Currie
0fe3fda44d
[qfcc] Fix protocol adorned id as message receiver
...
This took a bit as type_id has no class data, only protocols attached to
the type_obj_object instance, and then protocol lists can get deep.
2020-03-16 10:42:18 +09:00
Bill Currie
ea042cf87a
[qfcc] Split out the obj-qc specific expr code
2020-03-16 10:34:16 +09:00
Bill Currie
fb33a7f2a7
[qfcc] Remove "impossible" code
...
It is not possible to adorn Class with protocols, so no need to check
for them when checking if a type is a class.
2020-03-16 10:34:16 +09:00
Bill Currie
e1140d476a
[qfcc] Handle syntax errors in method protos
2020-03-15 16:19:45 +09:00
Bill Currie
e3a1413ad3
[gamecode] Tweak output for lea
2020-03-15 10:06:37 +09:00