Andy Wingo
58b2315657
Beginnings of CPS section in manual
...
* doc/ref/compiler.texi (Continuation-Passing Style): Beginnings of this
section. Will be finished when we fix implicit truncation.
2013-12-10 19:49:56 +01:00
Andy Wingo
660f2775e9
Fix cross-references in api-macros.texi
...
* doc/ref/api-macros.texi (Macro Expansion): Fix cross-references.
2013-12-10 19:49:56 +01:00
Andy Wingo
7bbfc02959
Arities-fixing pass handles incoming $ktrunc with rest args
...
* module/language/cps/arities.scm (fix-clause-arities): Allow $ktrunc
arities with rest arguments.
2013-12-06 12:04:10 +01:00
Andy Wingo
67b5d06c1a
Elide values primcalls with continuations with rest arguments
...
* module/language/cps/elide-values.scm (elide-values): Elide values
primcalls when continuation has rest arguments.
2013-12-06 11:39:04 +01:00
Andy Wingo
fa48a2f79a
(call-with-values foo (lambda (a . b) a)) avoids consing rest list
...
* module/language/cps/slot-allocation.scm (allocate-slots): Don't
allocate slots to unused results of function calls. This can allow us
to avoid consing a rest list for call-with-values with an ignored rest
parameter, and can improve the parallel move code.
* module/language/cps/compile-bytecode.scm (compile-fun): Adapt to avoid
emitting bind-rest in values context if the rest arg is unused.
2013-12-06 11:08:45 +01:00
Ludovic Courtès
70057f3408
vm: Gracefully handle stack overflows.
...
Fixes <http://lists.gnu.org/archive/html/guile-user/2013-12/msg00017.html >.
Reported by rvclayton@verizon.net (R. Clayton).
* libguile/vm.c (reinstate_stack_reserve): New function.
(vm_error_stack_overflow): Install it as an unwind handler.
* test-suite/tests/control.test ("the-vm")["stack overflow reinstates
stack reserve"]: New test.
2013-12-05 22:19:01 +01:00
Andy Wingo
d297e544d9
compiler.texi tweaks
...
* doc/ref/compiler.texi (Compiler Tower): Reword a couple things.
(Tree-IL): Add more vertical space, for readability in info.
2013-12-05 11:55:10 +01:00
Andy Wingo
67915ab079
Doc updates to macroexpansion, compiled procs, and compiler.texi
...
* doc/ref/api-macros.texi (Macro Expansion): New section.
* doc/ref/api-procedures.texi (Compiled Procedures): Beginnings of a
revision. Not finished.
* doc/ref/compiler.texi (Compiling to the Virtual Machine): Beginnings
of a revision. CPS and bytecode are not done yet.
2013-12-04 20:46:02 +01:00
pcpa
8567d28d60
x86: Correct wrong x87 optimization.
...
* lib/jit_x86-x87.c: Correct wrong optimization when
loading the log(2) constant.
2013-12-03 15:11:11 -02:00
pcpa
0b0d63d892
x86: Ensure the x87 stack is empty when calling a function.
...
* lib/jit_x86-cpu.c: Use the emms instruction before
calling any function. This is particularly important
when using c99 complex functions as it can easily
overflow the x87 stack due to the way lightning uses
the x87 stack as a flat register file.
2013-12-03 15:09:48 -02:00
pcpa
c162b9d836
x86: Correct wrong x87 float indexed store code generation.
...
* lib/jit_x86-x87.c: Correct wrong code generation due
to comparing the base and not the value register with
%st(0) in stxi_f.
2013-12-02 19:17:03 -02:00
Andy Wingo
691697de09
Rename "RTL" to "bytecode"
...
"RTL" didn't make any sense, and now that there's no other bytecode to
disambiguate against, just call it bytecode.
* module/Makefile.am:
* module/ice-9/eval-string.scm:
* module/language/bytecode.scm:
* module/language/bytecode/spec.scm:
* module/language/cps/arities.scm:
* module/language/cps/compile-bytecode.scm:
* module/language/cps/compile-rtl.scm:
* module/language/cps/contification.scm:
* module/language/cps/elide-values.scm:
* module/language/cps/primitives.scm:
* module/language/cps/reify-primitives.scm:
* module/language/cps/spec.scm:
* module/language/cps/specialize-primcalls.scm:
* module/language/rtl.scm:
* module/language/rtl/spec.scm:
* module/scripts/compile.scm:
* module/system/base/compile.scm:
* module/system/repl/common.scm:
* module/system/vm/assembler.scm:
* module/system/vm/debug.scm:
* module/system/vm/disassembler.scm:
* module/system/vm/dwarf.scm:
* test-suite/tests/cross-compilation.test:
* test-suite/tests/dwarf.test:
* test-suite/tests/rtl-compilation.test:
* test-suite/tests/rtl.test:
* test-suite/vm/run-vm-tests.scm: Fixups.
2013-12-02 21:31:47 +01:00
pcpa
4e5368d291
Correct wrong call in ldi_f if address does not fit in 32 bit.
...
This would only happen in x86_64, where x87 registers are not used
neither "exported".
2013-12-02 18:15:14 -02:00
pcpa
479c2eda3c
x86: Use aligned offset for x87 to/from sse move.
...
* lib/jit_x86-x87.c, lib/jit_x86.c: Use 8 bytes aligned
stack offset for float/double x87 to/from sse move.
2013-12-02 17:58:00 -02:00
Andy Wingo
e54c7dd67c
Fix brainfuck comment
...
* module/language/brainfuck/parse.scm: Fix outdated comment.
2013-12-02 19:03:50 +01:00
Andy Wingo
60ce72b9b9
Fix brainfuck->scheme compiler.
...
* module/language/brainfuck/compile-scheme.scm (compile-scheme): Fix
brainfuck compiler.
2013-12-02 19:03:48 +01:00
Andy Wingo
7f71030837
Fix brainfuck comment
...
* module/language/brainfuck/parse.scm: Fix outdated comment.
2013-12-02 19:02:38 +01:00
Andy Wingo
cdc75fd001
Fix brainfuck->scheme compiler.
...
* module/language/brainfuck/compile-scheme.scm (compile-scheme): Fix
brainfuck compiler.
2013-12-02 19:02:38 +01:00
Mark H Weaver
7cfcb60bc1
GOOPS doc fix: #:dsupers is the init keyword for the dsupers slot.
...
* doc/ref/goops.texi (Metaclasses): #:dsupers is the initialization
keyword for the dsupers slot, not #:supers.
2013-12-01 18:41:31 -05:00
Mark H Weaver
79657fd3ec
Thread safe port properties.
...
* libguile/ports.c (scm_i_port_property, scm_i_set_port_property_x):
Lock the port mutex while accessing the port alist.
* libguile/read.c (set_port_read_option): Lock the port mutex
while modifying port read options.
2013-12-01 18:34:30 -05:00
Andy Wingo
1f6f591d66
Add section to vm.texi about Guile's use of ELF
...
* doc/ref/vm.texi (Object File Format): New section.
2013-12-01 12:35:12 +01:00
Andy Wingo
9e9745b355
vm.texi tweak
...
* doc/ref/vm.texi (Why a VM?): Small tense tweak.
2013-11-30 20:59:14 +01:00
Andy Wingo
69aecc6abb
Update vm.texi's "Instruction Set" section.
...
* doc/ref/vm.texi (Instruction Set): Update.
2013-11-30 18:46:14 +01:00
Andy Wingo
ddf0d7bb2e
Fix more vm-engine comments
...
* libguile/vm-engine.c: Fix more comments.
2013-11-30 18:46:14 +01:00
Andy Wingo
2b6659e438
Remove slot-ref and slot-set! ops
...
* libguile/vm-engine.c: Remove slot-ref and slot-set! ops.
2013-11-30 18:46:14 +01:00
Andy Wingo
4d6a7ac6ad
Remove GOOPS-internal @slot-ref and @slot-set!
...
* module/oop/goops.scm: Remove definitions of @slot-ref and @slot-set!.
They are equivalent to struct-ref and struct-set!.
(define-standard-accessor-method): Reimplement using syntax-case.
(bound-check-get, standard-get, standard-set): Replace @slot-ref and
@slot-set! uses with struct-ref and struct-set!.
* module/language/cps/reify-primitives.scm (primitive-module): Remove
@slot-set! and @slot-ref references.
2013-11-30 18:46:14 +01:00
Andy Wingo
23e2e78067
Beginning vm.texi updates
...
* doc/ref/vm.texi: Updates.
2013-11-30 18:46:14 +01:00
Andy Wingo
02f9d49614
Fix vm-engine.c comments
...
* libguile/vm-engine.c: Fix some comments.
2013-11-30 18:46:14 +01:00
Andy Wingo
1b1c912544
Unknown files print as (unknown file) in disassembler
...
* module/system/vm/disassembler.scm (disassemble-buffer): Print unknown
files as "(unknown file)".
2013-11-30 18:46:14 +01:00
Andy Wingo
321c32dc9d
,x disassembles nested programs too
...
* module/system/vm/disassembler.scm (code-annotation):
(disassemble-buffer, disassemble-addr, disassemble-program): Arrange
to disassemble nested procedures.
(disassemble-image): Adapt.
2013-11-30 18:46:14 +01:00
Andy Wingo
f5729276a9
Update history.texi
...
* doc/ref/history.texi (A Timeline of Selected Guile Releases, Status):
Update.
2013-11-30 18:46:10 +01:00
Andy Wingo
0d1788039a
Remove outdated section of api-memory.texi
...
* doc/ref/api-memory.texi (Memory Blocks): Remove section documenting
scm_must_malloc and friends.
2013-11-29 12:28:53 +01:00
Andy Wingo
d511a2e160
Merge remote-tracking branch 'origin/stable-2.0'
2013-11-28 16:24:38 +01:00
Andy Wingo
8f0ecae98c
Critical sections in guardians do not need to block asyncs
...
* libguile/guardians.c: Critical sections here cannot cause an
async_tick, so they do not need to block asyncs.
2013-11-28 16:20:42 +01:00
Andy Wingo
fcd953f699
Merge commit ' d364a89718
'
...
Conflicts:
libguile/deprecated.h
libguile/gc.c
2013-11-28 16:16:48 +01:00
Andy Wingo
5dfafc3c76
Merge commit ' e7bd20f7d9
'
2013-11-28 16:15:55 +01:00
Andy Wingo
ae9c16e895
Merge commit ' 17330398d5
'
2013-11-28 16:15:51 +01:00
Andy Wingo
9b95f3ced4
Merge commit ' a38024baaa
'
...
Conflicts:
libguile/ports.h
2013-11-28 16:15:38 +01:00
Andy Wingo
6683f204ba
Merge commit ' 2437c7b2e8
'
...
Conflicts:
libguile/guardians.c
2013-11-28 16:03:58 +01:00
Andy Wingo
f76cf73a49
Merge commit ' 8571dbde63
'
...
Conflicts:
libguile/procprop.c
2013-11-28 15:00:17 +01:00
Andy Wingo
6dd9810902
Merge commit ' 750ac8c592
'
...
Conflicts:
.gitignore
libguile/deprecated.c
2013-11-28 14:53:03 +01:00
Andy Wingo
acf7530a3e
Merge commit ' c61be45084
'
...
Conflicts:
libguile/ports.c
2013-11-28 14:47:38 +01:00
Andy Wingo
091dd0cc58
Merge commit ' d360671c1c
'
2013-11-28 14:46:24 +01:00
Andy Wingo
d364a89718
Deprecate gc-live-object-stats
...
* libguile/gc.h:
* libguile/gc.c:
* libguile/deprecated.h:
* libguile/deprecated.c (scm_gc_live_object_stats): Deprecate; it hasn't
worked in the whole 2.0 series.
2013-11-28 14:40:58 +01:00
Andy Wingo
553294d958
Avoid needless GC on startup due to scm_gc_register_allocation
...
* libguile/gc.c (bytes_until_gc): Initialize to
DEFAULT_INITIAL_HEAP_SIZE, to avoid forced GC on the first
mallocation.
2013-11-28 12:10:50 +01:00
Andy Wingo
87fc4596e5
Remove private-gc.h
...
* libguile/simpos.c (scm_getenv_int): Move here, from gc.c.
* libguile/private-gc.h: Remove, unused.
* libguile/simpos.h: Move scm_getenv_int declaration here.
* libguile/vm.c:
* libguile/gc.c: Adapt scm_getenv_int users.
* libguile/gc-malloc.c:
* libguile/load.c:
* libguile/script.c: Remove private-gc includes from non-users of
scm_getenv_int.
* libguile/Makefile.am: Adapt.
2013-11-28 11:53:57 +01:00
Andy Wingo
35164d84e0
scm_i_tag_name internal to gc.c
...
* libguile/gc.c (scm_i_tag_name): Make internal to gc.c.
* libguile/private-gc.h: Remove from here.
2013-11-28 11:46:13 +01:00
Andy Wingo
5a706f0342
More private-gc excisions
...
* libguile/private-gc.h (SCM_DOUBLECELL_ALIGNED_P): Remove; unused.
* libguile/filesys.c (MAX, MIN): Move definitions here, from
private-gc.h.
(scm_sendfile, scm_readdir): Adapt uses of SCM_MAX and SCM_MIN to use
MAX or MIN.
2013-11-28 11:43:51 +01:00
Andy Wingo
8d78304e4d
Remove unused enum policy_on_error
...
* libguile/private-gc.h (enum policy_on_error): Remove unused enum.
2013-11-28 11:37:29 +01:00
Andy Wingo
064d24093b
Tune initial heap size
...
* libguile/fluids.c (new_fluid): Don't run an explicit GC for the first
fluid.
* libguile/gc.c (DEFAULT_INITIAL_HEAP_SIZE, scm_storage_prehistory):
Enlarge from 32 kB to 512 or 1024 kB, depending on word size. Reduces
startup time by 10 or 15% by avoiding excessive
GC.
* libguile/private-gc.h: Remove SCM_DEFAULT_INIT_HEAP_SIZE_2 definition
here.
2013-11-28 11:32:08 +01:00