[M3commit] CVS Update: cm3
Jay Krell
jkrell at elego.de
Sun Sep 16 00:40:10 CEST 2012
CVSROOT: /usr/cvs
Changes by: jkrell at birch. 12/09/16 00:40:10
Modified files:
cm3/m3-sys/m3back/src/: M3C.m3
Log message:
some struct reworking -- use the lame non-deal "standard structs",
since we don't easily know the size of returned structs
Pass structs by pointer, and copy into a local value.
(Uplevel structs?)
I don't want to do it this way..
C has perfectly good by-value struct parameters and results,
and we aren't ABI-compliant this way, if it matters.
(need to check the other front ends -- "standard structs"
is basically always at high risk of being non-compliant
on modern systems, "standard" of course being another name for "usually wrong"!
but yes I should know the ABIs better on all systems..)
Notice how we cast to void* when passing structs,
where otherwise we have no void* casts, always ADDRESS
which is char* and we get types more correct in general..but not here..
Need to confirm my observations here..need to get the Builder changes
in so Tony maybe can look? (or redo it via config/quake to
look like an existing mode.. maybe... I don't like the modes
and now I've added another..)
avoid #include math.h/string.h -- seems to speed it up
still #include stddef.h unfortunately, need to try to fix that
need to collect size_t and ptrdiff_t and typedef them ourselves
where possible, else fallback to #include stddef.h
declare the following ourselves, without #include:
ceil, floor, memcpy, memmove, memset
This might be a losing battle though.
We could either bite the bullet and #include.
Or #include if needed (making a second pass over the code).
Or provide wrappers in m3core, losing inlining.
add more min/max/abs wrappers, e.g. for REAL and EXTENDED
(REAL needed, EXTENDED not)
tentatively Var => M3CG.Var
tentatively Proc => M3CG.Proc
tentatively CVar => Var
tentatively CProc => Proc
compose structs of short/int/INT64, not just char, to try to
raise their alignment
fix typo internal_declara_param => internal_declare_param
ongoing conversion to 4 space indentation
change set operations between bit_size and byte_size
correct now?
fix fatal error in compare where it popped 1 instead of 2 (and
then pushed, overall pop 1) this causes an access violation in TextLitInfo because it was
writing into readonly memory; horrendous little problem, took
a while to track down..need to be careful, the debugging costs
are high...
More information about the M3commit
mailing list