Daniel Kochmański
dfa02ba434
cmp: unwind-label: relax conditions for carrying the value
...
There is no need to carry the location value across the unwind when the
destination is not special, because then we may assign the destination before we
unwind the stack. That allows us to skip examining the unwind requirements.
2023-12-28 12:46:24 +01:00
Daniel Kochmański
d13d400654
cmp: move the variable *DESTINATION* to cmpc
2023-12-28 12:46:24 +01:00
Daniel Kochmański
c2ffcc5deb
cmp: introduce a separate environment for functions
...
There is an environment for the backend, and there is a separate environment for
each function.
2023-12-28 12:46:21 +01:00
Daniel Kochmański
def52d9657
cmp: pull emit-toplevel-form into emit-entry-fun
...
Instead of mincing blocks form-by-form, we put them all in a single function
environment and make them share locals.
2023-12-28 12:42:39 +01:00
Daniel Kochmański
364deb0551
cmp: remove unused bindings
...
EMIT-TOPLEVEL-FORM bound *compile-file-truename* and *compile-file-position* to
be immedietely rebound in T2EXPR (to the same value!).
*COMPILE-TO-LINKING-CALL* is not used anywhere.
2023-12-28 12:42:39 +01:00
Daniel Kochmański
141231f2fe
cmp: remove dead code
2023-12-28 12:42:39 +01:00
Daniel Kochmański
397dc995d4
cmp: cosmetic changes, elaborate in a comment
2023-12-28 12:42:39 +01:00
Daniel Kochmański
b4da521398
cmp: set-loc: fix a braino (don't access special variable)
...
set-loc saves the location to the destination, and while doing so it coerces the
former to the type of the latter. Our code used *destination* as the argument to
LOC-REPRESENTATION-TYPE, but DESTINATION and *DESTINATION* may not be the same.
2023-12-28 12:42:39 +01:00
Daniel Kochmański
b3e85f1014
cmp: move misplaced comment to cmpc-inl-sysfun
2023-12-28 12:42:39 +01:00
Daniel Kochmański
f074f1087b
cmp: cleanup: remove unused function
2023-12-28 12:42:39 +01:00
Daniel Kochmański
125605b1d0
Merge branch 'read-line' into 'develop'
...
Fix stream-read-line return
See merge request embeddable-common-lisp/ecl!312
2023-12-28 10:52:08 +00:00
Daniel Kochmański
1be34217a8
seqmacros: do-sublist: fix an invalid declaration
...
ECL declared the argument %sublist as CONS while it may be either CONS or NIL.
Reported by Alex Wood from Clasp.
2023-12-16 19:23:36 +01:00
Daniel Kochmański
f4af0cc9e3
INSTALL: add an extra hint for emscripten re stack size
...
Fixes #726 .
2023-12-09 09:24:58 +01:00
Daniel Kochmański
1615d72900
cmp: don't attempt to inline constant values with make-load forms
...
This recent regression caused issues when we try to inline values of constants
that are structures. Fixes #727 .
2023-12-07 14:28:01 +01:00
Marius Gerbershagen
758ebc6230
Merge branch 'cmpc-refactor' into 'develop'
...
cmp: further refactor
See merge request embeddable-common-lisp/ecl!311
2023-12-05 20:26:02 +00:00
Tarn W. Burton
ac0f992296
Add tests for Gray read-line
2023-12-04 15:23:38 -05:00
Daniel Kochmański
5a5b327124
cmp: t1/c1expr: top-level symbol macro expansions remain top-level
2023-12-04 21:10:00 +01:00
Daniel Kochmański
6db9231366
cmp: t1epxr*: account for top level forms expanding to atoms
2023-12-04 20:59:29 +01:00
Tarn W. Burton
4ede355c26
Allow empty string for EOF in read-line
2023-12-04 13:01:40 -05:00
Daniel Kochmański
af9d9092c8
cmp: add a comment explaning slots in the structure LABEL
2023-11-25 18:50:13 +01:00
Daniel Kochmański
c2057879e4
cmp: utils: introduce a macro with-lexical-scope
...
This macro introduces a semantical demarcation of an inner lexical scope.
2023-11-25 18:50:13 +01:00
Daniel Kochmański
f57fa4fab3
cmp: set-loc: accept explicit destination argument
...
Most of the time when we've used SET-LOC we've rebound *DESTINATION* for that
particular operation. Instead of doing so right now the argument is explicit and
when we want to use the *DESTINATION* then we simply use it (literally 2 cases).
2023-11-25 18:50:13 +01:00
Daniel Kochmański
ef4ab04eda
cmp: implement foreign data locations
...
Instead of directly opencoding them in t3-defcallback we take a more organized
approach where we work with locations. This is part of larger refactor.
2023-11-25 18:50:13 +01:00
Daniel Kochmański
ef36cf53e0
cmp: abstract away STACK emitter with a macro
...
We also get rid of (STACK <int>) exit in favor of an explicit frame. This was
used only by UNWIND-PROTECT for no apparent reason.
2023-11-25 18:50:13 +01:00
Daniel Kochmański
f72726a032
cmp: abstract away FRAME emitter with a macro
2023-11-25 18:50:13 +01:00
Daniel Kochmański
11aa544292
cmp: rewrite c2progn for readibility
2023-11-25 18:50:13 +01:00
Daniel Kochmański
521e815158
cmp: rewrite c2tagbody-body for readibility
2023-11-25 18:50:13 +01:00
Daniel Kochmański
938a757220
cmp: merge operators with-exit-label and with-optional-exit-label
...
Their core difference was that the latter coudl reuse the destination. We make
the exit argument explicit and optional in with-exit-label.
2023-11-25 18:50:13 +01:00
Daniel Kochmański
62c68c5bbc
cmp: factor out emit-entry-fun from ctop-write
2023-11-25 18:50:13 +01:00
Daniel Kochmański
abd109c982
cmp: further rewrite the exit manager for clearity
...
This commit makes the exit type explicit and removes a need to test the result
of UNWIND-COND.
2023-11-25 18:50:13 +01:00
Daniel Kochmański
c03d856556
cmp: rewrite the exit manager for clearity
...
This commit rewrites UNWIND-EXIT to explicitly handle conditional jumps. We
remove misleading SET-JUMP-{TRUE,FALSE} and implement them locally.
2023-11-25 18:50:11 +01:00
Daniel Kochmański
f0634e3301
cmp: remove invalid optimization from unwind-exit
...
The optimization assumed, that we don't need to unwind stacks when there are no
bds nor stack frame changes. That leads to a corrupted IHS environment among
other things.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
38e45ad026
cmp: exit manager has now two main ops UNWIND-EXIT and UNWIND-JUMP
...
unwind-exit assigns the destination and jumps to the target
unwind-jump ignores the destination and jumps to the target
2023-11-25 18:48:59 +01:00
Daniel Kochmański
4d412cc6f9
cmp: LABEL captures the current *UNWIND-PROTECT* as LABEL-DENV
...
Thanks to this change we may get rid of explicit TAG-UNWIND-PROTECT slot in
favor of relying on the tag label. Also rename TAG-LABEL to TAG-JUMP to
emphasize similarity to BLK-EXIT.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
2f997ab990
cmp: refactor the exit manager to compute unwind-exit delta
2023-11-25 18:48:59 +01:00
Daniel Kochmański
94148e0e34
cmp: rename the location tag VALUES to VALUEZ
...
This tag is distinct from the Common Lisp operator so we use a distinct name to
avoid possible confusion.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
55863c3f28
cmp: rename the location tag RETURN to LEAVE
...
This tag is distinct from the Common Lisp operator so we use a distinct name to
avoid possible confusion.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
b8528d0d1c
cmp: exit manager: remove the dead code for typed return locations
...
We never bind *EXIT* to returns other than 'RETURN.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
2e941b417c
cmp: small cleanup of internal errors in the exit manager
2023-11-25 18:48:59 +01:00
Daniel Kochmański
c879cb16c0
cmp: make LABEL an instance (not a cons)
2023-11-25 18:48:59 +01:00
Daniel Kochmański
77f0810d22
cmp: c2catch uses GENSYM instead of incrementing *last-label*
...
The assigned "code" is only part of the comment, so it is clearly not the label.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
97411d9e32
cmp: unwind-exit: remove unused optional argument
...
We move jump-p flag to aux variables.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
255e229519
cmp: factor out wt-install-function from c2fset
2023-11-25 18:48:59 +01:00
Daniel Kochmański
cebb13f979
cmp: don't allow for t2expr arguments not being c1forms.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
51da30dd61
cmp: move build-debug-lexical-env to cmppass2-var
2023-11-25 18:48:59 +01:00
Daniel Kochmański
0041e7d8da
cmp: use correctly with-exit-label
...
Previusly we've duplicated some code with regard to this macro, most notably
we've bound *exit* separately to label instead of passing it as a first arg.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
7541d813ea
cmp: improve code locality in cmppass2-var
2023-11-25 18:48:59 +01:00
Daniel Kochmański
cd936a36f4
cmp: update *destinations* description and remove dead code
2023-11-25 18:48:59 +01:00
Daniel Kochmański
af3d3a00c8
cmp: with-compiler-env: handle COMPILER-INTERNAL-ERROR first
...
We've handled COMPILER-ERROR before COMPILER-INTERNAL-ERROR, but the latter is
a subclass of the former, so it was never triggered.
2023-11-25 18:48:59 +01:00
Daniel Kochmański
3f2f935411
cmp: minor changes to emit-functions
2023-11-25 18:48:59 +01:00