mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-19 02:00:26 +02:00
make sure we compile boot code in (guile), not (guile-user)
* libguile/eval.h: * libguile/eval.c (scm_m_eval_when): Define a cheap eval-when, used before syncase has booted. * module/Makefile.am: Reorder to put (system vm) and (system repl) modules after the compiler, as they are not needed at runtime. * module/ice-9/boot-9.scm: Move the eval-when earlier, to be the first thing -- so when we recompile Guile we do so all in the '(guile) module, not '(guile-user). * module/ice-9/compile-psyntax.scm: Rewrite to assume that psyntax.scm will eval-when to set its module, etc. Have everything in a let -- otherwise the `format' call is in (guile), but `target' was defined in (guile-user). Also, write in an eval-when to the expanded file. * module/ice-9/psyntax-pp.scm: Regenerate. * module/ice-9/networking.scm: * module/ice-9/psyntax.scm: * module/ice-9/r4rs.scm: Sprinkles of eval-when, for flavor.
This commit is contained in:
parent
34ad4f83ca
commit
9c35c5796c
10 changed files with 73 additions and 43 deletions
|
@ -2140,6 +2140,25 @@ unmemoize_at_call_with_values (const SCM expr, const SCM env)
|
||||||
unmemoize_exprs (SCM_CDR (expr), env));
|
unmemoize_exprs (SCM_CDR (expr), env));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCM_SYNTAX (s_eval_when, "eval-when", scm_makmmacro, scm_m_eval_when);
|
||||||
|
SCM_GLOBAL_SYMBOL (scm_sym_eval_when, s_eval_when);
|
||||||
|
SCM_SYMBOL (sym_eval, "eval");
|
||||||
|
SCM_SYMBOL (sym_load, "load");
|
||||||
|
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_m_eval_when (SCM expr, SCM env SCM_UNUSED)
|
||||||
|
{
|
||||||
|
ASSERT_SYNTAX (scm_ilength (expr) == 3, s_bad_expression, expr);
|
||||||
|
ASSERT_SYNTAX (scm_ilength (scm_cadr (expr)) > 0, s_bad_expression, expr);
|
||||||
|
|
||||||
|
if (scm_is_true (scm_memq (sym_eval, scm_cadr (expr)))
|
||||||
|
|| scm_is_true (scm_memq (sym_load, scm_cadr (expr))))
|
||||||
|
return scm_caddr (expr);
|
||||||
|
|
||||||
|
return scm_list_1 (SCM_IM_BEGIN);
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
/* See futures.h for a comment why futures are not enabled.
|
/* See futures.h for a comment why futures are not enabled.
|
||||||
|
|
|
@ -100,6 +100,7 @@ SCM_API SCM scm_sym_atapply;
|
||||||
SCM_API SCM scm_sym_atcall_cc;
|
SCM_API SCM scm_sym_atcall_cc;
|
||||||
SCM_API SCM scm_sym_at_call_with_values;
|
SCM_API SCM scm_sym_at_call_with_values;
|
||||||
SCM_API SCM scm_sym_delay;
|
SCM_API SCM scm_sym_delay;
|
||||||
|
SCM_API SCM scm_sym_eval_when;
|
||||||
SCM_API SCM scm_sym_arrow;
|
SCM_API SCM scm_sym_arrow;
|
||||||
SCM_API SCM scm_sym_else;
|
SCM_API SCM scm_sym_else;
|
||||||
SCM_API SCM scm_sym_apply;
|
SCM_API SCM scm_sym_apply;
|
||||||
|
@ -146,6 +147,7 @@ SCM_API SCM scm_m_atslot_ref (SCM xorig, SCM env);
|
||||||
SCM_API SCM scm_m_atslot_set_x (SCM xorig, SCM env);
|
SCM_API SCM scm_m_atslot_set_x (SCM xorig, SCM env);
|
||||||
SCM_API SCM scm_m_atdispatch (SCM xorig, SCM env);
|
SCM_API SCM scm_m_atdispatch (SCM xorig, SCM env);
|
||||||
SCM_API SCM scm_m_at_call_with_values (SCM xorig, SCM env);
|
SCM_API SCM scm_m_at_call_with_values (SCM xorig, SCM env);
|
||||||
|
SCM_API SCM scm_m_eval_when (SCM xorig, SCM env);
|
||||||
SCM_API int scm_badargsp (SCM formals, SCM args);
|
SCM_API int scm_badargsp (SCM formals, SCM args);
|
||||||
SCM_API SCM scm_call_0 (SCM proc);
|
SCM_API SCM scm_call_0 (SCM proc);
|
||||||
SCM_API SCM scm_call_1 (SCM proc, SCM arg1);
|
SCM_API SCM scm_call_1 (SCM proc, SCM arg1);
|
||||||
|
|
|
@ -35,15 +35,6 @@ SOURCES = \
|
||||||
system/base/pmatch.scm system/base/syntax.scm \
|
system/base/pmatch.scm system/base/syntax.scm \
|
||||||
system/base/compile.scm system/base/language.scm \
|
system/base/compile.scm system/base/language.scm \
|
||||||
\
|
\
|
||||||
system/vm/debug.scm system/vm/frame.scm system/vm/instruction.scm \
|
|
||||||
system/vm/objcode.scm system/vm/profile.scm system/vm/program.scm \
|
|
||||||
system/vm/trace.scm system/vm/vm.scm \
|
|
||||||
\
|
|
||||||
system/xref.scm \
|
|
||||||
\
|
|
||||||
system/repl/repl.scm system/repl/common.scm \
|
|
||||||
system/repl/command.scm \
|
|
||||||
\
|
|
||||||
language/ghil.scm language/glil.scm language/assembly.scm \
|
language/ghil.scm language/glil.scm language/assembly.scm \
|
||||||
\
|
\
|
||||||
$(SCHEME_LANG_SOURCES) $(ECMASCRIPT_LANG_SOURCES) \
|
$(SCHEME_LANG_SOURCES) $(ECMASCRIPT_LANG_SOURCES) \
|
||||||
|
@ -54,7 +45,7 @@ SOURCES = \
|
||||||
$(ICE_9_SOURCES) \
|
$(ICE_9_SOURCES) \
|
||||||
$(SRFI_SOURCES) \
|
$(SRFI_SOURCES) \
|
||||||
$(OOP_SOURCES) \
|
$(OOP_SOURCES) \
|
||||||
\
|
$(SYSTEM_SOURCES) \
|
||||||
$(SCRIPTS_SOURCES)
|
$(SCRIPTS_SOURCES)
|
||||||
|
|
||||||
## test.scm is not currently installed.
|
## test.scm is not currently installed.
|
||||||
|
@ -226,6 +217,16 @@ OOP_SOURCES = \
|
||||||
oop/goops/accessors.scm \
|
oop/goops/accessors.scm \
|
||||||
oop/goops/simple.scm
|
oop/goops/simple.scm
|
||||||
|
|
||||||
|
SYSTEM_SOURCES = \
|
||||||
|
system/vm/debug.scm system/vm/frame.scm system/vm/instruction.scm \
|
||||||
|
system/vm/objcode.scm system/vm/profile.scm system/vm/program.scm \
|
||||||
|
system/vm/trace.scm system/vm/vm.scm \
|
||||||
|
\
|
||||||
|
system/xref.scm \
|
||||||
|
\
|
||||||
|
system/repl/repl.scm system/repl/common.scm \
|
||||||
|
system/repl/command.scm
|
||||||
|
|
||||||
EXTRA_DIST += oop/ChangeLog-2008
|
EXTRA_DIST += oop/ChangeLog-2008
|
||||||
|
|
||||||
NOCOMP_SOURCES = \
|
NOCOMP_SOURCES = \
|
||||||
|
|
|
@ -33,6 +33,15 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(define (void) (if #f #f))
|
||||||
|
|
||||||
|
;; Before compiling, make sure any symbols are resolved in the (guile)
|
||||||
|
;; module, the primary location of those symbols, rather than in
|
||||||
|
;; (guile-user), the default module that we compile in.
|
||||||
|
|
||||||
|
(eval-when (compile)
|
||||||
|
(set-current-module (resolve-module '(guile))))
|
||||||
|
|
||||||
;;; {R4RS compliance}
|
;;; {R4RS compliance}
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
|
@ -163,8 +172,6 @@
|
||||||
(define identifier? #f)
|
(define identifier? #f)
|
||||||
(define syntax-object->datum #f)
|
(define syntax-object->datum #f)
|
||||||
|
|
||||||
(define (void) (if #f #f))
|
|
||||||
|
|
||||||
(define andmap
|
(define andmap
|
||||||
(lambda (f first . rest)
|
(lambda (f first . rest)
|
||||||
(or (null? first)
|
(or (null? first)
|
||||||
|
@ -195,13 +202,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; Before compiling, make sure any symbols are resolved in the (guile)
|
|
||||||
;; module, the primary location of those symbols, rather than in
|
|
||||||
;; (guile-user), the default module that we compile in.
|
|
||||||
|
|
||||||
(eval-when (compile)
|
|
||||||
(set-current-module (resolve-module '(guile))))
|
|
||||||
|
|
||||||
;;; {Defmacros}
|
;;; {Defmacros}
|
||||||
;;;
|
;;;
|
||||||
;;; Depends on: features, eval-case
|
;;; Depends on: features, eval-case
|
||||||
|
|
|
@ -1,24 +1,18 @@
|
||||||
;; XXX - We need to be inside (guile) since psyntax.ss calls
|
(let ((source (list-ref (command-line) 1))
|
||||||
;; `eval' int he `interaction-environment' aka the current module and
|
(target (list-ref (command-line) 2)))
|
||||||
;; it expects to have `andmap' there. The reason for this escapes me
|
(let ((in (open-input-file source))
|
||||||
;; at the moment.
|
(out (open-output-file (string-append target ".tmp"))))
|
||||||
;;
|
(write '(eval-when (compile) (set-current-module (resolve-module '(guile))))
|
||||||
(define-module (guile))
|
out)
|
||||||
|
(newline out)
|
||||||
(define source (list-ref (command-line) 1))
|
(let loop ((x (read in)))
|
||||||
(define target (list-ref (command-line) 2))
|
(if (eof-object? x)
|
||||||
|
(begin
|
||||||
(let ((in (open-input-file source))
|
(close-port out)
|
||||||
(out (open-output-file (string-append target ".tmp"))))
|
(close-port in))
|
||||||
(let loop ((x (read in)))
|
(begin
|
||||||
(if (eof-object? x)
|
(write (sc-expand3 x 'c '(compile load eval))
|
||||||
(begin
|
out)
|
||||||
(close-port out)
|
(newline out)
|
||||||
(close-port in))
|
(loop (read in))))))
|
||||||
(begin
|
(system (format #f "mv -f ~s.tmp ~s" target target)))
|
||||||
(write (sc-expand3 x 'c '(compile load eval))
|
|
||||||
out)
|
|
||||||
(newline out)
|
|
||||||
(loop (read in))))))
|
|
||||||
|
|
||||||
(system (format #f "mv -f ~s.tmp ~s" target target))
|
|
||||||
|
|
|
@ -17,6 +17,9 @@
|
||||||
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
|
(eval-when (compile)
|
||||||
|
(set-current-module (resolve-module '(guile))))
|
||||||
|
|
||||||
(define (gethostbyaddr addr) (gethost addr))
|
(define (gethostbyaddr addr) (gethost addr))
|
||||||
(define (gethostbyname name) (gethost name))
|
(define (gethostbyname name) (gethost name))
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,9 @@
|
||||||
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
;;;;
|
;;;;
|
||||||
|
|
||||||
|
(eval-when (compile)
|
||||||
|
(set-current-module (resolve-module '(guile))))
|
||||||
|
|
||||||
(define (stat:dev f) (vector-ref f 0))
|
(define (stat:dev f) (vector-ref f 0))
|
||||||
(define (stat:ino f) (vector-ref f 1))
|
(define (stat:ino f) (vector-ref f 1))
|
||||||
(define (stat:mode f) (vector-ref f 2))
|
(define (stat:mode f) (vector-ref f 2))
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -256,6 +256,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(eval-when (compile)
|
||||||
|
(set-current-module (resolve-module '(guile))))
|
||||||
|
|
||||||
(let ()
|
(let ()
|
||||||
(define-syntax define-structure
|
(define-syntax define-structure
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
|
|
|
@ -17,6 +17,9 @@
|
||||||
;;;; License along with this library; if not, write to the Free Software
|
;;;; License along with this library; if not, write to the Free Software
|
||||||
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
(eval-when (compile)
|
||||||
|
(set-current-module (resolve-module '(guile))))
|
||||||
|
|
||||||
|
|
||||||
;;;; apply and call-with-current-continuation
|
;;;; apply and call-with-current-continuation
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue