1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-01 18:00:23 +02:00
Commit graph

16392 commits

Author SHA1 Message Date
Andy Wingo
695e6b7551 Use binary search in find-elf-symbol
* module/system/vm/debug.scm (binary-search): New helper.
  (find-elf-symbol): Use binary search.
2013-11-09 15:51:54 +01:00
Andy Wingo
1b00f4c709 Fix run-vm-tests
* test-suite/vm/run-vm-tests.scm: Fix for RTL.
2013-11-08 19:26:18 +01:00
Andy Wingo
1c33be992e Remove stack programs, objcode, and the old VM.
* libguile/Makefile.am:
* libguile/vm-i-loader.c:
* libguile/vm-i-scheme.c:
* libguile/vm-i-system.c: Remove the old VM files, and the rules to
  build the .i files.

* libguile/vm-engine.c:
* libguile/vm.c: Remove the old VM.  Woot!

* libguile/_scm.h (SCM_OBJCODE_COOKIE, SCM_OBJCODE_ENDIANNESS_OFFSET)
  (SCM_OBJCODE_WORD_SIZE_OFFSET): Remove.

* libguile/evalext.c (scm_self_evaluating_p): Remove objcode and program
  cases.

* libguile/frames.c (scm_frame_num_locals, scm_frame_previous): Remove
  program cases.

* libguile/gc.c (scm_i_tag_name): Remove objcode case.
* libguile/goops.c (scm_class_of, create_standard_classes): Remove
  objcode and program cases.

* libguile/instructions.h:
* libguile/instructions.c (scm_instruction_list, scm_instruction_p)
  (scm_instruction_length, scm_instruction_pops, scm_instruction_pushes)
  (scm_instruction_to_opcode, scm_opcode_to_instruction): Remove old VM
  code.

* libguile/objcodes.h:
* libguile/objcodes.c: Remove the objcode data type, and handling for
  objcode files.

* libguile/print.c: Remove objcode and program printers.

* libguile/procprop.c: Remove program cases.
* libguile/procs.c:

* libguile/programs.h:
* libguile/programs.c: Remove old program code.

* libguile/smob.c: Remove objcodes include.

* libguile/snarf.h: Remove static program defines.

* libguile/stacks.c: Remove program case.

* libguile/tags.h: Remove program and objcode tc7s.

* module/ice-9/session.scm (procedure-arguments)
* module/language/tree-il/analyze.scm (validate-arity)
* module/statprof.scm (get-call-data, procedure=?)
* module/system/vm/frame.scm (frame-bindings)
  (frame-call-representation): Remove old program cases.

* module/system/repl/debug.scm (frame->module): Add a FIXME.

* module/system/vm/instruction.scm: Remove old exports.

* module/system/vm/program.scm: Remove old program code.
2013-11-08 18:28:24 +01:00
Andy Wingo
84680d2382 Miscellaneous fixups related to objcode removal.
* module/scripts/compile.scm: Fix --help message.

* module/system/repl/command.scm (disassemble): Fix error message.

* module/system/vm/frame.scm: Remove objcode import.

* module/system/vm/objcode.scm: Remove some exports related to the
  objcode type.
2013-11-08 17:42:54 +01:00
Andy Wingo
741073719e Remove program-sources-pre-retire case for stack programs.
* module/system/vm/program.scm (program-sources-pre-retire): Remove
  stack program case.
2013-11-08 17:41:31 +01:00
Andy Wingo
70974fd213 Remove (language objcode)
* module/language/objcode.scm: Remove.  Seems to have been unused.
2013-11-08 17:40:46 +01:00
Andy Wingo
4dfae1bf50 Move assemble-program to test cases.
* module/system/vm/assembler.scm (assemble-program): Remove.
* test-suite/tests/rtl.test (assemble-program): Move here.
2013-11-08 17:36:45 +01:00
Andy Wingo
b77a5215c7 Per-instruction tracing doesn't try to disassemble stack VM code
* module/system/vm/trace.scm (trace-instructions-in-procedure): Don't
  try to disassemble the procedure, for now.
