[M3commit] CVS Update: cm3
Jay K
jay.krell at cornell.edu
Tue Jan 4 14:03:17 CET 2011
straightforward diff attached
> Date: Tue, 4 Jan 2011 13:48:34 +0000
> To: m3commit at elegosoft.com
> From: jkrell at elego.de
> Subject: [M3commit] CVS Update: cm3
>
> CVSROOT: /usr/cvs
> Changes by: jkrell at birch. 11/01/04 13:48:34
>
> Modified files:
> cm3/m3-sys/m3middle/src/: Target.m3
> cm3/m3-libs/m3core/src/C/: m3makefile
> cm3/m3-libs/m3core/src/C/Common/: m3makefile
> cm3/m3-libs/m3core/src/C/I386_CYGWIN/: Csetjmp.i3
> cm3/m3-libs/m3core/src/C/I386_MINGW/: Csetjmp.i3
> cm3/m3-libs/m3core/src/C/I386_NT/: Csetjmp.i3
> cm3/m3-libs/m3core/src/C/NT386/: Csetjmp.i3
> Added files:
> cm3/m3-libs/m3core/src/C/Common/: COPYRIGHT Csetjmp.c Csetjmp.i3
> Removed files:
> cm3/m3-libs/m3core/src/C/ALPHA32_VMS/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/ALPHA64_VMS/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/ALPHA_LINUX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/ALPHA_OPENBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/ALPHA_OSF/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/AMD64_DARWIN/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/AMD64_FREEBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/AMD64_LINUX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/AMD64_NETBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/AMD64_OPENBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/AMD64_SOLARIS/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/ARMEL_LINUX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/ARM_DARWIN/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/FreeBSD4/: COPYRIGHT Csetjmp.i3
> m3makefile
> cm3/m3-libs/m3core/src/C/I386_DARWIN/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/I386_FREEBSD/: COPYRIGHT Csetjmp.i3
> m3makefile
> cm3/m3-libs/m3core/src/C/I386_INTERIX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/I386_LINUX/: COPYRIGHT Csetjmp.i3
> m3makefile
> cm3/m3-libs/m3core/src/C/I386_NETBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/I386_OPENBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/I386_SOLARIS/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/LINUXLIBC6/: COPYRIGHT Csetjmp.i3
> m3makefile
> cm3/m3-libs/m3core/src/C/MIPS64EL_OPENBSD/: Csetjmp.i3
> m3makefile
> cm3/m3-libs/m3core/src/C/MIPS64_OPENBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/NetBSD2_i386/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/PA32_HPUX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/PA64_HPUX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/PPC32_OPENBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/PPC64_DARWIN/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/PPC_DARWIN/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/PPC_LINUX/: COPYRIGHT Csetjmp.i3
> m3makefile
> cm3/m3-libs/m3core/src/C/SOLgnu/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/SOLsun/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/SPARC32_LINUX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/SPARC32_SOLARIS/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/SPARC64_LINUX/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/SPARC64_OPENBSD/: Csetjmp.i3 m3makefile
> cm3/m3-libs/m3core/src/C/SPARC64_SOLARIS/: Csetjmp.i3 m3makefile
>
> Log message:
> Set jumpbuf_align to 64 for all targets.
>
> We'd really like to use 2 * BYTESIZE(INTEGER) for all targets
> except PPC_LINUX, but that isn't expressible. This is therefore
> as far as we know, incorrect for PA64_HPUX and SPARC64_SOLARIS,
> and non-ideal for PPC_LINUX, roughly the same as it ever was
> (well, the middle end got it right, but the runtime didn't,
> and they do need to match; so it was seemingly wrong, but
> somehow worked on PPC_LINUX)
>
> In future, hopefully, compiler will inject the type instead
> of depending on it being declared elsewhere in Modula-3.
>
> In future, hopefully, this code will fall away on the majority
> of platforms/users -- i.e. if we use the gcc stack walker.
> But it will still stay around in some form for portability
> to non-gcc platforms. So injecting the type is still desirable.
>
> This removes lots of target-dependence.
> This has the downside of introducing an extra 4 bytes of unnecessary
> frame size on platforms where 4 byte alignment of jmpbuf is sufficient.
> (Note that we have and continue to bloat the jmpbuf for other reasons.
> - sometimes it was sigjmpbuf, no longe
> - sometimes it is plain wrong, e.g. LINUXLIBC6, still
> - sometimes for hypothetical interop e.g. NT <=> Interix)
>
> If RaiseActivation were one more or one less word,
> or if the frame has an otherwise odd number of words,
> the wastage should be removable by offseting the location
> of RaiseActivation. That is, alignment should be achievable
> by via hole, but via offseting the enclosing base and
> possibly using the hole that that creates.
>
> In either case, I'm inclined to go one step further and pass
> an extern const to alloca and only put a pointer to the jmpbuf
> in the "EF1", dramatically further eliminating target-dependence.
> We are already calling pthread_getspecific and setjmp, so alloca
> seems maybe a further reasonable deoptimization in an already slow path.
> Perhaps we could somehow combine the calls (not easy, given
> how setjmp and alloca are so special). This would presumably
> also address the alignment problem -- assuming alloca knows
> to return a pointer aligned enough for "anything", i.e. including
> a jmpbuf.
>
> There are still some platform-dependent Csetjmp.i3 files (NT)
> in order to call longjmp instead of the more common _longjmp.
> Testing, reading headers, and/or disasm will hopefully show
> that such platforms have _longjmp and it is equivalent. Soon.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3commit/attachments/20110104/72cd5748/attachment-0002.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: jmpbuf64.txt
URL: <http://m3lists.elegosoft.com/pipermail/m3commit/attachments/20110104/72cd5748/attachment-0002.txt>
More information about the M3commit
mailing list