[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