2013-11-08 17:32:41 +01:00
Andy Wingo
e391f179e4 (system vm traps) support for rtl programs
* module/system/vm/debug.scm: Export program-debug-info-size.

* module/system/vm/traps.scm (frame-matcher): Remove stack program
  case.  Use absolute frame-instruction-procedure to match if
  match-code?.
  (program-last-ip): Use (system vm debug) interfaces.
  (program-sources-by-line): Use program-sources, as
  program-sources-pre-retire will go away soon.  Return absolute
  addresses.
2013-11-08 17:31:51 +01:00
Andy Wingo
0d4bcc71d2 Remove objcode language.
* module/language/objcode/elf.scm:
* module/language/objcode/spec.scm: Remove objcode language.

* module/Makefile.am: Adapt.
2013-11-08 16:51:44 +01:00
Andy Wingo
ad9b491fa7 Remove bytecode language.
* module/language/bytecode/spec.scm: Remove.

* module/Makefile.am: Adapt.
2013-11-08 16:49:04 +01:00
Andy Wingo
f3c0b53346 Remove assembly language.
* module/system/repl/command.scm: Remove disassembly cases for stack
  procedures.

* module/system/vm/inspect.scm: Adapt to disassemble RTL programs.

* module/language/assembly.scm:
* module/language/assembly/compile-bytecode.scm:
* module/language/assembly/decompile-bytecode.scm:
* module/language/assembly/disassemble.scm:
* module/language/assembly/spec.scm: Remove assembly language.

* module/Makefile.am: Adapt.
2013-11-08 16:45:10 +01:00
Andy Wingo
f7f5f49a6b Decompile goes from tree-il to scheme by default.
* module/system/base/compile.scm (decompile): By default, go from
  tree-il to Scheme, now that the assembly language is going away.
2013-11-08 16:40:27 +01:00
Andy Wingo
147f9978ba Rewrite (system xref) to work with RTL programs
* module/system/xref.scm (nested-procedures): New helper.
  (program-callee-rev-vars): Rewrite using fold-program-code and
  nested-procedures.
  (add-sources, forget-sources): Use match instead of pmatch.  Use
  nested-procedures.
2013-11-08 16:31:29 +01:00
Andy Wingo
850e80dacc Add fold-program-code to (system vm disassembler)
* module/system/vm/disassembler.scm (fold-code-range): New helper.
  (fold-program-code): New interface.
2013-11-08 15:58:27 +01:00
Andy Wingo
5af36584d8 Remove GLIL language
* module/Makefile.am:
* module/language/glil.scm:
* module/language/glil/compile-assembly.scm:
* module/language/glil/spec.scm: Remove.
2013-11-08 14:58:40 +01:00
Andy Wingo
ac023564b2 Remove tree-il->glil compiler
* module/Makefile.am:
* module/language/tree-il/compile-glil.scm: Remove.

* module/language/tree-il/spec.scm: Remove tree-il->glil link.
2013-11-08 14:57:43 +01:00
Andy Wingo
0afb26cc71 Move useful parts of asm-to-bytecode.test to cross-compilation.test
* test-suite/tests/cross-compilation.test: Rename from asm-to-bytecode,
  and remove the bits testing assembly->bytecode but keep the
  cross-compilation things.

* test-suite/Makefile.am: Adapt.
2013-11-08 14:54:38 +01:00
Andy Wingo
4b98c7411e Tree-IL warnings tests compile to CPS instead of "assembly"
* test-suite/tests/tree-il.test ("warnings"): Change warnings test to
  compile to CPS instead of assembly.
2013-11-08 14:45:01 +01:00
Andy Wingo
539eeee6ae Remove tree-il->glil test cases
* test-suite/tests/tree-il.test: Remove GLIL test cases.  They have
  never been helpful to me in the 2.0 series, so there is no loss.
