Daniel Kochmański
44f33cb251
cmp: cleanup of predicates loc-with-*-p
...
We first explicitly test for an ATOM and after that we use CASE.
2023-11-23 08:02:38 +01:00
Daniel Kochmański
fa9a985b08
cmp: cosmetic changes
2023-11-23 08:02:38 +01:00
Daniel Kochmański
be68897012
cmp: defpackage uses strings instead of uninterned symbols
2023-11-23 08:02:38 +01:00
Daniel Kochmański
5bf5ec4f80
bytecmp: fix outdated comments
2023-11-23 08:02:38 +01:00
Daniel Kochmański
5aa1a52db2
bytecmp: remove unused defines
2023-11-23 08:02:38 +01:00
Daniel Kochmański
ceddb1559b
core: add a macro ecl_frs_pop_n
2023-11-23 08:02:38 +01:00
Daniel Kochmański
17f1c5b356
Merge branch 'stream-line-length' into 'develop'
...
Add gray:stream-line-length
See merge request embeddable-common-lisp/ecl!309
2023-11-22 21:03:29 +00:00
Daniel Kochmański
01322dc986
Update gray-streams.txi (fix typo)
2023-11-22 20:05:27 +00:00
Daniel Kochmański
f62622802c
core: argument checking in si:get-limit and si:set-limit
...
Previously we've falled through all cases and if none matched, we've used the
heap. That said our documentation clearly states, that the type for the heap is
EXT:HEAP-SIZE.
2023-11-22 13:45:23 +01:00
Tarn W. Burton
e0aa99c610
Update docs for gray-streams changes
2023-11-20 15:21:35 -05:00
Tarn W. Burton
0abaa78feb
Add gray:stream-line-length
2023-11-20 15:21:35 -05:00
Marius Gerbershagen
ac89091af1
Merge branch 'cmpc-separation' into 'develop'
...
Compiler pass separation
See merge request embeddable-common-lisp/ecl!292
2023-11-20 19:28:58 +00:00
Daniel Kochmański
931853d186
manual: include the file gray-streams.txi
2023-11-20 16:38:41 +01:00
Daniel Kochmański
ff136c7df6
Merge branch 'fix-stream-terpri' into 'develop'
...
Return NIL from stream-terpri
See merge request embeddable-common-lisp/ecl!310
2023-11-20 14:50:14 +00:00
Daniel Kochmański
d308c5cdfb
cmp: object-type: do not depend on an exact type name
...
Previously object-type first called (TYPE-OF THING) and then matched it with
exact type names. This fails when we have a more precise type, i.e
(type-of 3) -> (integer 3 3)
(eq 'fixnum '(integer 3 3)) -> nil
=>
(object-type 3) -> T
and that left us with subpar optimizations down the road.
2023-11-20 12:22:30 +01:00
Daniel Kochmański
6e161b5f44
cmp: add a comment that explains the purpose of the structure VV
2023-11-20 12:22:22 +01:00
Tarn W. Burton
a597fc07b1
Return NIL from stream-terpri
2023-11-19 14:27:35 -05:00
Daniel Kochmański
edfaec9a6b
cmp: add a comment that explains the purpose of OPTIMIZE-CXX-DATA
2023-11-17 11:21:21 +01:00
Daniel Kochmański
1b8d1041dd
cmp: optimize-cxx-data: reorder optimizations
...
Previously we've tried first to add-static-constnat, although that led to a
situation where we've created static constant even if we had that value in the
core. Right now a static constant is the last thing to try when we attempt to
optimize the object. The order is quite arbitrary - the comment before the
function explains that we could avoid coercion with some additional work.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
3628a843ab
cmp: rename c1form VAR to VARIABLE
...
This is more consistent with LOCATION and is less likely to be confused with
arguments named var.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
16a6ef5e04
cmp: group c1form types in a more readable order
2023-11-17 11:21:21 +01:00
Daniel Kochmański
b70fac0112
cosmetic: minor fixes to the compiler
2023-11-17 11:21:21 +01:00
Daniel Kochmański
29d038a93c
cmpc: fix the inliner for cl:expt to return 1 (not 0) for (expt 0 0)
...
The CL standard expects to always return 1 in that case.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
7e63354631
cmpc: constant optimizers: don't create an intermediate location
...
We use now constant optimizers to update existing VV and there is no need to
box them in a location node.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
2e732782ac
cmp: move data inlining to the second pass
...
c1constant-value etc does not attempt to create inlined vv - it is the
responsibility of the data pre-processing pass.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
fb4cd1ef26
cmpc: move more variables to the cxx backend
2023-11-17 11:21:21 +01:00
Daniel Kochmański
2304da9a83
cmpc: separate the data segment creation passes
2023-11-17 11:21:21 +01:00
Daniel Kochmański
debec42950
cmp: cleanup: move the function NEW-LOCAL to cmppass2-fun
2023-11-17 11:21:21 +01:00
Daniel Kochmański
e8f3609078
cmpc: split CALL-UNKNOWN-GLOBAL-LOC to -LOC and -FUN
...
Both variants have distinct and mutually exclusive (based on the code) usages.
Moreover, when dealing with a function name, always use FDEFINITION location.
This is a speculation, but only basic cases were handled with FDEFINITION
because WT-FDEFINITION could only handle symbols in CL package and otherwise a
slower method was used. WT-FDEFINITION can handle now all valid function names
including (SETF FOO) and function names not contained in core packages.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
c7f0ed8bb5
cmp: data segment: add function names with ADD-FNAME
...
Instead of ADD-SYMBOL. The latter now asserts that the argument is a symbol. The
function name on the other hand may be a SYMBOL or (SETF SYMBOL).
2023-11-17 11:21:21 +01:00
Daniel Kochmański
8fd7a81f87
cmp: inline constants in the second pass
...
Also revert a kludge from the commit 8e3f1f0a36 :
"cmp: add a kludge for C1CONSTANT-VALUE using *OPTIMIZABLE-CONSTANTS*".
2023-11-17 11:21:21 +01:00
Daniel Kochmański
05d7516691
cmp: c2var: take a vv as a second argument for constants
2023-11-17 11:21:21 +01:00
Daniel Kochmański
222ab1bfa4
cmp: don't pass "raw" boolean values in the second pass
...
T and NIL are expected to be wrapped in an intermediate structure representing
the value. This improves the separation between the host and the target language.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
ba3afa81f3
cmp: constants: get rid of an edge case where we return a list
2023-11-17 11:21:21 +01:00
Daniel Kochmański
5427ba657b
cmp: don't resolve floats and complex floats in the first pass
...
We remove *-VALUE location in favor of VV instances.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
d2cda52d26
cmp: don't resolve characters in the first pass
...
We remove CHARACTER-VALUE location in favor of VV instances that does not have a
location.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
3282f17b11
cmp: don't resolve fixnums in the first pass
...
We remove FIXNUM-VALUE location in favor of VV instances that does not have a
location.
2023-11-17 11:21:21 +01:00
Daniel Kochmański
0ee8c94894
cmp: handle-compiler-error: respect *compiler-break-enable* flag
2023-11-17 11:21:21 +01:00
Daniel Kochmański
2414e829cc
tests: cmp: add regression tests for this branch
2023-11-17 11:21:21 +01:00
Daniel Kochmański
ad4002e578
Merge branch 'fix-typo' into 'develop'
...
Fix generic definition of stream-file-length
See merge request embeddable-common-lisp/ecl!308
2023-11-16 17:28:43 +00:00
Tarn W. Burton
dda901a394
Fix generic definition of stream-file-length
2023-11-16 12:26:40 -05:00
Daniel Kochmański
9c7c62ed7f
Merge branch 'gray-file-length' into 'develop'
...
Add gray:stream-file-length
See merge request embeddable-common-lisp/ecl!307
2023-11-16 16:00:33 +00:00
Daniel Kochmański
2fb0e7d42c
Merge branch 'gray-streams-module' into 'develop'
...
Add gray-streams module to avoid use of redefine-cl-functions
See merge request embeddable-common-lisp/ecl!306
2023-11-16 13:34:25 +00:00
Tarn W. Burton
edd88aac45
Add gray-streams module to avoid use of redefine-cl-functions
2023-11-15 12:30:08 -05:00
Tarn W. Burton
b9a7d06635
Add gray:stream-file-length
2023-11-12 16:14:34 -05:00
Daniel Kochmański
2eb24b09d7
Merge branch 'various-compiler-improvements' into develop
2023-10-30 12:02:50 +01:00
Marius Gerbershagen
3f03a0c686
cmp: fix caching of type specifiers
...
We cannot compare with (equal) here because subtype relations can
differ for member and eql types even if the type specifiers are the
same under equal.
2023-10-30 12:01:21 +01:00
Marius Gerbershagen
b65b7d3825
cmp: expand compiler macros for callsites in the same source file as the compiler macro definition
2023-10-30 12:01:21 +01:00
Marius Gerbershagen
1bbae5a0bc
cmp: fix incorrect type proclamations
2023-10-30 12:01:20 +01:00
Marius Gerbershagen
58c5782fe7
cmp: also perform type propagation in disassemble
2023-10-30 12:01:20 +01:00