summaryrefslogtreecommitdiff
path: root/module
AgeCommit message (Collapse)AuthorFilesLines
2021-04-26Simplify module variable lookup slow-pathAndy Wingo5-9/+56
* libguile/intrinsics.h: * libguile/intrinsics.c (lookup_bound_public, lookup_bound_private): Two new intrinsics. (scm_bootstrap_intrinsics): Wire them up. * libguile/jit.c (compile_call_scm_from_scmn_scmn): (compile_call_scm_from_scmn_scmn_slow): (COMPILE_X8_S24__N32__N32__C32): Add JIT support for new instruction kind. * libguile/vm-engine.c (call-scm<-scmn-scmn): New instruction, takes arguments as non-immediate offsets, to avoid needless loads and register pressure. * module/language/cps/effects-analysis.scm: Add cases for new primcalls. * module/language/cps/compile-bytecode.scm (compile-function): Add new primcalls. * module/language/cps/reify-primitives.scm (cached-module-box): If the variable is bound, call lookup-bound-public / lookup-bound-private as appropriate instead of separately resolving the module, name, and doing the bound check. * module/language/tree-il/compile-bytecode.scm (emit-cached-module-box): Use new instructions. * module/system/vm/assembler.scm (define-scm<-scmn-scmn-intrinsic): (lookup-bound-public, lookup-bound-private): Add assembler support.
2021-04-25Fix cached-module-box cache keysAndy Wingo1-2/+2
* module/language/cps/reify-primitives.scm (cached-module-box): Include public? in cache key, so we don't accidentally alias private and exported names. Also include bound?, to avoid a window in which thread A resolves and caches var V in preparation for setting it, but thread B sees V for ref before it was initialized.
2021-04-25Fix bugs introduced when allowing $kfun -> $kargsAndy Wingo2-3/+6
* module/language/cps/dce.scm (compute-known-allocations): * module/language/cps/simplify.scm (eta-reduce): Allow the case-lambda without clauses.
2021-04-23Fix comments in cps/compile-bytecodeAndy Wingo1-2/+5
* module/language/cps/compile-bytecode.scm (compile-function): Fix unfinished comments.
2021-04-21New pass: elide-arity-checksAndy Wingo4-1/+112
* module/language/cps/elide-arity-checks.scm: New file. Elides argument count checks for known callers. * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): Add new file. * module/language/cps/optimize.scm (optimize-first-order-cps): * module/system/base/optimize.scm (available-optimizations): Add new pass.
2021-04-21Allow $kargs as entry of $kfunAndy Wingo9-54/+101
* module/language/cps.scm: * module/language/cps/contification.scm: * module/language/cps/cse.scm: * module/language/cps/dce.scm: * module/language/cps/simplify.scm: * module/language/cps/slot-allocation.scm: * module/language/cps/types.scm: Allow $kargs to follow $kfun. In that case, the function must be well-known and callers are responsible for calling with the appropriate arity. * module/language/cps/compile-bytecode.scm: Emit "unchecked-arity" for $kargs following $kfun. * module/system/vm/assembler.scm: Adapt.
2021-04-21Mark some elisp runtime modules as non-declarativeAndy Wingo2-2/+4
* module/language/elisp/runtime/function-slot.scm (language): * module/language/elisp/runtime/value-slot.scm (language): Non-declarative.
2021-04-21Optimize letrec* binding order in fix-letrecAndy Wingo1-3/+41
* module/language/tree-il/fix-letrec.scm (reorder-bindings): (fix-letrec): Reorder definitions so that lambdas tend to stick together, to avoid "complex" expressions interposing in lambda SCCs.
2020-08-13ice-9 ftw: Use 'absolute-file-name?' in 'nftw'.Jan (janneke) Nieuwenhuizen1-4/+1
* module/ice-9/ftw.scm (abs?): Remove. (nftw): Use 'absolute-file-name?' instead.
2021-04-01Fix handling of parameter lists to elisp defun to allow nil.Mikael Djurfeldt1-0/+1
Thanks to Vasilij Schneidermann.
2021-03-19goops: Preserve all slot options in redefinable classes.David Thompson1-7/+9
* module/goops.scm (compute-slots): Fix <redefinable-class> slot transformation. * test-suite/tests/goops.test ("slot options on redefinable classes"): Add a test.
2021-03-19web: 'tls-wrap' returns an unbuffered custom port.Ludovic Courtès1-3/+10
This mirrors Guix commit b168acae2a01fd84075cc134a6140594a978fde5. * module/web/client.scm (tls-wrap)[unbuffered]: New procedure. Pass the result of 'make-custom-binary-input/output-port' to 'unbuffered'.
2021-03-19web: 'tls-wrap' avoids intermediate buffer.Ludovic Courtès1-10/+7
This mirrors Guix commit 279d932b1ca7bfbb8657c41a84616dd0dfc6e0a8. * module/web/client.scm (tls-wrap)[read!]: Read straight into BV instead of calling 'get-bytevector-some' and 'unget-bytevector'.
2021-03-13On Cygwin, 'lib' DLLs use 'cyg' prefixMike Gran1-1/+23
When using automake and libtool to build DLLs on Cygwin, libtool will rename libXXX to cygXXX. 'load-foreign-library' should emulate libltdl behavior and search for DLLs using that convention. * module/system/foreign-library.scm (lib->cyg): new helper function (load-foreign-library): add rename-on-cygwin? option to rename libraries using Cygwin semantics * test-suite/tests/foreign.test: new test section 'lib->cyg' * doc/ref/api-foreign.text: document new rename-on-cygwin? option for load-foreign-library
2021-03-12Fix hash-table-merge! bug.Ricardo G. Herdt1-1/+1
* module/srfi/srfi-69.scm : fold over second hash table.
2021-03-12Fix suspendable implementation of 'get-bytevector-some!'Andrew Whatson1-1/+1
* module/ice-9/suspendable-ports.scm (get-bytevector-some!): Fix incorrect arguments to bytevector-copy!
2021-03-12Revert "Handle CRLF and Unicode line endings in read-line"Andy Wingo2-80/+11
This reverts commit 0f983e3db0c43ad7c89f57ea84f792ede373ba0c. After discussing with Mike we are going to punt the read-line changes for now. Open the port in O_TEXT mode if you want to chomp the CR in CFLF sequences.
2021-03-11Handle CRLF and Unicode line endings in read-lineMike Gran2-11/+80
* libguile/rdelim.c (scm_read_line): handle CRLF, LS and PS * module/ice-9/suspendable-ports.scm (read-line): handle CRLF, LS, and PS * module/web/http.scm (read-header-line): take advantage of CRLF in read-line (read-header): don't need to test for \return * test-suite/tests/rdelim.test: new tests for read-line CRLF, LS and PS * doc/ref/api-io.texi: update doc for read-line
2021-03-11ice-9 ftw: handle non-working inodesMichael Gran1-13/+29
* module/ice-9/ftw.scm (visited?-proc): accept filename for string hash (file-system-fold): use string hash if ino = 0 (ftw): use new visited?-proc * test-suite/tests/ftw.test (visited?-proc valid inodes): add filenames to visited?-proc calls (visited?-proc broken inodes): new tests (%top-srcdir): canonicalize-path
2021-03-11ice-9 ftw: handle missing getuid and getgidMichael Gran1-15/+25
* module/ice-9/ftw.scm (getuid-or-false, getgid-or-false): new macros (stat-dir-readable?-proc): don't overwrite arguments (ftw, nftw): use new macros * test-suite/tests/ftw.test (test-EACCES): don't presume getuid exists
2021-03-10Add mkstemp; undocument mkstemp!Andy Wingo1-6/+6
* doc/ref/posix.texi (File System): Update to document mkstemp only. * libguile/filesys.c: Make a mkstemp that doesn't modify the input template. Instead the caller has to get the file name from port-filename. (scm_mkstemp): Use the new mkstemp to implement mkstemp!. Can't deprecate yet though as the replacement hasn't been there for long enough. * libguile/posix.c (scm_tempnam): Update to mention mkstemp instead. * module/system/base/compile.scm (call-with-output-file/atomic): Use mkstemp. * test-suite/tests/posix.test: * test-suite/tests/r6rs-files.test: Use mkstemp. * NEWS: Update.
2021-03-09Write a proper vector-map and vector-for-each for (rnrs base)Linus1-5/+76
* module/rnrs/base.scm (vector-map vector-for-each): Rewrite to not be slow. * NEWS: Update.
2021-03-09Document syntax-sourcevAndy Wingo1-1/+2
* NEWS: Add doc link. * doc/ref/api-macros.texi (Syntax Transformer Helpers): Document syntax-sourcev. * module/system/syntax.scm: Re-export syntax-sourcev.
2021-03-07Fix reading #!!#Andy Wingo1-8/+10
* module/ice-9/read.scm (%read): Fix reading #!!#. * test-suite/tests/reader.test ("reading"): Add some test cases.
2021-03-05tweak unknown hash object error in readerMichael Gran1-1/+1
This makes it match the other species of unknown hash object error when reading number with radix. * module/ice-9/read.scm (read-sharp): modified
2021-03-05print token in error msg for unknown hash objectMichael Gran1-1/+1
* module/ice-9/read.scm (read-number-and-radix): modified
2021-03-05Handle <eof> in reader's character escape sequencesMichael Gran1-0/+6
* module/ice-9/read.scm (read-r6rs-hex-escape, read-fixed-hex-escape): modified
2021-03-05Fix reading "#;", "'", and similar premature-EOF situationsAndy Wingo1-24/+24
* module/ice-9/read.scm (%read): Adjust how subexpressions are read to error on EOF. Improve the error message. * test-suite/tests/reader.test ("#;"): Adapt expectation.
2021-03-05Fix reading of #true / #falseAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix bad argument order to unread-char.
2021-03-04Syntax objects print with source locationsAndy Wingo1-2/+11
* module/system/syntax.scm (print-syntax): Print source locations.
2021-03-04Add docstring for array-shapeDaniel Llorens1-2/+12
2021-03-04Fix reading improper curly-infix expressionsAndy Wingo1-3/+3
* module/ice-9/read.scm (%read): A fix to last night's fix, to make srfi-105.test pass.
2021-03-03Fix reading #c32 vectorsAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix a wee typo.
2021-03-03Fix some srfi-105 parsing errorsAndy Wingo1-7/+8
* module/ice-9/read.scm (%read): Fix parsing errors.
2021-03-03Fix length of \U hex escape in new readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): \U escape is 6 digits long.
2021-03-03Fix bug in new array readerDaniel Llorens1-4/+2
* module/ice-9/read.scm (read-array): Return pair for dimension when len is given; single number is lbnd for list->typed-array. * test-suite/tests/arrays.test: More test cases for the reader.
2021-03-03Read-in-scheme replaces boot "read" definitionAndy Wingo6-29/+49
Instead of defining a separate module, given that "read" calls are quite all over the place, we're just going to replace the boot "read" binding with read.scm. This way, we'll be able to remove support for reader options in the boot reader, as it will only ever be used for a finite set of files. * NEWS: Update. * module/Makefile.am (ice-9/boot-9.go): Depend on read.scm. (SOURCES): * am/bootstrap.am (SOURCES): Don't build a ice-9/read.go, as we include it. * module/ice-9/boot-9.scm (read-syntax): Define here, as "include" now uses it. (read-hash-procedures, read-hash-procedure, read-hash-extend): New procedures. Will replace C variants. (read, read-syntax): Include read.scm to define these. * module/ice-9/psyntax-pp.scm (include): Regenerate. * module/ice-9/psyntax.scm (include): Use read-syntax, so we get better source information. * module/ice-9/read.scm (let*-values): New local definition, to avoid loading srfi-11. (%read): Use list->typed-array instead of u8-list->bytevector. * module/language/scheme/spec.scm: Remove (ice-9 read) import; read-syntax is there in the boot environment
2021-03-03Fix unterminated #!...!# error message in Scheme readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Tweak "unterminated block constant" error to be more compatible with C reader.
2021-03-03Fix reading neoteric exprs in Scheme readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Call the inner reader, not the outer reader.
2021-03-03Fix reader extensions in Scheme readerAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix invocation of hash procedure.
2021-03-03Remove textual-ports include from (ice-9 read)Andy Wingo1-2/+1
* module/ice-9/read.scm: We'll be loading this file early, so avoid extraneous deps.
2021-03-02Fix another typo in routine reading arraysDaniel Llorens1-1/+1
* module/ice-9/read.scm: As stated. * test-suite/tests/arrays.test: Test a fixed case.
2021-03-02Fix bug reading arrays with lengthsAndy Wingo1-1/+1
* module/ice-9/read.scm (%read): Fix typo.
2021-02-28Fix Scheme read without source positionsAndy Wingo1-1/+2
* module/ice-9/read.scm (read): Fix annotate when positions are disabled.
2021-02-25Shunt syntax-sourcev to (system syntax internal)Andy Wingo1-1/+2
* module/ice-9/boot-9.scm: Add syntax-sourcev to hidden bindings.
2021-02-25read-syntax uses vector source representationAndy Wingo1-3/+1
* module/ice-9/read.scm (read-syntax): Switch to sourcev format.
2021-02-25Psyntax uses sourcev internallyAndy Wingo2-150/+220
* module/ice-9/psyntax.scm: Use the vector representation of source properties internally. We have to convert to alists when going to Tree-IL, but this will be in harmony with syntax objects once the reader switches to vectors too. * module/ice-9/psyntax-pp.scm: Regenerate.
2021-02-25Assembler writes vector source propertiesAndy Wingo1-2/+2
* module/system/vm/assembler.scm (intern-constant, link-data): Write the vector representation of source instead of the alist. Saves a lot of heap size, object file size, and init time when serializing syntax objects with source.
2021-02-25Optimize run-time init and relocation procedureAndy Wingo1-57/+109
* module/system/vm/assembler.scm (<asm>, make-assembler) (intern-constant, emit-init-constants): Instead of loading a dependent value each time it's needed in the relocation procedure, eagerly patch values when they are created. Allows keeping values in registers, which decreases code size.
2021-02-25Read Scheme via read-syntaxAndy Wingo1-1/+2
* module/language/scheme/spec.scm: Use read-syntax. * test-suite/tests/dwarf.test: Adapt expected source locations. * am/bootstrap.am (SOURCES): Add ice-9/read.