2013-11-08 14:41:22 +01:00
Andy Wingo
5d53070040 Remove a couple of uses of GLIL from the test suite.
* test-suite/tests/cse.test ("cse"):
* test-suite/tests/peval.test: Remove uses of GLIL.
2013-11-08 14:27:13 +01:00
Andy Wingo
8734229528 Fix program-minimum-arity to work better with case-lambda.
* module/system/vm/debug.scm (program-minimum-arity): Be more precise
  with case-lambdas.
2013-11-08 14:19:41 +01:00
Andy Wingo
9f309e2cd9 Builtins have procedure properties
* libguile/vm-builtins.h (FOR_EACH_VM_BUILTIN): Add arity information.
  (enum scm_vm_builtins):
* libguile/vm.c (scm_vm_builtin_ref):
  (scm_vm_builtin_name_to_index):
  (scm_vm_builtin_index_to_name): Adapt to macro interface change.
  (scm_init_vm_builtin_properties): New helper, sets procedure
  properties on builtins.
  (scm_bootstrap_vm): Just define the builtins here.  Later in the
  bootstrap we set their properties.
  (scm_sym_apply): Move definition here from expand.c.

* libguile/procprop.c (scm_init_procprop): Call
  scm_init_vm_builtin_properties.
2013-11-08 14:08:42 +01:00
Andy Wingo
f41accb9c2 Fix procedure-arguments on RTL programs, and tweak session.test
* module/ice-9/session.scm (procedure-arguments): Add an rtl-program?
  case.

* module/system/vm/debug.scm (arity-arguments-alist): Use the order that
  session.test expects.

* test-suite/tests/session.test ("procedure-arguments"): Adapt tests
  with keywords for the new starting-with-the-procedure numbering of
  locals.
2013-11-08 13:29:03 +01:00
Andy Wingo
d547e1c9a6 Fix make-vector peval test
* test-suite/tests/peval.test ("partial evaluation"): Fix to expect a
  primcall.
2013-11-08 13:25:08 +01:00
Andy Wingo
b0ed216b6f Fix case-lambda* dispatching to agree with manual.
* module/system/vm/assembler.scm (kw-prelude): Emit br-if-npos-gt as
  appropriate.
2013-11-08 11:41:28 +01:00
Andy Wingo
f90c055464 Add br-if-npos-gt
* libguile/vm-engine.c (br-if-npos-gt): New instruction (sigh!).  For
  case-lambda* dispatching on the number of positional args, as the
  manual describes.  Renumber other opcodes.
2013-11-08 11:38:34 +01:00
Andy Wingo
d2bd8fa810 Fix BR_NARGS data type width
* libguile/vm-engine.c (BR_NARGS): Fix width of "expected".  Fixes bug
  with > 65536 arguments in case-lambda clauses.
