Merge branch 'fix-c-nested-closures' into develop

This commit is contained in:
Daniel Kochmański 2016-03-12 10:01:57 +01:00
commit 1a8f0decf2
6 changed files with 40 additions and 19 deletions

View file

@ -10,8 +10,8 @@ srcdir = ..\src
SHORT_SITE_NAME =
LONG_SITE_NAME =
ECL_VERSION = 16.1.2
ECL_VERSION_NUMBER= 161002
ECL_VERSION = 16.1.3-dev
ECL_VERSION_NUMBER= 160103
ARCHITECTURE = PENTIUM4
SOFTWARE_TYPE = NT
SOFTWARE_VERSION = 5.0

View file

@ -268,7 +268,8 @@
(env nil))
(case (fun-closure fun)
(CLOSURE
(setf env (environment-accessor fun)))
(when (plusp *max-env*)
(setf env (environment-accessor fun))))
(LEXICAL
(let ((lex-lvl (fun-level fun)))
(dotimes (n lex-lvl)

View file

@ -436,14 +436,17 @@
;; should definitely keep this in memory.
(when (plusp *max-lex*)
(wt-nl "volatile cl_object lex" *level* "[" *max-lex* "];"))
(when (plusp *max-env*)
(unless (eq closure-type 'CLOSURE)
(wt-nl "cl_object " *volatile* "env0;"))
;; Note that the closure structure has to be marked volatile
;; or else GCC may optimize away writes into it because it
;; does not know it shared with the rest of the world.
(unless (eq closure-type 'CLOSURE)
(wt-nl "cl_object " *volatile* "env0;"))
(when (plusp *max-env*)
;; Closure structure has to be marked volatile or else GCC may
;; optimize away writes into it because it does not know it shared
;; with the rest of the world.
(when *aux-closure*
(wt-nl "volatile struct ecl_cclosure aux_closure;"))
(wt-nl "cl_object " *volatile*)
(loop for i from 0 below *max-env*
for comma = "" then ", "

18
src/configure vendored
View file

@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Revision.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for ecl 16.1.2.
# Generated by GNU Autoconf 2.69 for ecl 16.1.3-dev.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@ -578,8 +578,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='ecl'
PACKAGE_TARNAME='ecl'
PACKAGE_VERSION='16.1.2'
PACKAGE_STRING='ecl 16.1.2'
PACKAGE_VERSION='16.1.3-dev'
PACKAGE_STRING='ecl 16.1.3-dev'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@ -1365,7 +1365,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures ecl 16.1.2 to adapt to many kinds of systems.
\`configure' configures ecl 16.1.3-dev to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1434,7 +1434,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of ecl 16.1.2:";;
short | recursive ) echo "Configuration of ecl 16.1.3-dev:";;
esac
cat <<\_ACEOF
@ -1609,7 +1609,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
ecl configure 16.1.2
ecl configure 16.1.3-dev
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -2196,7 +2196,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by ecl $as_me 16.1.2, which was
It was created by ecl $as_me 16.1.3-dev, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -10199,7 +10199,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by ecl $as_me 16.1.2, which was
This file was extended by ecl $as_me 16.1.3-dev, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -10261,7 +10261,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
ecl config.status 16.1.2
ecl config.status 16.1.3-dev
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

@ -8,7 +8,7 @@ dnl AUTOCONF configuration for ECL
dnl Giuseppe Attardi 25.1.1994
dnl
AC_INIT([ecl],[16.1.2],[])
AC_INIT([ecl],[16.1.3-dev],[])
AC_REVISION([$Revision$])
AC_CONFIG_SRCDIR([bare.lsp.in])
AC_CONFIG_AUX_DIR([gmp])

View file

@ -1150,3 +1150,20 @@
(compile 'check-single-wildcard)
(check-single-wildcard "dan*" 3))
T)
;;; Date: 2016-02-10
;;; Fixed: Daniel Kochmański
;;; Description
;;; Aux closures created by C compiler weren't handled correctly
;;; in respect of the environment and declarations of the
;;; variables
(deftest compiler.0050.cmptop/call.1
(funcall (compile nil '(lambda ()
(labels
((fun-2 () (fun-3 'cool))
(fun-3 (clause-var)
(flet ((fun-4 () clause-var))
(fun-4))))
(let ((fun-1 (lambda () (fun-2))))
(funcall fun-1))))))
cool)