2011-12-08 04:32 hosking * m3-sys/m3front/src/values/Formal.m3: Fix bug in ReshapeOpenArray. 2011-12-05 22:50 hosking * m3-sys/m3front/src/values/Formal.m3: I think this loop should check each dimension of the array? 2011-11-21 16:39 jkrell * m3-libs/m3core/src/runtime/POSIX/: RTSignalC.c: maybe fix Itanium, and SH and S390 2011-11-21 16:38 jkrell * m3-libs/m3core/src/runtime/POSIX/RTSignalC.c: fix accidental nested comment from Itanium change 2011-11-07 19:10 jkrell * m3-sys/m3middle/src/Target.m3: go back a version -- need a case for ia64 else will error as unknown 2011-11-07 19:02 jkrell * m3-libs/m3core/src/runtime/POSIX/RTSignalC.c: fix comment 2011-11-07 19:01 jkrell * m3-sys/m3middle/src/Target.m3: default jumpbuf size to 1k, only affects IA64; correct IA64/Linux jumpbuf is over 512, so this isn't too awful..we really want to remove this anyway 2011-11-07 18:59 jkrell * m3-libs/m3core/src/runtime/POSIX/RTSignalC.c: update for Linux/ia64 and possibly sh and s390 2011-11-03 07:30 jkrell * m3-sys/m3middle/src/: Target.i3, Target.m3: add targets: IA64_FREEBSD IA64_HPUX IA64_LINUX IA64_NETBSD IA64_NT IA64_OPENBSD IA64_VMS (Wouldn't it be nice if we just added IA64, and the cross product was assumed? Yes.) For now I guess just a large 1K jmpbuf. scripts/config/jmpbuf.c can figure this out. Or hopefully we'll remove this target-dependentness before much longer.. 2011-11-03 07:23 jkrell * www/uploaded-archives/targets.txt: add targets: IA64_FREEBSD IA64_HPUX IA64_LINUX IA64_NETBSD IA64_NT IA64_OPENBSD IA64_VMS (Wouldn't it be nice if we just added IA64, and the cross product was assumed? Yes.) 2011-11-03 07:09 jkrell * m3-sys/cminstall/src/config-no-install/: IA64.common, IA64_LINUX: IA64 doesn't allow -m64 (like PA64) IA64 doesn't support stabs, and plain -g crashes our backend (also like PA64)' 2011-11-03 07:07 jkrell * m3-sys/cminstall/src/config-no-install/: ALPHA_LINUX, ALPHA_OPENBSD, Alpha64.common: move m3back_m64 = "" % -m64 not allowed to common code for Alpha64 2011-11-03 06:59 jkrell * m3-sys/cminstall/src/config-no-install/: IA64.common, IA64_LINUX: initial IA64_LINUX guessing 2011-11-03 05:51 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThreadC.c: declare SignalHandler before pragma GCC visibility push(hidden), see if it helps 2011-11-01 08:28 jkrell * m3-sys/m3cc/: gcc/gcc/m3cg/Make-lang.in, gcc/gcc/m3cg/m3-parse.h, gcc/gcc/m3cg/m3cg.h, gcc/gcc/m3cg/parse.c, src/m3makefile: work in progress -- gcc 4.6 support I've been sitting on this a while, and it isn't done yet. 2011-07-15 19:17 rodney * m3-libs/m3core/src/convert/Convert.m3 (release_branch_cm3_5_8): Fix a tiny typo in Convert.DigitsL that was causing digit 6 to display as '4' and 4 to display as '0'. 2011-06-22 04:53 mand * scripts/regression/update_snapshot_status.sh: debug on 2011-06-22 04:18 mand * scripts/regression/update_snapshot_status.sh: Also cleanup "*bin-core*" targets 2011-05-23 17:43 rodney * doc/reference/complete/m3-defn-complete.tex (release_branch_cm3_5_8): Fix typos. 2011-05-23 17:40 rodney * doc/reference/: syntax.html, complete/m3-defn-complete.tex: Fix typos. 2011-05-23 17:16 rodney * doc/reference/syntax.html (release_branch_cm3_5_8): Fix typos. 2011-05-19 20:16 rodney * m3-tools/m3tk/src/: sem/M3CExpValue.m3, syn/M3CLex.m3, target/M3CBackEnd_C.m3: More fixes for problems with LONGINT based literals in m3tk: 1) Procedure HexValue in M3CLex was accepting any letter as a hex digit. For a LONGINT based literal, the 'L' was treated as a hex digit that was out of range, leading to an error message. This affected INTEGER based literals too, but it probably rarely/never happened. 2) With that fixed, scanning of a based LONGINT literal ignored the 'L'. 3) Scanning of an unbased LONGINT literal was detecting the 'L' and setting the literal type to LONGINT, but didn't put the 'L' into the accumulated string for the literal. 4) Those exposed that TextTo.Longint in M3CBackEnd_C did not count the 'L' as used, generating another error. Also: 5) Renamed some variables from "l" to "len". In my editor font, letter 'l' and digit '1' are indistinguishable without resorting to xmag, leading to things like: "IF l>1". 6) Added acceptance of capital 'X' as a flag for hex escape sequences in character and text literals. 2011-05-15 21:02 rodney * m3-tools/m3tk/src/fe/M3CGo.m3: Fix a bug in m3tk that was uncovered by previous fix to LONGINT literal checking, causing NIL deref crashes. M3Go.CompileUnit was failing to call M3Error.SetCu, leaving no current unit for error messages. There are other mysteries here, but this cures the crash and reproduces previous output for at least one case. 2011-04-29 08:08 jkrell * m3-sys/m3cc/gcc/gcc/Makefile.in: remove VARRAY_h, parse.c will end up just not using varray at all 2011-04-29 07:59 jkrell * m3-sys/m3cc/gcc/gcc/: Makefile.in, m3cg/Make-lang.in: gcc 4.6 removes varray.h factor out cm3cg's dependency on it Makefile.in: VARRAY_H=varray.h Make-lang.in: varray.h => $(VARRAY_H) (obviously more to do!) 2011-04-26 16:26 rodney * m3-tools/m3tk/src/sem/M3CExpValue.m3: Fix numeric literal check of final character for LONGINT literals. Existing code checks that the last character of any numeric literal is a hexadecimal digit. This is wrong for LONGINT, whose last character is 'l' or 'L'. Added a special case for LONGINT. M3CExpValue.m3 checks the last character of all numeric literals for validity, but no other characters. This seems very strange, since the scanner has already verified all the characters of each kind of literal. Compiled but not tested. 2011-04-23 10:07 jkrell * m3-libs/: libm3/src/os/POSIX/ProcessPosixCommon.m3, libm3/src/perftool/POSIX/LowPerfTool.m3, m3core/src/runtime/POSIX/RTPerfTool.m3, m3core/src/unix/Common/Unix.i3, m3core/src/unix/Common/UnixC.c: Unix.fork() => RTProcess.Fork() The difference is that with user threads, RTProcess.Fork() honors RTProcess.RegisterForkHandlers, but without depending on -pthread/-pthreads/-lpthread, which are apparently broken on some platforms. (Maybe we can #ifdef and reduce this? e.g. probably we don't need this hack on Solaris.) And then go so far as to remove Unix.fork(). That is an incompatibility though, with Unix-specific code. Notice where the Unix.fork() uses are: m3core, libm3, cvsup 2011-04-23 09:28 jkrell * m3-libs/m3core/src/runtime/common/RTProcess.i3: Add a bunch of comments about RegisterForkHandlers. Add external Fork, with a bunch of comments. This will be used shortly. The point is to provide RegisterForkHandlers + fork, but without relying on pthread_atfork, in order to avoid -pthread/-pthreads/-lpthread on apparently broken systems, e.g. Linux? I'm really not sure this is needed..is using -pthread/-pthreads/-lpthread really such a problem? Odd.. 2011-04-23 08:50 jkrell * m3-libs/m3core/src/runtime/common/RTProcessC.c: be sure to use fork1 pre-Solaris 2.10 use M3_DLL_EXPORT tune initial allocation up from 4 to 16 #ifndef _WIN3 around RTProcess__Fork instead of having it fprintf(stderr)+abort call parent callbacks even if fork() fails calling only prepare is surely bad and calling parent in the error path is probably correct save/restore errno around parent callbacks, if fork() failed 2011-04-23 08:12 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadApple.c: fprintf(stderr) before abort() and in error paths that don't necessarily abort(); probably we shouldn't print if we aren't going to abort, but for now (until various thread problems are solved), err toward printing 2011-04-22 09:17 jkrell * m3-libs/m3core/src/runtime/common/RTProcessC.c: cleanup in new not yet active code 2011-04-22 09:15 jkrell * m3-libs/m3core/src/runtime/common/: RTProcessC.c: missing paren 2011-04-22 09:14 jkrell * m3-libs/m3core/src/runtime/common/RTProcessC.c: grow by * 3 /2 instead of * 2 2011-04-22 09:13 jkrell * m3-libs/m3core/src/runtime/common/RTProcessC.c: fix race condition in new not yet active code 2011-04-22 09:12 jkrell * m3-libs/m3core/src/runtime/common/RTProcessC.c: use static, and put RTProcess__ at start 2011-04-22 09:09 jkrell * m3-libs/m3core/src/runtime/common/RTProcessC.c: add RTProcess__Fork and some small cleanup, not yet active but seems about rigjt 2011-04-22 08:56 jkrell * m3-libs/m3core/src/: runtime/common/RTProcessC.c, thread/POSIX/RTProcessC.c, thread/PTHREAD/RTProcessC.c, thread/WIN32/RTProcessC.c: different approach, work in progress 2011-04-22 07:59 jkrell * m3-libs/m3core/src/thread/: POSIX/RTProcessC.c, PTHREAD/RTProcessC.c, WIN32/RTProcessC.c: initial copies from runtime/common 2011-04-03 05:33 mika * m3-libs/m3core/src/float/m3makefile: enable C99 FloatMode for I386_DARWIN as well 2011-04-03 04:22 mika * m3-libs/m3core/src/float/m3makefile: Enable C99 FloatMode for LINUXLIBC6 and AMD64_LINUX 2011-04-03 04:15 mika * m3-libs/m3core/src/float/m3makefile: enable C99 FloatMode for FreeBSD4 and AMD64_FREEBSD note it doesn't actually work on FreeBSD *4*, but only on FreeBSD 5.3 and up (I think). 2011-03-29 23:44 mand * scripts/: do-pkg.sh, pkgmap.sh: remove debug flag from build scripts 2011-03-29 21:51 mand * scripts/: do-pkg.sh, pkgmap.sh: turn on debugging, t-shooting tinderbox builds 2011-03-20 21:23 jkrell * m3-sys/m3middle/src/Target.m3: Blow up SOLsun jmpbuf back to 76 bytes as in recent release, instead of 48 bytes. Perhaps that will fix Solaris 2.9. 2.10 has been ok. 2011-03-11 03:26 hosking * m3-sys/m3front/src/misc/Token.i3: Oops. 2011-03-09 20:18 hosking * m3-sys/m3front/src/: misc/Scanner.m3, misc/Token.i3, exprs/ExprParse.m3: Revert to original (more meaningful names). 2011-03-07 05:29 jkrell * m3-libs/m3core/src/thread/WIN32/ThreadWin32C.c: whitespace only 2011-03-07 05:29 jkrell * m3-libs/m3core/src/thread/WIN32/ThreadWin32C.c: blow up CONTEXT in size slightly to workaround apparent Windows bug -- otherwise GetThreadContext fails when using pageheap (on Server 2008 R2 AMD64) -- this time really as intended -- rounding up to 0x300 bytes, from current 0x2CC, really, this time, instead of adding 0x300 2011-03-07 05:28 jkrell * m3-libs/m3core/src/thread/WIN32/ThreadWin32C.c: blow up CONTEXT in size slightly to workaround apparent Windows bug -- otherwise GetThreadContext fails when using pageheap (on Server 2008 R2 AMD64) -- this time really as intended -- rounding up to 0x300 bytes, from current 0x2CC 2011-03-07 05:25 jkrell * m3-libs/m3core/src/thread/WIN32/ThreadWin32C.c: blow up CONTEXT in size slightly to workaround apparent Windows bug -- otherwise GetThreadContext fails when using pageheap (on Server 2008 R2 AMD64) 2011-02-27 19:00 rcoleburn * scripts/pkginfo.txt: Add Jay's m3sleep program to the package list so it gets built. I listed it under the "core" group. Not sure if this is best or only group it should be in, so feel free to change if needed.--R.Coleburn 2011-02-26 23:48 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThreadC.c: when pthread_*_init, pthread_mutex_destroy, pthread_mutex_lock, pthread_mutex_unlock fail, fprintf to stderr and abort Possibly ENOMEM should be handled differently -- raise an exception. Currently, with Mika's threadtest, on Darwin, we get a fair number of EBUSY and EINVAL in these parts. And there are so many threads, that we get more stuff between the fprintf and the abort. 2011-02-26 23:45 jkrell * m3-libs/m3core/src/runtime/common/RTAllocator.m3: bring InitialPages, MinNewPages back down to 256K, since page size was grown to 64K across the board 2011-02-26 23:45 jkrell * m3-libs/m3core/src/runtime/common/RTCollector.m3: reduce DisableScheduling/EnablingScheduling window microscopically 2011-02-26 23:17 jkrell * m3-libs/m3core/src/runtime/common/RTDebugC.c: remove one space 2011-02-26 23:11 jkrell * m3-libs/m3core/src/win32/WinBaseC.c: work in progress: update interlocked support 2011-02-21 11:01 jkrell * m3-sys/m3middle/src/: M3RT.m3, Target.i3, Target.m3: Bring back per-target jmpbuf size in all its gory.. at least for now.. 2011-02-21 00:37 jkrell * m3-sys/m3middle/src/M3Process.i3: Reword comment. Win32 isn't broken -- as in the Windows OS, but indeed the Modula-3 implementation here is completely broken and likely doesn't do anything at all, except attempt to kill a random process and raise an exception if that fails (random as in possibly nonexistant, possibly another unrelated process, or just barely possibly, the intended process.) 2011-02-21 00:32 jkrell * m3-sys/m3middle/src/M3Process.i3: remove incorrect comments; Win32 is not broken 2011-02-19 18:49 mika * m3-libs/m3core/src/runtime/POSIX/RTSignalC.c: revert this, with a comment that the signal handler gets overridden: this will make the signal print a message and crash under pthreads and raise a RuntimeError.E exception under user ("POSIX") threads now, as desired. 2011-02-19 18:24 mika * m3-libs/m3core/src/: runtime/POSIX/RTSignalC.c, thread/POSIX/ThreadPosix.m3: Documentation of ThreadPosix implementation as the light of understanding has finally shone on me and I wish to put down my observations for posterity. Also an implementation of catching of SEGV and conversion into a RuntimeError instead. Mechanism is documented in ThreadPosix.m3: it is a hybrid of the SIGCHLD handling and what ThreadPosix already does to produce Thread.Alerted on a wake-up. Mechanism has been tested and appears to work: the former behavior was to quit execution unconditonally; now it is instead a catcheable exception. 2011-02-19 18:20 mika * m3-libs/m3core/src/thread/POSIX/: ThreadPosixC.c, ThreadPosix.i3: add ValueOfSIGSEGV: get value of SIGSEGV C header constant out in Modula-3 environment 2011-02-15 08:28 mika * caltech-parser/cit_common/src/: TextReader.i3, TextReader.m3: current TextReader from Caltech/Generation Capital repository, with bug fixes and enhancements 2011-02-15 03:02 mika * m3-sys/cm3/src/: Builder.m3, Makefile.m3: parallel back-end builds. To enable, use -pb flag, with n up to about ten (10) times the number of processors available, or set M3_PARALLEL_BACK in config files. Any change in behavior relative to earlier versions with n = 1 (the default) would constitute a bug. 2011-02-15 02:27 mika * m3-sys/m3quake/src/: QMachine.m3, QPromise.i3, QPromise.m3: clean up and fix minor bug from earlier cleanup that made innocuous failures (e.g., of fgrep) fatal. 2011-02-15 01:30 mika * m3-sys/m3quake/src/: QMachine.i3, QMachine.m3, QPromise.i3, QPromise.m3, m3makefile: Add support for the QMachine to be able to record (certain) Process.Creates as "promises" rather than executing them on the fly. The purpose of this modification is to allow parallelization of the CM3 compiler. The vast majority of the runtime of the compilation of a typical Modula-3 program is spent in the part "promised" here (when using the GCC backend). 2011-02-15 00:28 mika * m3-libs/m3core/src/thread/POSIX/: ThreadPosix.i3, ThreadPosix.m3, ThreadPosixC.c: Allow threads in state "pausing" to be woken up by signals, specifically, SIGCHLD, and use the mechanism for allowing Process.Wait to wake up instantly without busy-waiting. Follows design notes as published on the Modula-3 development mailing list, including care to ensure signal handlers aren't nested unnecessarily. 2011-02-12 10:44 jkrell * m3-libs/m3core/src/runtime/ex_frame/RTExFrame.m3: Blow the size up much much more -- as nothing uses the size here. Blowing it up might help us find out if anything does accidentally end up depending on the size. It'd be nifty if there was a way to really prohibit using the size. 2011-02-12 00:56 mika * m3-libs/m3core/src/thread/POSIX/ThreadPosixC.c: #define __BSD_VISIBLE 1 needed on new FreeBSD to get MAP_ANON et al. from sys/mman.h 2011-02-11 21:12 jkrell * m3-libs/m3core/src/time/POSIX/: DatePosixC.c, TimePosixC.c: pragma visibility push(hidden), though it shouldn't make a difference 2011-02-11 21:04 jkrell * m3-sys/m3middle/src/M3RT.m3: align to 64bits (LONGREAL) 2011-02-11 21:01 jkrell * m3-libs/m3core/src/thread/WIN32/ThreadWin32C.c: remove 'return' on void function call, that is under #if 0 2011-02-11 20:59 jkrell * m3-libs/m3core/src/thread/: Common/ThreadInternal.c, POSIX/ThreadPosixC.c: pragma visibility push(hidden), though it shouldn't make a difference 2011-02-11 20:57 jkrell * m3-libs/m3core/src/runtime/ex_frame/RTExFrame.m3, m3-sys/m3front/src/misc/Marker.m3, m3-sys/m3middle/src/M3RT.m3: For now, go back to the old way, but usu a sleazy gigantic "portable" 1K jumpbuf. (Some PowerPC platforms require more than 700 bytes, I believe.) 2011-02-09 09:15 jkrell * m3-sys/m3cc/gcc/gcc/m3cg/parse.c: add comment to also see RT0.i3 for builtin typeids 2011-02-08 14:23 jkrell * m3-libs/m3core/src/win32/WinNTc.c: save two lines 2011-02-08 14:22 jkrell * m3-libs/m3core/src/win32/WinNTc.c: move comment -- place them this way to try ensure they never get disconnected from function 2011-02-08 14:21 jkrell * m3-libs/m3core/src/win32/WinUserC.c: comment only 2011-02-08 14:20 jkrell * m3-libs/m3core/src/win32/WinUserC.c: minor reformat 2011-01-30 10:41 jkrell * m3-sys/m3front/src/misc/CG.i3: remove one newline 2011-01-18 02:21 rodney * m3-sys/m3gdb/gdb/gdb/i386-tdep.c (release_branch_cm3_5_8): An incomplete fix to get results of floating type working on m3gdb-typed calls to functions. This needs extensive rework. m3gdb borrows heavily from gdb for handling floating values. But gdb has only one floating type code (TYPE_CODE_FLT) and it distinguishes the different floating types by size. This is not really sufficient for M3, because there are 3 floating types, not necessarily all the same size. New type codes for M3 have been in here for years, but many places in existing gdb code need to recognize them. Also, existing gdb printing and other handling of floating values may not be exacly right for m3gdb anyway. It might be nice to just call M3 code in, e.g., Fmt. 2011-01-16 21:25 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: One more deadlock between activeMu and LockHeap. SuspendOthers can be called while LockHeap, which then locks activeMu. 2011-01-16 20:06 hosking * m3-libs/m3core/src/thread/PTHREAD/: ThreadPThread.i3, ThreadPThread.m3, ThreadPThreadC.c: Reinstate initMu. LockHeap should never be called before locking any of activeMu, slotsMu, initMu, perfMu. 2011-01-16 20:02 hosking * m3-libs/m3core/src/runtime/common/RTCollector.m3: Eliminate AtForkPrepare and AtForkParent. 2011-01-16 19:58 hosking * m3-libs/m3core/src/runtime/common/RTCollector.m3: No need to LockHeap/UnlockHeap at fork. Simply reset flags recording threads started. 2011-01-14 07:19 jkrell * m3-sys/m3cc/gcc/gcc/m3cg/parse.c: There is no need to put all/any of the builtins into a hashtable. All of the uses are very direct/special, except for m3_alloca. That is, the frontend doesn't generate regular function calls to any of them, except m3_alloca. 2011-01-13 14:58 jkrell * m3-sys/: m3front/src/misc/Marker.m3, m3cc/gcc/gcc/m3cg/parse.c: __builtin_alloca didn't work w/o translation among alloca, _alloca, __builtin_alloca, make up our own name, m3_alloca and do the comparison by pointer equality (since gcc uses string interning) I'd also go for _m3_alloca, __m3_alloca, or alloca, or darn near anything else. 2011-01-13 05:58 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: LockHeap/UnlockHeap in case we already did this in RTCollector AtForkPrepare/AtForkParent. 2011-01-13 01:37 hosking * m3-libs/m3core/src/thread/PTHREAD/: ThreadPThread.i3, ThreadPThread.m3, ThreadPThreadC.c: Revert to old LockHeap/UnlockHeap inplementation, but retain LockHeap for InitMutex instead of initMu to avoid deadlock between Initmutex and AtForkParent. 2011-01-12 18:33 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: Fix compile errors. 2011-01-12 18:18 hosking * m3-libs/m3core/src/thread/PTHREAD/: ThreadPThread.i3, ThreadPThreadC.c: Eliminate initMu and lock heap instead, to avoid deadlock between InitMutex and AtForkPrepare. 2011-01-12 18:16 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: Can we rely on pthread_mutex_t always being a reference? Perhaps not, so don't use the locks array. 2011-01-12 07:00 jkrell * m3-libs/m3core/src/unix/Common/Uconstants.c: align Jumpbuf_size, which appears needed for Win32 2011-01-12 00:37 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: Oops, so-called "fix" last night was completely broken (tired!). [Mika, please try this latest] 2011-01-11 08:02 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThreadC.c: whitespace only: right justify line continuation backslashes This is harder to maintain (write/type) but easier to read. 2011-01-11 05:13 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: initMu before heapMu to avoid potential deadlock between AtForkPrepare and InitMutex. 2011-01-11 04:56 hosking * m3-libs/m3core/src/thread/PTHREAD/: ThreadPThread.i3, ThreadPThread.m3, ThreadPThreadC.c: Candidate fix for AtForkPrepare deadlock with InitMutex. 2011-01-10 08:03 jkrell * m3-libs/arithmetic/doc/wpress.txt: "statistic" => "stat" 2011-01-09 19:56 hosking * m3-libs/arithmetic/doc/backgnd.html: Weird typo: the prefix "stat" was at some point replaced with "statistic", erroneously. 2011-01-09 11:07 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: Fix compile errors from conflicts. 2011-01-09 11:01 hosking * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: While holding initMu InitMutex invokes RegisterFinalCleanup which acquires heapMu. Make sure that AtForkPrepare and AtForkParent both acquire/release these mutexes in the same order. 2011-01-09 02:36 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: LockHeap later in ForkPrepare, try to fix deadlock with mutex initialization 2011-01-09 00:45 jkrell * scripts/python/upgrade.py: oops 2011-01-09 00:36 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: go back a versoin, to 1.245 2011-01-09 00:11 jkrell * scripts/python/upgrade.py: CopyConfigForDevelopment => CopyConfigForDistribution 2011-01-09 00:10 jkrell * m3-db/postgres95/src/m3makefile: only call configure_system_libs if it is defined; config files out of date? 2011-01-08 08:39 jkrell * m3-sys/m3middle/src/M3RT.m3: remove unused RoundUp function 2011-01-08 08:39 jkrell * m3-sys/m3middle/src/M3CG_Check.m3: put back 'self' as 'u' in PutErr, for smaller historical diff 2011-01-08 08:37 jkrell * m3-sys/m3middle/src/M3CG_Check.m3: make errors visible on stdout or stderr, much better now we get: jbook2:p250 jay$ /dev2/cm3/m3-sys/cm3/I386_DARWIN/cm3 --- building in I386_DARWIN --- new source -> compiling Main.m3 "../Main.m3", line 6: ********* M3CG_Check ERROR *********** bad stack: expected [ Int32 ] got [ Int64 ] "../Main.m3", line 11: ********* M3CG_Check ERROR *********** bad stack: expected [ Int32 ] got [ Int64 ] "../Main.m3", line 13: ********* M3CG_Check ERROR *********** bad stack: expected [ Int64 ] got [ Int32 ] "../Main.m3", line 1: 3 code generation errors (this line seems unnecessary now!) 4 errors encountered (this should probably say 3) compilation failed => not building program "pgm" Fatal Error: package build failed 2011-01-08 05:22 jkrell * m3-sys/cminstall/src/config-no-install/I386.common: -march=i586 => -march=i686 to fix test case p249: ../Main.m3: In function 'Main__DumpMatching__DumpOne': ../Main.m3:19:0: error: unable to find a register to spill in class 'CREG' ../Main.m3:19:0: error: this is the insn: (insn 5 4 6 2 ../Main.m3:16 (parallel [ (set (reg:SI 0 ax [65]) (const_int 0 [0x0])) (set (reg:SI 5 di [63]) (plus:SI (ashift:SI (reg:SI 0 ax [65]) (const_int 2 [0x2])) (reg:SI 5 di [63]))) (set (reg/f:SI 4 si [64]) (plus:SI (ashift:SI (reg:SI 0 ax [65]) (const_int 2 [0x2])) (reg/f:SI 16 argp))) (set (mem/s/c:BLK (reg:SI 5 di [63]) [0 trade+0 S24 A64]) (mem/s/c:BLK (reg/f:SI 16 argp) [0 trade+0 S24 A32])) (use (reg:SI 0 ax [65])) ]) 838 {*rep_movsi} (expr_list:REG_UNUSED (reg:SI 0 ax [65]) (expr_list:REG_UNUSED (reg/f:SI 4 si [64]) (expr_list:REG_UNUSED (reg:SI 5 di [63]) (nil))))) ../Main.m3:19:0: internal compiler error: in spill_failure, at reload1.c:2163 probably merits further investigation 2011-01-08 05:01 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: leave initMu before calling RegisterFinalCleanup, to avoid deadlock with AtForkPrepare 2011-01-08 04:57 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3: comments only: "won" => "won the race"; "!" => "." 2011-01-07 20:26 jkrell * m3-libs/m3core/src/thread/PTHREAD/: ThreadPThread.m3: a little more debuggability 2011-01-06 20:40 jkrell * m3-sys/m3front/src/misc/Marker.m3: use convenience Load/Store_addr instead of Load/Store 2011-01-06 07:18 jkrell * m3-sys/m3middle/src/M3RT.i3, m3-sys/m3middle/src/M3RT.m3, m3-libs/m3core/src/runtime/ex_frame/RTExFrame.m3, m3-libs/m3core/src/runtime/ex_stack/RTExStack.m3: comments only; in particular put in "see also" indicating these files describe each other 2011-01-06 01:33 jkrell * m3-sys/m3tests/src/: Test.i3, TestC.c: fix now that Csetjmp is unsafe, and that we don't need to check the size of jmpbuf 2011-01-05 17:32 jkrell * m3-libs/m3core/src/thread/PTHREAD/ThreadPThreadC.c: Don't use __thread on Solaris. It failed to link. See: http://hudson.modula3.com:8080/job/cm3-current-build-SOLsun-opencsw-current9s/166/console 2011-01-05 14:34 jkrell * m3-libs/m3core/src/C/Common/Csetjmp.i3, m3-libs/m3core/src/C/NT386/Csetjmp.i3, m3-libs/m3core/src/runtime/ex_frame/RTExFrame.m3, m3-libs/m3core/src/unix/Common/Uconstants.c, m3-sys/m3cc/gcc/gcc/m3cg/parse.c, m3-sys/m3front/src/misc/Marker.m3, m3-sys/m3front/src/stmts/TryFinStmt.m3, m3-sys/m3front/src/stmts/TryStmt.m3, m3-sys/m3middle/src/M3RT.i3, m3-sys/m3middle/src/M3RT.m3, m3-sys/m3middle/src/Target.i3, m3-sys/m3middle/src/Target.m3: use: extern INTEGER Csetjmp__Jumpbuf_size /* = sizeof(jmp_buf); alloca(Csetjmp__Jumpbuf_size) to allocate jmp_buf - eliminates a large swath of target-dependent code - allows for covering up the inability to declare types with alignment > 64 bits It is, granted, a little bit slower, in an already prety slow path. Note that alloca isn't actually a function call, at least with gcc backend. 2011-01-05 14:25 jkrell * m3-sys/m3front/src/misc/Marker.m3: whitespace only, so that subsequent change lines up w/o adding the whitespace change 2011-01-05 14:21 jkrell * m3-libs/m3core/src/unix/Common/Uconstants.c: const => EXTERN_CONST This makes it mean the same thing in all C and C++ compilers. Just plain "extern const" would do the same, but that gcc warns for this correct unambiguous portable usage.. 2011-01-05 14:20 jkrell * m3-libs/m3core/src/thread/Common/ThreadInternal.c: another possible inline suppression 2011-01-05 14:19 jkrell * m3-libs/m3core/src/thread/Common/ThreadInternal.c: comments only 2011-01-05 14:17 jkrell * scripts/config/stack_direction.c: more like m3core 2011-01-05 14:16 jkrell * scripts/config/stack_direction.c: flush minor change: make it look just like m3core 2011-01-05 14:08 jkrell * m3-sys/m3back/src/M3C.m3: flush minor change that was sitting around, not yet really in use 2011-01-04 19:27 jkrell * m3-sys/m3cc/src/clean_marker.txt: Remove tree-loop-linear optimization pass, which the gcc developers are considering removing since it is apparently broken. See http://gcc.gnu.org/ml/gcc/2011-01/msg00056.html http://gcc.gnu.org/ml/gcc-patches/2011-01/msg00133.html http://gcc.gnu.org/ml/gcc-patches/2011-01/msg00143.html http://gcc.gnu.org/ml/gcc-patches/2011-01/msg00146.html cleanup a little graphite stuff (graphite/cloog/ppl refers to loop optimizations in gcc that are dependent upon additional libraries being available, similar to the situation with gmp/mpfr/mpc, but that they are optional even in unpatched gcc) 2011-01-04 13:23 jkrell * scripts/config/alloca_alignment.c: alloca.h on some platforms needed, e.g. Solaris 2011-01-04 13:15 jkrell * scripts/config/alloca_alignment.c: show more bits 2011-01-04 13:14 jkrell * scripts/config/alloca_alignment.c: program to see how aligned alloca() result is 2011-01-04 13:04 jkrell * m3-sys/m3middle/src/Target.m3: fix comment: "efficient" => "inefficient" 2011-01-04 12:48 jkrell * m3-sys/m3middle/src/Target.m3, m3-libs/m3core/src/C/m3makefile, m3-libs/m3core/src/C/ALPHA_OSF/Csetjmp.i3, m3-libs/m3core/src/C/ALPHA_OSF/m3makefile, m3-libs/m3core/src/C/AMD64_DARWIN/Csetjmp.i3, m3-libs/m3core/src/C/AMD64_DARWIN/m3makefile, m3-libs/m3core/src/C/AMD64_FREEBSD/Csetjmp.i3, m3-libs/m3core/src/C/AMD64_FREEBSD/m3makefile, m3-libs/m3core/src/C/AMD64_LINUX/Csetjmp.i3, m3-libs/m3core/src/C/AMD64_LINUX/m3makefile, m3-libs/m3core/src/C/Common/COPYRIGHT, m3-libs/m3core/src/C/Common/Csetjmp.c, m3-libs/m3core/src/C/Common/Csetjmp.i3, m3-libs/m3core/src/C/Common/m3makefile, m3-libs/m3core/src/C/FreeBSD4/COPYRIGHT, m3-libs/m3core/src/C/FreeBSD4/Csetjmp.i3, m3-libs/m3core/src/C/FreeBSD4/m3makefile, m3-libs/m3core/src/C/I386_DARWIN/Csetjmp.i3, m3-libs/m3core/src/C/I386_DARWIN/m3makefile, m3-libs/m3core/src/C/I386_OPENBSD/Csetjmp.i3, m3-libs/m3core/src/C/I386_OPENBSD/m3makefile, m3-libs/m3core/src/C/LINUXLIBC6/COPYRIGHT, m3-libs/m3core/src/C/LINUXLIBC6/Csetjmp.i3, m3-libs/m3core/src/C/LINUXLIBC6/m3makefile, m3-libs/m3core/src/C/MIPS64_OPENBSD/Csetjmp.i3, m3-libs/m3core/src/C/MIPS64_OPENBSD/m3makefile, m3-libs/m3core/src/C/NT386/Csetjmp.i3, m3-libs/m3core/src/C/NetBSD2_i386/Csetjmp.i3, m3-libs/m3core/src/C/NetBSD2_i386/m3makefile, m3-libs/m3core/src/C/PA32_HPUX/Csetjmp.i3, m3-libs/m3core/src/C/PA32_HPUX/m3makefile, m3-libs/m3core/src/C/PA64_HPUX/Csetjmp.i3, m3-libs/m3core/src/C/PA64_HPUX/m3makefile, m3-libs/m3core/src/C/PPC32_OPENBSD/Csetjmp.i3, m3-libs/m3core/src/C/PPC32_OPENBSD/m3makefile, m3-libs/m3core/src/C/PPC_DARWIN/Csetjmp.i3, m3-libs/m3core/src/C/PPC_DARWIN/m3makefile, m3-libs/m3core/src/C/PPC_LINUX/COPYRIGHT, m3-libs/m3core/src/C/PPC_LINUX/Csetjmp.i3, m3-libs/m3core/src/C/PPC_LINUX/m3makefile, m3-libs/m3core/src/C/SOLgnu/Csetjmp.i3, m3-libs/m3core/src/C/SOLgnu/m3makefile, m3-libs/m3core/src/C/SOLsun/Csetjmp.i3, m3-libs/m3core/src/C/SOLsun/m3makefile, m3-libs/m3core/src/C/SPARC32_LINUX/Csetjmp.i3, m3-libs/m3core/src/C/SPARC32_LINUX/m3makefile, m3-libs/m3core/src/C/SPARC64_LINUX/Csetjmp.i3, m3-libs/m3core/src/C/SPARC64_LINUX/m3makefile, m3-libs/m3core/src/C/SPARC64_OPENBSD/Csetjmp.i3, m3-libs/m3core/src/C/SPARC64_OPENBSD/m3makefile, m3-libs/m3core/src/C/SPARC64_SOLARIS/Csetjmp.i3, m3-libs/m3core/src/C/SPARC64_SOLARIS/m3makefile: 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. 2011-01-04 11:21 jkrell * m3-libs/m3core/src/runtime/common/RTHeapRep.i3: fix warning: remove unused import RTMachine 2011-01-03 14:13 jkrell * m3-libs/m3core/src/runtime/: NT386/RTMachine.i3, NT386/m3makefile, common/m3makefile: use common RTMachine.i3 2011-01-03 14:05 jkrell * m3-libs/m3core/src/runtime/DS3100/: RTMachine.i3, RTStackASM.s, RTStackC.c, m3makefile: This code has a high ratio of bug workarounds and reverse engineering. And it is long dead -- I believe it is for Ultrix on MIPS. Delete it. If someone brings back Ultrix (in an emulator?)... 2011-01-03 13:57 jkrell * m3-libs/m3core/src/runtime/: ALPHA_OSF/RTMachine.i3, DS3100/RTMachine.i3, NT386/RTMachine.i3, SOLsun/RTMachine.i3, common/RTHeapRep.i3, common/RTMachine.i3: Use 64K pages everywhere -- less target dependent code, basically. The page size used to be target dependent when the garbage collector interacted with virtual memory. Now it is basically not machine dependent, except that on Windows we use VirtualAlloc, which always allocates on 64K boundaries, even if you ask for less than 64K, so allocation less than 64K ends up completely wasting memory. This could be viewed negatively as giving the Windows-dependent value to all targets. But I think it is ok. 2011-01-03 13:26 jkrell * m3-libs/m3core/src/runtime/common/RTHeapStats.i3: one newline at end of file suffices 2011-01-03 13:14 jkrell * m3-libs/m3core/src/runtime/SPARC64_SOLARIS/: RTMachine.i3, m3makefile: remove unused files