2013-11-08 11:36:53 +01:00
Andy Wingo
be564260be Fix arity selection in compute-contification
* module/language/cps/contification.scm (compute-contification): Fail as
  soon as we see an arity with rest, optional, or keyword arguments.
  Fixes ((case-lambda ((a . b) #t) ((a b) #f)) 1 2).
2013-11-08 10:59:52 +01:00
Andy Wingo
6a59420a9d Fix error message in lambda* eval closures with keywords
* module/ice-9/eval.scm (primitive-eval): For ((lambda* (#:key foo) foo) 'bar),
  give an "invalid keyword" error instead of a "wrong number of
  arguments" error.
2013-11-08 10:37:09 +01:00
Andy Wingo
0e3a59f750 Fix reading and writing arities into DWARF.
* libguile/gsubr.h:
* libguile/gsubr.c (scm_i_primitive_call_ip):
* libguile/programs.c (scm_primitive_call_ip): Adapt to return an
  absolute address.

* module/system/vm/assembler.scm (write-arity-headers): Adapt to write
  byte addresses (relative to the text base).

* module/system/vm/debug.scm (arity-low-pc, arity-high-pc): Return
  absolute addresses, instead of word offsets relative to the text
  base.
  (find-first-arity): Adapt for absolute addresses.

* module/system/vm/program.scm (program-arguments-alist): Adapt for
  arity-low-pc / arity-high-pc absolute addresses.
2013-11-08 10:11:48 +01:00
Andy Wingo
1ab116f390 Fix eval.test: stack involving a primitive
* test-suite/tests/eval.test ("stacks"): Revert expect-fail introduced
  in 27337b6373.
2013-11-08 09:07:32 +01:00
Andy Wingo
3a858c3275 Fix coverage.test: instrumented-source-files
* test-suite/tests/coverage.test ("instrumented-source-files"): Adapt to
  new expectation that all files loaded on the system will be present in
  the source information.
2013-11-08 09:03:41 +01:00
Andy Wingo
697c4f29d9 Fix coverage.test: "procedure-execution-count: never"
* test-suite/tests/coverage.test ("procedure-execution-count"): Adapt
  test to new behavior of procedure-execution-count of an unseen
  procedure: zero, not false.
2013-11-08 09:00:41 +01:00
Andy Wingo
7a5a533595 Fix coverage.test: "line-execution-counts: one proc hit, one proc unused"
* test-suite/tests/coverage.test ("line-execution-counts"): Fix test for
  even/odd? in letrec.  The test profiles the execution of even?, not
  the letrec, so the last line is in fact not reached.
2013-11-08 09:00:35 +01:00
Andy Wingo
581a4eb82b frame-instruction-pointer is absolute; rewrite (system vm coverage)
* libguile/frames.c (scm_frame_source): Instead of assuming that
  scm_frame_procedure is correct, use the IP to get the source.
  (scm_frame_instruction_pointer): Return an absolute value instead of
  assuming that slot 0 is correct.  (It isn't, when preparing for a tail
  call.)

* libguile/programs.h:
* libguile/programs.c (scm_find_source_for_addr): New internal helper.

* module/system/repl/debug.scm (print-registers): Readably print
  absolute instruction pointers.

* module/system/vm/coverage.scm: Complete rewrite to use absolute IP's.
  We can't assume that frame-procedure is cheap if it is correct, or
  correct if it is cheap.  Anyway using the address is better anyway.
  (coverage-data->lcov): Disable per-function info temporarily.
  (loaded-modules, module-procedures, closest-source-line)
  (closed-over-procedures): Remove these.  Instead of going from
  procedures to source info, now we go from ELF image to source info.

* module/system/vm/debug.scm (debug-context-length): New interface.

* module/system/vm/program.scm (source-for-addr): New internal helper.
2013-11-07 23:03:45 +01:00
Andy Wingo
72b82b0f21 scm_from_uintptr_t / scm_from_ptrdiff_t usage
* libguile/frames.c:
* libguile/programs.c: Use scm_from_ptrdiff_t and scm_from_uintptr_t
  where appropriate.
2013-11-07 18:11:00 +01:00
Andy Wingo
e15aa02284 Program sources are always pre-retire now
* module/system/repl/debug.scm (<debug>): Remove for-trap?.  Backtraces
  with RTL will always happen pre-retire on the top frame, source info
  is pre-retire, and continuations will always have a source-marked
  receive or receive-values or whatever with the right source marking,
  so we can remove this complication.
  (print-frame): Use frame-source.
  (print-frames): Remove for-trap? kw.

* module/system/repl/command.scm (define-stack-command, backtrace)
  (up, down, frame): Remove for-trap? introduced local, and its uses.
  (repl-pop-continuation-resumer): Adapt to make-debug change.

* module/system/repl/error-handling.scm (call-with-error-handling):
  Adapt to make-debug change.

* module/system/vm/frame.scm (frame-next-source): Remove.  RTL sources
  are pre-retire.

* module/system/vm/trap-state.scm (add-ephemeral-stepping-trap!): Adapt
  to use frame-source.  Still some work to do here.
2013-11-07 18:00:40 +01:00
Andy Wingo
0128bb9c38 add fold-all-debug-contexts, fold-source-locations
* module/system/vm/objcode.scm:
* libguile/objcodes.c (scm_all_mapped_elf_images): New proc.

* module/system/vm/debug.scm (fold-all-debug-contexts):
  (fold-source-locations): New public interfaces.
2013-11-07 17:53:04 +01:00
Andy Wingo
4b8d21c17c Fix DWARF source test now that we have more precise source info.
* test-suite/tests/dwarf.test: Fix test after the $continue/$cont source
  change, which reifies proper source info for the +.
2013-11-07 11:16:24 +01:00
Andy Wingo
31602aa04a Fix line advance DWARF opcodes when line advance is exactly 128
* module/system/vm/assembler.scm (link-debug): Fix off-by-one error in
  which forward jumps of 128 were mis-rendered.
2013-11-07 11:10:36 +01:00
Andy Wingo
32ca15d7d7 Write DWARF files list in correct order.
* module/system/vm/assembler.scm (link-debug): Fix order of writing the
  source files list; it was being written backwards.
2013-11-07 10:52:47 +01:00
Andy Wingo
6e422a3599 Source information goes on the $continue, not the $cont.
* module/language/cps.scm ($continue, $cont): Put source information on
  the $continue, not on the $cont.  Otherwise it is difficult for CPS
  conversion to preserve source information.
  ($fun): Add a src member to $fun.  Otherwise we might miss the source
  info for the start of the function.

* .dir-locals.el:
* module/language/cps/arities.scm:
* module/language/cps/closure-conversion.scm:
* module/language/cps/compile-rtl.scm:
* module/language/cps/constructors.scm:
* module/language/cps/contification.scm:
* module/language/cps/dfg.scm:
* module/language/cps/elide-values.scm:
* module/language/cps/reify-primitives.scm:
* module/language/cps/slot-allocation.scm:
* module/language/cps/verify.scm:
* module/language/tree-il/compile-cps.scm: Update the whole CPS world
  for this change.
2013-11-07 10:32:21 +01:00
Andy Wingo
963d95f1d9 Fix first find-program-sources result
* module/system/vm/debug.scm (find-program-sources): Manually set the pc
  of the first result in a function.
2013-11-06 17:33:43 +01:00
Andy Wingo
111a305be8 compiler.test fix for rtl compilation
* test-suite/tests/compiler.test ("current-reader"): Fix the way we make
  programs from objcode.
2013-11-05 21:33:00 +01:00
Andy Wingo
0a1d52ac77 fix docstring assembly and fetching
* module/system/vm/assembler.scm (link-docstrs): Write pc offsets as
  byte addresses.  Works better with native code.
* module/system/vm/debug.scm (find-program-docstring): Fix the linear
  search.  How embarassing!
2013-11-05 21:29:46 +01:00
Andy Wingo
3659ef543e asm-labels is a hash table
* module/system/vm/assembler.scm (make-assembler, label):
  (link-data, process-relocs, process-labels): Change labels to be a
  hash table.
2013-11-05 20:18:23 +01:00
Andy Wingo
da60ba8062 fix make-long-immediate, make-long-long-immediate for dst >= 256
* libguile/vm-engine.c (make-long-immediate, make-long-long-immediate):
  Fix declaration of "dst" variable.
2013-11-05 19:22:26 +01:00
Andy Wingo
0d0465135d Re-add the list hack to compile-cps
* module/language/tree-il/compile-cps.scm (convert): Re-add the list
  hack.  Ideally these go into some tree-il pass.
2013-11-05 18:16:13 +01:00
Andy Wingo
3abe29e677 squish to primitive reification
* test-suite/tests/tree-il.test: Update for primitive-ref reification
  fix.
2013-11-05 18:06:08 +01:00