- Sep 16, 2017
-
-
Raymond Toy authored
- process-alive-p should return T for continued processes - Simplify prog-status slightly by making the status code array start :signaled instead of nil. - Update prog_status with enum to specify the codes to make it clearer what they mean and to make it clearer that it matches the expectations in prog-status.
-
- Sep 09, 2017
-
-
Raymond Toy authored
The main problem is that we weren't calling wait3 with WCONTINUED so that we would be signaled when the process continues. And we also need to check that result of wait call was WCONTINUED> Replace the wait3 routine with a C routine (prog_status) so we don't have to deal with the OS-specific flags. This function basically returns what the lisp function wait3 did. Use this function in GET-PROCESSES-STATUS-CHANGES. - runprog.c: - Add prog_status - run-program.lisp: - Use prog_status instead of wait3 - issues.lisp: - Add basic test
-
- Jan 29, 2017
-
-
Raymond Toy authored
Include a list of the builtin modules supported by cmucl to the docstring.
-
- Dec 23, 2016
-
-
Raymond Toy authored
-
- Dec 08, 2016
-
-
Raymond Toy authored
"Cound" -> "Could"
-
Raymond Toy authored
The string containing #\Newline that is used to output the newline character worked on little-endian architectures because the low octet was first in memory. However on a big-endian sparc, a NUL character was output instead since the high octet is first in memory. So, create a explicit unsigned-byte 8 array containing exactly 1 octet that represents a newline character code. Tests pass on both sparc and x86/linux.
-
- Dec 07, 2016
-
-
Raymond Toy authored
unix:unix-times was only used for #+(and sparc svr4). The existing code already supported a different function when this condition was false, so use that, which uses getrusage instead. Don't need cross-x86-sparc-bootstrap.lisp anymore either.
-
- Dec 01, 2016
-
-
Raymond Toy authored
-
- Nov 29, 2016
-
-
Raymond Toy authored
lisp/os-common.c: o Implement os_sleep(double) to sleep for the given number of seconds. Uses nanosleep on all platforms to sleep, taking care to sleep more if nanosleep was interrupted. code/lispinit.lisp: code/multi-proc.lisp: o Use the new os_sleep function to sleep for the requested amount of time.
-
- Nov 11, 2016
-
-
Raymond Toy authored
Allow 1899 as a year, but also add a check that the resulting time is a non-negative integer. Add a test for this too in issues.lisp.
-
- Sep 28, 2016
-
-
Elias Pipping authored
-
- Sep 19, 2016
-
-
Raymond Toy authored
Several related changes here. o If :process-command-line is NIL, *command-line-strings* and *command-line-application-arguments* weren't getting updated. They should get updated so that the resulting core can get updated command line options instead of using the values dumped with the core. The command line switch demons are still not run, as before. o Add a :quiet option as if -quiet were given.
-
- Sep 08, 2016
-
-
Raymond Toy authored
The debug-info-source isn't available until later in the fasl, so don't try to print where the source was compiled from. This seems like a small oversight since the next bit of code does nothing if the debug-info-source isn't available.
-
- Sep 04, 2016
-
-
Raymond Toy authored
-
Raymond Toy authored
When support for search-lists was added to PATHNAME-MATCH-P, support for logical pathnames was broken because PATHNAME-MATCH-P eventually calls TRANSLATE-LOGICAL-PATHNAME which calls PATHNAME-MATCH-P with logical pathnames. This caused infinite recursion. So add back the original PATHNAME-MATCH-P, but rename to %PATHNAME-MATCH-P and use that in TRANSLATE-LOGICAL-PATHNAME and friends. Add test for this case too.
-
- Sep 03, 2016
-
-
Raymond Toy authored
-
Raymond Toy authored
The recursive definition comes from %single-float and %double-float trying to coerce a double-double-float to a single or double. Not sure the best place to fix this, but added a special case here for %single-float and %double-float to convert the double-double-float to a double that can then be coerced to the appropriate type. (Could have added a deftransform for coerce to handle double-doubles, but doing it here makes it easier to follow the code.) Verified that x86->x86 and sparc->sparc cross-compiles no longer have the warning. Also verified that sparc->sparc actually cross-compiles and loads successfully and that the result will compile itself successfully.
-
- Aug 21, 2016
-
-
Raymond Toy authored
When writing a string to the program too few octets were written because strings are now 16-bits wide. To fix this, only write the low 8-bits of each character. This matches what reading does. This pretty much implies that the caller should use STREAM:STRING-ENCODE and STREAM::STRING-DECODE on the strings. Add several tests to verify the expected results.
-
- May 21, 2016
-
-
Raymond Toy authored
Add this as a runtime feature so that it shows up in *features* and so that the C runtime has FEATURE_RELOCATABLE_STACKS defined. src/code/sparc-svr4-vm.lisp: src/code/x86-vm.lisp: o Make :relocatable-stacks a runtime feature. src/lisp/validate.h o Need to include internals.h here so constants are set up according to internals.h src/lisp/x86-validate-darwin.h: o Use FEATURE_RELOCATABLE_STACKS instead of RELOCATABLE_STACK_START.
-
Raymond Toy authored
Describe better the following: sys::*runtime-features* register-lisp-feature register-lisp-runtime-feature
-
- Mar 06, 2016
-
-
Raymond Toy authored
-
- Jan 18, 2016
-
-
Raymond Toy authored
-
- Jan 16, 2016
-
-
Raymond Toy authored
These are useful for multi-precision shifts. For x86, we can use the shld and shrd instructions. For others, we just use basic logical operations.
-
Raymond Toy authored
Fix #18.
-
Raymond Toy authored
Fix #17.
-
- Jan 14, 2016
-
-
Raymond Toy authored
-
- Jan 13, 2016
-
-
Raymond Toy authored
Put an unwind-protect around the error calls. The cleanup form restores the floating-point modes from the sigcontext so that the mode is restored. This is needed, I think, because we throw so that the signal handler doesn't return so the sigcontext isn't restored. If we don't restore the fpu state, it's set to the default processor state. We want the default state when calling error. In this way, things like (* 1d300 1d300) signals an overflow, and when we throw to top-level, the floating-point modes are restored to their original values they had before.
-
- Jan 10, 2016
-
-
Raymond Toy authored
We just want to return the original modes, so remove all the old commented out stuff that was modifying the original modes to some strange state. This makes a lot more sense to me if WITH-FLOAT-TRAPS-* actually restored the modes exactly as they were before running the body.
-
Raymond Toy authored
In sigfpe-handler, don't modify the modes; just use whatever they are. (They should be the default values.) In with-float-traps-*, actually just restore the floating-point mode to the exact original mode instead of trying to mask things out.
-
Raymond Toy authored
Don't restore the fpu state from the context in the interrupt handler code (interrupt_handle_now) because that just makes the fpu state the same as the sigcontext that received the exception. I think this was done to reset the x87 fpu precision to 53-bit so that lisp can continue with default double-float rounding. This isn't needed anymore since lisp doesn't use x87 anymore. In SIGFPE-HANDLER, don't modify the current fp state based on the state from the sigcontext. These two items cause the arithmetic-error exception printer to trigger inexact when printing out the args. We add a few debugging prints for now so we can see what the FP state is in the handler. Remove them later.
-
- Jan 07, 2016
-
-
Raymond Toy authored
If the user specifies -dynamic-space-size 0, then use the platform-specific maximum heap size. Update the docstring for the switch too.
-
- Jan 01, 2016
-
-
Raymond Toy authored
We know the result of (expt 0 power) so return it immediately without first checking if the power exceeds the limit. Also took the opportunity to add a better message to the intexp-limit-error condition to make it more explicit what is being computed and why it's failing. Tests added too.
-
Raymond Toy authored
-
- Dec 31, 2015
-
-
Raymond Toy authored
Allow search lists in pathname-match-p. For each arg, we enumerate the possible values of the search list and try to find a match between the path and the wild path. If there's a match, return true. Tests added for some cases of pathname-match-p with search lists. Fix issue #16.
-
Raymond Toy authored
-
- Dec 30, 2015
-
-
Raymond Toy authored
Fix issue #14. WITH-FLOAT-TRAPS-ENABLED was leaving the accrued (and current) exceptions unchanged, but it should have cleared out any values there that matched the exceptions to be enabled. Without this, the next x87 operation would signal an exception if an accrued exception matched an enabled exception. This was the cause of issue #14. (Note that for x87, the accrued exception is the same as current exception.)
-
Raymond Toy authored
To aid in debugging floating point modes, add two new functions: o %SET-FLOATING-POINT-MODES is like SET-FLOATING-POINT-MODES but applies the result to a specified mode value, returning the new mode value (as an integer). This is useful for investigating different mode values without modifying the actual hardware mode. o %GET-FLOATING-POINT-MODES is like GET-FLOATING-POINT-MODES but uses an integer argument instead of the actual floating-point mode. Useful when used with %SET-FLOATING-POINT-MODE or on its own.
-
- Dec 28, 2015
-
-
Raymond Toy authored
* Add some comments. * Change x86 (setf floating-point-modes) to accept (unsigned-byte 32). * Remove unneeded x86 conditionalization on the byte size.
-
- Dec 27, 2015
-
-
Raymond Toy authored
Printing of FP numbers can signal some traps like overflow, underflow, inexact, or denormalized-operand, so we need to disable these traps when printing out the error message for arithmetic errors.
-
- Dec 26, 2015
-
-
Raymond Toy authored
On sparc and ppc (setf vm:floating-point-modes) takes an (unsigned-byte 32) arg, so adjust the ldb byte appopriately. Clean up code by putting the docstring into the macro.
-