Stephen Adams [Tue, 30 Jul 1996 00:12:55 +0000 (00:12 +0000)]
Added COMPILED-CODE-SUPPORT:NONRESTARTABLE-CONTINUATION.
Stephen Adams [Sat, 27 Jul 1996 05:13:49 +0000 (05:13 +0000)]
Changed coercion code to use the global procedure
COERCE-TO-COMPILED-PROCEDURE rather than the primitive.
Stephen Adams [Sat, 27 Jul 1996 04:46:06 +0000 (04:46 +0000)]
Re-instated the iterative version of MAP.
I keep getting bitten by long lists.
Stephen Adams [Sat, 27 Jul 1996 03:31:38 +0000 (03:31 +0000)]
Added a flag to TYPE:USER-DESCRIPTION.
Stephen Adams [Sat, 27 Jul 1996 03:30:17 +0000 (03:30 +0000)]
*** empty log message ***
Stephen Adams [Sat, 27 Jul 1996 03:29:10 +0000 (03:29 +0000)]
Added info for %RECORD.
Stephen Adams [Sat, 27 Jul 1996 02:43:15 +0000 (02:43 +0000)]
Tweaked integration.
Stephen Adams [Fri, 26 Jul 1996 23:43:03 +0000 (23:43 +0000)]
Avoid interrupt checks due solely to tailing into an ordinary
(i.e. not apply-like) primitive.
Stephen Adams [Fri, 26 Jul 1996 23:39:26 +0000 (23:39 +0000)]
Fixed logic bug with +0 and +1 arity encodings.
Added a missing else to a case expression.
Stephen Adams [Fri, 26 Jul 1996 20:00:31 +0000 (20:00 +0000)]
make random-state-tag define-integrable.
Stephen Adams [Fri, 26 Jul 1996 19:57:38 +0000 (19:57 +0000)]
Reorganized and extended code.
Stephen Adams [Fri, 26 Jul 1996 14:58:55 +0000 (14:58 +0000)]
Fixed load sequence bug.
Stephen Adams [Fri, 26 Jul 1996 14:38:26 +0000 (14:38 +0000)]
Initial cut at writing COERCE-TO-COMPILED-PROCEDURE in Scheme. The
next change will be to make the compiler generate calls to this
procedure rather than the primitive COERCE-TO-COMPILED-PROCEDURE,
which should result in both faster generation and invocation of
trampolines.
Eventually we might make the linker use this code too.
The code is a bit hairy and needs special initialization, hence the
changes in make.scm.
Stephen Adams [Fri, 26 Jul 1996 14:25:07 +0000 (14:25 +0000)]
Initial revision
Stephen Adams [Fri, 26 Jul 1996 01:01:44 +0000 (01:01 +0000)]
Tweaked format of time reports so that the non-gc process time is
always first.
Stephen Adams [Fri, 26 Jul 1996 00:59:26 +0000 (00:59 +0000)]
Fixed bug: LEXPR primitive were being mistaken as having the wrong
arity and thus were being applied via short_circuit_apply_n.
Stephen Adams [Fri, 26 Jul 1996 00:36:11 +0000 (00:36 +0000)]
Added new stack frame type for preservation frames (restore-regs).
Added a debugging-info method.
Changed the illegal-arg error handler for primitive procedures to
avoid using retry restarts when the primitive signalled a type or
range error when called from compiled code. This is necessary because
the compiler assumes that if it calls a primitive just to raise an
error then teh primitive will not return. This assumption allows type
inference to eliminate furthur checks.
In order to stop the debugger returning a value, the primitive should
be called `indirectly' via another compiler procedure which refuses to
return. I.e instead of compiling the error CAR operation as
INVOKE:PRIMITIVE
(#[primitive-procedure car] x)
call it like this:
(signal-primitive-error '#[primitive-procedure car] x)
where SIGNAL-PRIMITIVE-ERROR is compiled like this:
(define (signal-primitive-error primitive . arguments)
(apply primitive arguments)
(error "..."))
Stephen Adams [Wed, 24 Jul 1996 23:42:04 +0000 (23:42 +0000)]
Fixed missing argument bug.
Stephen Adams [Wed, 24 Jul 1996 22:56:34 +0000 (22:56 +0000)]
Fixed typo.
Stephen Adams [Wed, 24 Jul 1996 22:32:30 +0000 (22:32 +0000)]
Fixed a bug with constant folding binary operators: the continuation
was being ignored.
Added a whole bunch of code to rewrite return (and calls with few
arguments) sequences that are passing an inlined predicate or
conditional expression.
For limited cases, for example, returning (null? x) or tail-calling, e.g.
(f (if (pair? x) (car x) #F))
there is small benefit.
Stephen Adams [Wed, 24 Jul 1996 17:07:07 +0000 (17:07 +0000)]
Made extra arguments in some calls (e.g. %internal-apply) explicit to
COMPAT/REWRITE-CALL/SPLIT.
Stephen Adams [Wed, 24 Jul 1996 15:11:44 +0000 (15:11 +0000)]
Added code so that %RECORD-REF/SET! at known index 0 does not do a
range check. %RECORDs are always created with at least a descriptor
slot.
Stephen Adams [Wed, 24 Jul 1996 04:44:06 +0000 (04:44 +0000)]
Improved hashing of flonums.
Stephen Adams [Wed, 24 Jul 1996 04:03:51 +0000 (04:03 +0000)]
Made CSE of predicate arguments only occur for REGISTER expressions.
This allows pre-cse-rewriting to block cheap arguments from being
CSE-ed.
Stephen Adams [Wed, 24 Jul 1996 03:45:18 +0000 (03:45 +0000)]
. Fixed bug that was preventing CSE of flonums.
. Changed `CSE avoiding' rewrites to use CONSTANT-REGISTER-EXPRESSION, thus
including #F and '() in the games we play with `0'.
. Punted the `is-rtl-zero?' predicate as no longer used.
. Simplified REGISTER-KNOWN-FIXNUM-CONSTANT
. Added `CSE avoiding' rewrites for comparison operators.
Stephen Adams [Wed, 24 Jul 1996 03:33:54 +0000 (03:33 +0000)]
. Improved predicates FITS-IN-nn-BITS?.
. Split REGISTER-EXPRESSION, extracting CONSTANT-REGISTER-EXPRESSION for the
pre-loaded registers.
Stephen Adams [Wed, 24 Jul 1996 03:25:54 +0000 (03:25 +0000)]
Tweaked with constant costs.
Removed some code from the ols split type-code compiler.
Stephen Adams [Wed, 24 Jul 1996 03:09:30 +0000 (03:09 +0000)]
Extended hashing to include reals rather than just (exact and inexact)
integers. Enables flonums like PI to be subject to CSE.
Stephen Adams [Tue, 23 Jul 1996 20:02:21 +0000 (20:02 +0000)]
Removed rules containing CHAR->ASCII because the rtlgen.scm does not
generate this RTL.
Stephen Adams [Tue, 23 Jul 1996 19:23:21 +0000 (19:23 +0000)]
revert one line.
Stephen Adams [Tue, 23 Jul 1996 19:11:20 +0000 (19:11 +0000)]
Removed lots (500 lines) of tagged-fixnum code. If you want it, use
RCS. Changed the comments to reflect the current code.
Made things more robust:
. Changed FITS-IN-nn-BITS? predicates to test for fixnum arguments.
. Changed all the register*constant and constant*register predicates
to be true only if the constant is a *fixnum* in the correct range.
. Punted the GUARANTEE-SIGNED-FIXNUM (as the predicates now guarantee it).
The net effect is that the compiler now compiles code like (fix:+ x
1.2) or (fix:* 'a n) to the obvious, albeit meaningless, instructions
rather than signalling a confusing error. Note that the midend
typerew phase can generate error messages for any of these conditions.
Stephen Adams [Tue, 23 Jul 1996 16:13:42 +0000 (16:13 +0000)]
Changed FORM->SOURCE-IRRITANT to give a more useful output when source
is not available.
Stephen Adams [Tue, 23 Jul 1996 15:41:23 +0000 (15:41 +0000)]
Removed old (mostly unused) method of reporting type errors via bogus
re-writes that issue the warning and leave the program unchanged.
Replaced with type-checks based on the typedb information. All
operators with typedb information are checked (not just those with
rewrites). Checking (and thus warnings) are disabled by setting
COMPILER:TYPE-ERROR-WARNINGS? to false.
Stephen Adams [Tue, 23 Jul 1996 15:34:53 +0000 (15:34 +0000)]
Added type:user-description, which gives an english description of the
type for some simple types.
Stephen Adams [Tue, 23 Jul 1996 15:33:51 +0000 (15:33 +0000)]
Fixed typo.
Stephen Adams [Tue, 23 Jul 1996 15:17:13 +0000 (15:17 +0000)]
Removed debugging print code, reformated 2 small procedures.
Stephen Adams [Tue, 23 Jul 1996 14:57:33 +0000 (14:57 +0000)]
Added switch compiler:type-error-warnings?, default true.
Stephen Adams [Tue, 23 Jul 1996 14:49:42 +0000 (14:49 +0000)]
Added SORT[!], FOR-EACH and MAP, and some generic arithmetic operators.
Stephen Adams [Tue, 23 Jul 1996 03:44:03 +0000 (03:44 +0000)]
Fixed to keep runtime and runtime-check debugging info separate.
Stephen Adams [Tue, 23 Jul 1996 02:28:13 +0000 (02:28 +0000)]
Disable optimizations with INTEGER-<relation> because it causes loops
in the arith.scm generic handlers.
Stephen Adams [Tue, 23 Jul 1996 02:27:12 +0000 (02:27 +0000)]
Fix typos.
Stephen Adams [Mon, 22 Jul 1996 23:12:49 +0000 (23:12 +0000)]
Fixed bug in typerew/remember* (it was sometimes returning unspecific).
Stephen Adams [Mon, 22 Jul 1996 19:04:06 +0000 (19:04 +0000)]
Added EXACT->INEXACT, INEXACT->EXACT, MAKE-STRING, MAKE-VECTOR,
STRING, STRING-APPEND and STRING-COPY to global procedures.
Stephen Adams [Mon, 22 Jul 1996 18:48:32 +0000 (18:48 +0000)]
Removed suggestion mechanism for rewrites. It was no longer used and
might be a problem because it couples type analysis to the use of the
information.
Stephen Adams [Mon, 22 Jul 1996 18:06:48 +0000 (18:06 +0000)]
Deleted unused let-binding.
Stephen Adams [Mon, 22 Jul 1996 18:04:14 +0000 (18:04 +0000)]
. Changes to permit use of procedures with variable arity in the
typedb.scm database.
. EXACT->INEXACT may be replaced by %fixnum->flonum if appropriate.
. Changes to generic arithmetic for fix*flo combinations. Now these
are open-coded with an explicit conversion (which man be constant
folded).
Stephen Adams [Mon, 22 Jul 1996 17:49:20 +0000 (17:49 +0000)]
Added LENGTH, and vector and string constructors.
Stephen Adams [Mon, 22 Jul 1996 17:47:18 +0000 (17:47 +0000)]
Improved the ascii byte store code (elide object->datum on store).
Stephen Adams [Mon, 22 Jul 1996 17:46:16 +0000 (17:46 +0000)]
Removed useless rule for flonum-subtract.
Stephen Adams [Mon, 22 Jul 1996 17:45:29 +0000 (17:45 +0000)]
Canonicalized (flonum-less? x 0.) to flonum-negative? etc.
Stephen Adams [Mon, 22 Jul 1996 16:24:01 +0000 (16:24 +0000)]
Added open-coder for %fixnum->flonum.
Stephen Adams [Mon, 22 Jul 1996 04:46:15 +0000 (04:46 +0000)]
*** empty log message ***
Stephen Adams [Mon, 22 Jul 1996 04:45:41 +0000 (04:45 +0000)]
Added (FLONUM-1-ARG FIXNUM->FLONUM ...) rules.
Stephen Adams [Sat, 20 Jul 1996 23:03:03 +0000 (23:03 +0000)]
Added constant-folding of %fixnum->flonum.
Stephen Adams [Sat, 20 Jul 1996 22:57:13 +0000 (22:57 +0000)]
Added %fixnum->flonum.
Stephen Adams [Sat, 20 Jul 1996 22:36:00 +0000 (22:36 +0000)]
Typo.
Stephen Adams [Sat, 20 Jul 1996 22:26:26 +0000 (22:26 +0000)]
Added FIXNUM->FLONUM.
Stephen Adams [Sat, 20 Jul 1996 18:30:14 +0000 (18:30 +0000)]
Added STRING relational operators.
Stephen Adams [Sat, 20 Jul 1996 18:08:46 +0000 (18:08 +0000)]
Added switch compiler:rtl-instruction-scheduling?
Stephen Adams [Sat, 20 Jul 1996 17:59:37 +0000 (17:59 +0000)]
Fixed type checked indexed operators to not generate a type check for
indexes that are known to be fixnums.
Stephen Adams [Fri, 19 Jul 1996 23:53:58 +0000 (23:53 +0000)]
Fixed bug in PROCEDURE-TYPE.
Added TYPE:->CONSTANT.
Stephen Adams [Fri, 19 Jul 1996 23:32:03 +0000 (23:32 +0000)]
Added rewrite code to replace an expression with a literal if the type
system tells us what the value must be. Most useful for
IF-predicates, as replacing <pred> by, e.g., (BEGIN <pred> '#T) allows
the dead code to be removed.
Added predicate code to yield a #T or #F value. Previously the
predicate information was being used only in the branches of an if.
Obviously, it is nice to know when the predicate is always true or
false.
Tweaked with inference rules for EQ?/EQV?/EQUAL?. This could be
better, for example, if (eq? x y) then we know the types must be in
the intersection. This would require work in TYPEREW/PRED.
Stephen Adams [Fri, 19 Jul 1996 18:27:18 +0000 (18:27 +0000)]
Added an arity check so that primitives with rewrite rules but used
with teh wrong arity are silently ignored. The applicat phase will
give a warning.
Added rewrites for most int: primitives to produce fixnum diamonds, or
to use the generic operations (for comparisons).
Stephen Adams [Fri, 19 Jul 1996 02:50:10 +0000 (02:50 +0000)]
Exported flag compiler:rtl-instruction-scheduling?
Stephen Adams [Fri, 19 Jul 1996 02:49:36 +0000 (02:49 +0000)]
SET-INTERRUPT-ENABLES! is now open-coded as a special primitive unless
'SET-INTERRUPT-ENABLES! is in compiler:primitives-with-no-open-coding.
Stephen Adams [Fri, 19 Jul 1996 02:28:32 +0000 (02:28 +0000)]
SET-INTERRUPT-ENABLES! is now open-coded as a special primitive unless
'SET-INTERRUPT-ENABLES! is in compiler:primitives-with-no-open-coding.
Stephen Adams [Fri, 19 Jul 1996 02:22:05 +0000 (02:22 +0000)]
Added set_interrupt_enables_hook
Stephen Adams [Wed, 17 Jul 1996 21:37:45 +0000 (21:37 +0000)]
Added rules for %/, which enables &/ -> flo:/
Stephen Adams [Wed, 17 Jul 1996 20:48:42 +0000 (20:48 +0000)]
Fixed bug in TYPEREW/EXPR*/UNORDERED/HARD where type information was
being lost because the list had been REVERSE!-ed.
Stephen Adams [Fri, 12 Jul 1996 20:20:56 +0000 (20:20 +0000)]
Added graphcis operations DRAW-ARC, DRAW-CIRCLE and FILL-CIRCLE.
Stephen Adams [Fri, 12 Jul 1996 20:12:15 +0000 (20:12 +0000)]
Fixed X-GRAPHICS-DRAW-ARC to do the right thing when the X and/or Y
axes are flipped.
Stephen Adams [Fri, 12 Jul 1996 18:51:05 +0000 (18:51 +0000)]
Added X-graphics documentation about DRAW-CIRCLE and FILL-CIRCLE.
Stephen Adams [Fri, 12 Jul 1996 18:03:45 +0000 (18:03 +0000)]
Added X-GRAPHICS/DRAW-ARC, X-GRAPHICS/DRAW-CIRCLE and X-GRAPHICS/FILL-CIRCLE.
Stephen Adams [Fri, 12 Jul 1996 17:52:28 +0000 (17:52 +0000)]
Added X-GRAPHICS-DRAW-ARC for drawing filled and unfilled arcs.
Chris Hanson [Tue, 2 Jul 1996 21:13:29 +0000 (21:13 +0000)]
Rewrite `poll' support to make it conditionalized more cleanly.
Chris Hanson [Tue, 2 Jul 1996 21:03:25 +0000 (21:03 +0000)]
Use POLLNORM in preference to POLLIN since the former is supported
more widely.
Chris Hanson [Tue, 2 Jul 1996 21:01:15 +0000 (21:01 +0000)]
Fix minor bug in handling of cursor during SCREEN-FORCE-UPDATE.
Chris Hanson [Mon, 1 Jul 1996 23:28:17 +0000 (23:28 +0000)]
If the `poll' system call is available, use it in preference to
`select'. This is needed for HP-UX 10.10 because `select' is broken
in that release.
Chris Hanson [Mon, 1 Jul 1996 23:27:18 +0000 (23:27 +0000)]
Add conditionalization to detect versions of HP-UX that supply the
`poll' system call.
Chris Hanson [Mon, 1 Jul 1996 23:25:27 +0000 (23:25 +0000)]
Add conditionalization to detect HP-UX version 10.10.
Chris Hanson [Sun, 16 Jun 1996 05:18:24 +0000 (05:18 +0000)]
Fix bug that caused RMAIL to signal an error when converting poorly
formed messages to RMAIL format.
Chris Hanson [Tue, 11 Jun 1996 04:29:58 +0000 (04:29 +0000)]
Implement "engineering" display mode.
Stephen Adams [Fri, 7 Jun 1996 04:34:16 +0000 (04:34 +0000)]
Included "load.scm" in syntax sequence.
Added copyright notice.
Stephen Adams [Fri, 7 Jun 1996 04:29:09 +0000 (04:29 +0000)]
Any identifier containing `protect' is no longer exported.
Chris Hanson [Thu, 6 Jun 1996 21:07:57 +0000 (21:07 +0000)]
Extend FLONUM-UNPARSER-CUTOFF to allow specification of the display
mode, e.g. SCIENTIFIC or ENGINEERING.
Chris Hanson [Fri, 24 May 1996 07:33:41 +0000 (07:33 +0000)]
Fix bug: don't enqueue a process in the process-input-queue if it is
already in the queue. Otherwise, it can easily get entered very many
times: if there is input waiting, and the editor is busy, the process
will be queued as often as the select code can run.
Chris Hanson [Sat, 18 May 1996 06:16:11 +0000 (06:16 +0000)]
Change mechanism used to open files and sockets, so that interrupts
are enabled during the open. This is necessary, because any
network-based operation could potentially hang for long periods of
time, and it's desirable for the user to be able to interrupt out of
the operation.
This change requires microcode version 11.154 (or the corresponding
version 13).
In addition to this change, the low-level channel code was changed to
eliminate the now-obsolete gc-daemon interlocking code.
Chris Hanson [Sat, 18 May 1996 06:10:25 +0000 (06:10 +0000)]
Fix code so that interrupts delivered during socket calls will
deallocated sockets where necessary.
Chris Hanson [Sat, 18 May 1996 06:09:25 +0000 (06:09 +0000)]
Add code to allow delivery of interrupts during socket-opening system
calls.
Chris Hanson [Sat, 18 May 1996 06:08:14 +0000 (06:08 +0000)]
Implement new primitives to support new method for opening files and
sockets. This code is required for runtime version 14.170.
Chris Hanson [Fri, 17 May 1996 17:49:45 +0000 (17:49 +0000)]
Allow keyboard interrupts while opening sockets. This is only a
partial solution: there is a small window in which an interrupt can
arrive, leaving the descriptor open but forgotten.
Chris Hanson [Fri, 17 May 1996 17:47:59 +0000 (17:47 +0000)]
Implement new procedure, like WITHOUT-INTERRUPTS, except that it
allows keyboard interrupts.
Chris Hanson [Fri, 17 May 1996 17:26:03 +0000 (17:26 +0000)]
Allow interrupt delivery during socket system calls.
Chris Hanson [Fri, 17 May 1996 17:10:18 +0000 (17:10 +0000)]
Fix typo.
Chris Hanson [Wed, 15 May 1996 20:05:50 +0000 (20:05 +0000)]
Fix thinko.
Chris Hanson [Wed, 15 May 1996 19:10:52 +0000 (19:10 +0000)]
Fix bug: GROUP-INSERT-FILE! was depending on the fact that
INPUT-BUFFER/READ-SUBSTRING did not return until the argument buffer
was full -- which is no longer true.
Chris Hanson [Wed, 15 May 1996 18:48:40 +0000 (18:48 +0000)]
Eliminate random heuristic buffer-size modulation from previous
change. It turns out that the behavior that necessitated this
heuristic was a bug in the runtime system.
Chris Hanson [Wed, 15 May 1996 18:47:19 +0000 (18:47 +0000)]
Eliminate loop in INPUT-BUFFER/READ-SUBSTRING. When line-translation
was in effect, this loop caused this procedure to read input until the
buffer was filled. However, the procedure is supposed to return as
soon as some input is available.
Chris Hanson [Wed, 15 May 1996 06:10:56 +0000 (06:10 +0000)]
Fix thinko: point was not being moved appropriately when marking
headers backwards.
Chris Hanson [Wed, 15 May 1996 05:51:26 +0000 (05:51 +0000)]
Fix typo.