From 5b128a5b6b1548de7d9328f1f570658045190e00 Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Fri, 4 Jan 2019 05:50:47 +0000 Subject: [PATCH] Test restarting trapped references. This is busted on x86 because of a compiler bug involving register reuse, to be fixed on the riastradh-20181220-closentry{...} branch. --- tests/check.scm | 1 + tests/compiler/test-vartrap.scm | 64 +++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 tests/compiler/test-vartrap.scm diff --git a/tests/check.scm b/tests/check.scm index 8f5a0dca7..4a2dae6a7 100644 --- a/tests/check.scm +++ b/tests/check.scm @@ -44,6 +44,7 @@ USA. "compiler/test-fgopt-conect" "compiler/test-toplev" "compiler/test-varname" + "compiler/test-vartrap" "compiler/test-y" "microcode/test-chacha" ;++ Kludge to run the flonum cast tests interpreted and compiled -- diff --git a/tests/compiler/test-vartrap.scm b/tests/compiler/test-vartrap.scm new file mode 100644 index 000000000..05cfe3253 --- /dev/null +++ b/tests/compiler/test-vartrap.scm @@ -0,0 +1,64 @@ +#| -*-Scheme-*- + +Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, + 2017, 2018 Massachusetts Institute of Technology + +This file is part of MIT/GNU Scheme. + +MIT/GNU Scheme is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +MIT/GNU Scheme is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with MIT/GNU Scheme; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, +USA. + +|# + +;;;; Tests of cache traps + +(declare (usual-integrations)) + +(define (with-expected-failure xfail body) + (if (default-object? xfail) + (body) + (xfail body))) + +(define-test 'restart-unassigned + (lambda () + (define program + '(begin + (declare (usual-integrations)) + (define null) ;unassigned + (define (map1 f l) + (let loop ((l l)) + (if (pair? l) + (cons (f (car l)) (loop (cdr l))) + null))) + map1)) + (let* ((env (make-top-level-environment)) + (scode (syntax&integrate program '() env)) + (expr (compile-scode scode)) + (map1 (eval expr env))) + (with-expected-failure + (if (memq microcode-id/compiled-code-type '(i386 x86-64)) + expect-failure + #!default) + (lambda () + (assert-equal + (bind-condition-handler (list condition-type:unassigned-variable) + (lambda (condition) + condition + (use-value '())) + (lambda () + (map1 - '(1 2 3)))) + '(-1 -2 -3))))))) \ No newline at end of file -- 2.25.1