[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 04/19: Keywords have a tc7
From: |
Andy Wingo |
Subject: |
[Guile-commits] 04/19: Keywords have a tc7 |
Date: |
Thu, 22 Jan 2015 13:54:37 +0000 |
wingo pushed a commit to branch master
in repository guile.
commit e2fafeb9012cbe5e3ec63326692a4cc3a22c318e
Author: Andy Wingo <address@hidden>
Date: Mon Jan 19 16:57:42 2015 +0100
Keywords have a tc7
* libguile/tags.h (scm_tc7_keyword): Allocate a tc7, so that the VM can
have cheap keyword? tests.
* libguile/keywords.c:
* libguile/keywords.h: Adapt.
* libguile/goops.c (scm_class_of, scm_sys_goops_early_init): Capture
<keyword>.
* libguile/print.c (iprin1): Inline keyword printer.
* libguile/evalext.c (scm_self_evaluating_p): Add keywords here.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_tc16_keyword): Deprecate.
* module/language/cps/compile-bytecode.scm (compile-fun): Add keyword?
case, and bitvector? case while we're at it.
* module/language/cps/effects-analysis.scm (define-primitive-effects):
Add bytevector?, keyword?, and bitvector? cases.
* module/language/cps/primitives.scm (*branching-primcall-arities*): Add
keyword?.
* module/language/cps/types.scm (bitvector?, keyword?, bytevector?): Add
branch inferrers.
* module/language/tree-il/primitives.scm (*interesting-primitive-names*):
(*effect-free-primitives*):
(*effect+exception-free-primitives*): Add bytevector?, keyword?, and
bitvector?.
* module/oop/goops.scm (<keyword>): New class.
* module/system/base/types.scm (%tc7-keyword, cell->object): Add cases.
* module/system/vm/assembler.scm (br-if-keyword): New definition.
* module/system/vm/disassembler.scm (code-annotation): Add br-if-tc7
case for keywords.
* test-suite/tests/types.test ("clonable objects"): Update now that
keywords are cloneable.
---
libguile/evalext.c | 3 +-
libguile/goops.c | 6 ++--
libguile/keywords.c | 33 ++++++++------------------
libguile/keywords.h | 6 +----
libguile/print.c | 6 ++++-
libguile/tags.h | 4 +-
module/language/cps/compile-bytecode.scm | 2 +
module/language/cps/effects-analysis.scm | 5 +++-
module/language/cps/primitives.scm | 3 +-
module/language/cps/specialize-primcalls.scm | 10 +------
module/language/cps/types.scm | 5 +++-
module/language/tree-il/compile-cps.scm | 18 +++++++++++++-
module/language/tree-il/primitives.scm | 5 +++-
module/oop/goops.scm | 6 ++--
module/system/base/types.scm | 5 +++-
module/system/vm/assembler.scm | 1 +
module/system/vm/disassembler.scm | 3 +-
test-suite/tests/types.test | 5 +--
18 files changed, 70 insertions(+), 56 deletions(-)
diff --git a/libguile/evalext.c b/libguile/evalext.c
index 48a9eff..48d9a17 100644
--- a/libguile/evalext.c
+++ b/libguile/evalext.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998,1999,2000,2001,2002,2003, 2006, 2008, 2009, 2010, 2011,
2012, 2013 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2003, 2006, 2008, 2009, 2010, 2011,
2012, 2013, 2015 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -81,6 +81,7 @@ SCM_DEFINE (scm_self_evaluating_p, "self-evaluating?", 1, 0,
0,
case scm_tc7_fluid:
case scm_tc7_dynamic_state:
case scm_tc7_frame:
+ case scm_tc7_keyword:
case scm_tc7_vm_cont:
case scm_tc7_number:
case scm_tc7_string:
diff --git a/libguile/goops.c b/libguile/goops.c
index 450ae0d..ab4d7d7 100644
--- a/libguile/goops.c
+++ b/libguile/goops.c
@@ -1,4 +1,4 @@
-/* Copyright (C)
1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011,2012,2013,2014
+/* Copyright (C)
1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011,2012,2013,2014,2015
* Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
@@ -264,6 +264,8 @@ SCM_DEFINE (scm_class_of, "class-of", 1, 0, 0,
return class_dynamic_state;
case scm_tc7_frame:
return class_frame;
+ case scm_tc7_keyword:
+ return scm_class_keyword;
case scm_tc7_vm_cont:
return class_vm_cont;
case scm_tc7_bytevector:
@@ -2659,8 +2661,6 @@ create_smob_classes (void)
for (i = 0; i < SCM_I_MAX_SMOB_TYPE_COUNT; ++i)
scm_smob_class[i] = SCM_BOOL_F;
- scm_smob_class[SCM_TC2SMOBNUM (scm_tc16_keyword)] = scm_class_keyword;
-
for (i = 0; i < scm_numsmob; ++i)
if (scm_is_false (scm_smob_class[i]))
scm_smob_class[i] = scm_make_extended_class (SCM_SMOBNAME (i),
diff --git a/libguile/keywords.c b/libguile/keywords.c
index f630259..49cccd5 100644
--- a/libguile/keywords.c
+++ b/libguile/keywords.c
@@ -1,5 +1,5 @@
/* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004,
- * 2006, 2008, 2009, 2011, 2013 Free Software Foundation, Inc.
+ * 2006, 2008, 2009, 2011, 2013, 2015 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -41,18 +41,8 @@
static SCM keyword_obarray;
-scm_t_bits scm_tc16_keyword;
-
-#define KEYWORDP(X) (SCM_SMOB_PREDICATE (scm_tc16_keyword, (X)))
-#define KEYWORDSYM(X) (SCM_SMOB_OBJECT (X))
-
-static int
-keyword_print (SCM exp, SCM port, scm_print_state *pstate SCM_UNUSED)
-{
- scm_puts_unlocked ("#:", port);
- scm_display (KEYWORDSYM (exp), port);
- return 1;
-}
+#define SCM_KEYWORDP(x) (SCM_HAS_TYP7 (x, scm_tc7_keyword))
+#define SCM_KEYWORD_SYMBOL(x) (SCM_CELL_OBJECT_1 (x))
SCM_DEFINE (scm_keyword_p, "keyword?", 1, 0, 0,
(SCM obj),
@@ -60,7 +50,7 @@ SCM_DEFINE (scm_keyword_p, "keyword?", 1, 0, 0,
"@code{#f}.")
#define FUNC_NAME s_scm_keyword_p
{
- return scm_from_bool (KEYWORDP (obj));
+ return scm_from_bool (SCM_KEYWORDP (obj));
}
#undef FUNC_NAME
@@ -74,11 +64,12 @@ SCM_DEFINE (scm_symbol_to_keyword, "symbol->keyword", 1, 0,
0,
SCM_ASSERT_TYPE (scm_is_symbol (symbol), symbol, 0, NULL, "symbol");
SCM_CRITICAL_SECTION_START;
- /* njrev: NEWSMOB and hashq_set_x can raise errors */
+ /* Note: `scm_cell' and `scm_hashq_set_x' can raise an out-of-memory
+ error. */
keyword = scm_hashq_ref (keyword_obarray, symbol, SCM_BOOL_F);
if (scm_is_false (keyword))
{
- SCM_NEWSMOB (keyword, scm_tc16_keyword, SCM_UNPACK (symbol));
+ keyword = scm_cell (scm_tc7_keyword, SCM_UNPACK (symbol));
scm_hashq_set_x (keyword_obarray, symbol, keyword);
}
SCM_CRITICAL_SECTION_END;
@@ -91,15 +82,15 @@ SCM_DEFINE (scm_keyword_to_symbol, "keyword->symbol", 1, 0,
0,
"Return the symbol with the same name as @var{keyword}.")
#define FUNC_NAME s_scm_keyword_to_symbol
{
- scm_assert_smob_type (scm_tc16_keyword, keyword);
- return KEYWORDSYM (keyword);
+ SCM_VALIDATE_KEYWORD (1, keyword);
+ return SCM_KEYWORD_SYMBOL (keyword);
}
#undef FUNC_NAME
int
scm_is_keyword (SCM val)
{
- return KEYWORDP (val);
+ return SCM_KEYWORDP (val);
}
SCM
@@ -195,13 +186,9 @@ scm_c_bind_keyword_arguments (const char *subr, SCM rest,
}
}
-/* njrev: critical sections reviewed so far up to here */
void
scm_init_keywords ()
{
- scm_tc16_keyword = scm_make_smob_type ("keyword", 0);
- scm_set_smob_print (scm_tc16_keyword, keyword_print);
-
keyword_obarray = scm_c_make_hash_table (0);
#include "libguile/keywords.x"
}
diff --git a/libguile/keywords.h b/libguile/keywords.h
index 3cdb0ec..32311dd 100644
--- a/libguile/keywords.h
+++ b/libguile/keywords.h
@@ -3,7 +3,7 @@
#ifndef SCM_KEYWORDS_H
#define SCM_KEYWORDS_H
-/* Copyright (C) 1995,1996,1999,2000,2001, 2006, 2008 Free Software
Foundation, Inc.
+/* Copyright (C) 1995,1996,1999,2000,2001, 2006, 2008, 2015 Free Software
Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -27,10 +27,6 @@
-SCM_API scm_t_bits scm_tc16_keyword;
-
-
-
SCM_API SCM scm_keyword_p (SCM obj);
SCM_API SCM scm_symbol_to_keyword (SCM symbol);
SCM_API SCM scm_keyword_to_symbol (SCM keyword);
diff --git a/libguile/print.c b/libguile/print.c
index 684b3d4..0a2067f 100644
--- a/libguile/print.c
+++ b/libguile/print.c
@@ -1,5 +1,5 @@
/* Copyright (C) 1995-1999, 2000, 2001, 2002, 2003, 2004, 2006, 2008,
- * 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+ * 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -776,6 +776,10 @@ iprin1 (SCM exp, SCM port, scm_print_state *pstate)
case scm_tc7_frame:
scm_i_frame_print (exp, port, pstate);
break;
+ case scm_tc7_keyword:
+ scm_puts_unlocked ("#:", port);
+ scm_iprin1 (scm_keyword_to_symbol (exp), port, pstate);
+ break;
case scm_tc7_vm_cont:
scm_i_vm_cont_print (exp, port, pstate);
break;
diff --git a/libguile/tags.h b/libguile/tags.h
index 53d40d8..a5082f8 100644
--- a/libguile/tags.h
+++ b/libguile/tags.h
@@ -3,7 +3,7 @@
#ifndef SCM_TAGS_H
#define SCM_TAGS_H
-/* Copyright (C)
1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011,2012,2013,2014
+/* Copyright (C)
1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011,2012,2013,2014,2015
* Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
@@ -416,7 +416,7 @@ typedef union SCM { struct { scm_t_bits n; } n; } SCM;
#define scm_tc7_dynamic_state 45
#define scm_tc7_frame 47
-#define scm_tc7_unused_53 53
+#define scm_tc7_keyword 53
#define scm_tc7_unused_55 55
#define scm_tc7_vm_cont 71
diff --git a/module/language/cps/compile-bytecode.scm
b/module/language/cps/compile-bytecode.scm
index e6dfaad..9537e9c 100644
--- a/module/language/cps/compile-bytecode.scm
+++ b/module/language/cps/compile-bytecode.scm
@@ -434,6 +434,8 @@
(($ $primcall 'vector? (a)) (unary emit-br-if-vector a))
(($ $primcall 'string? (a)) (unary emit-br-if-string a))
(($ $primcall 'bytevector? (a)) (unary emit-br-if-bytevector a))
+ (($ $primcall 'bitvector? (a)) (unary emit-br-if-bitvector a))
+ (($ $primcall 'keyword? (a)) (unary emit-br-if-keyword a))
;; Add more TC7 tests here. Keep in sync with
;; *branching-primcall-arities* in (language cps primitives) and
;; the set of macro-instructions in assembly.scm.
diff --git a/module/language/cps/effects-analysis.scm
b/module/language/cps/effects-analysis.scm
index 246b22e..8951b40 100644
--- a/module/language/cps/effects-analysis.scm
+++ b/module/language/cps/effects-analysis.scm
@@ -1,6 +1,6 @@
;;; Effects analysis on CPS
-;; Copyright (C) 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -273,6 +273,9 @@ is or might be a read or a write to the same location as A."
((string? arg))
((number? arg))
((char? arg))
+ ((bytevector? arg))
+ ((keyword? arg))
+ ((bitvector? arg))
((procedure? arg))
((thunk? arg)))
diff --git a/module/language/cps/primitives.scm
b/module/language/cps/primitives.scm
index a095fce..5f7f474 100644
--- a/module/language/cps/primitives.scm
+++ b/module/language/cps/primitives.scm
@@ -1,6 +1,6 @@
;;; Continuation-passing style (CPS) intermediate language (IL)
-;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -75,6 +75,7 @@
(string? . (1 . 1))
(vector? . (1 . 1))
(symbol? . (1 . 1))
+ (keyword? . (1 . 1))
(variable? . (1 . 1))
(bitvector? . (1 . 1))
(bytevector? . (1 . 1))
diff --git a/module/language/cps/specialize-primcalls.scm
b/module/language/cps/specialize-primcalls.scm
index e03eb62..0502fe6 100644
--- a/module/language/cps/specialize-primcalls.scm
+++ b/module/language/cps/specialize-primcalls.scm
@@ -95,14 +95,8 @@
(('struct-ref s (? immediate-u8? n))
(adapt-val ($primcall 'struct-ref/immediate (s n))))
(('struct-set! s (? immediate-u8? n) x)
- ;; Unhappily, and undocumentedly, struct-set! returns the value
- ;; that was set. There is code that relies on this. Hackety
- ;; hack...
- (let-fresh (k*) ()
- (build-cps-term
- ($letk ((k* ($kargs () ()
- ($continue k src ($primcall 'values (x))))))
- ($continue k* src ($primcall 'struct-set!/immediate (s n
x)))))))
+ (build-cps-term
+ ($continue k src ($primcall 'struct-set!/immediate (s n x)))))
(_
(build-cps-term ($continue k src ($primcall name args))))))
diff --git a/module/language/cps/types.scm b/module/language/cps/types.scm
index ca90f50..934fa11 100644
--- a/module/language/cps/types.scm
+++ b/module/language/cps/types.scm
@@ -1,5 +1,5 @@
;;; Type analysis on CPS
-;;; Copyright (C) 2014 Free Software Foundation, Inc.
+;;; Copyright (C) 2014, 2015 Free Software Foundation, Inc.
;;;
;;; This library is free software: you can redistribute it and/or modify
;;; it under the terms of the GNU Lesser General Public License as
@@ -480,6 +480,9 @@ minimum, and maximum."
(define-simple-predicate-inferrer vector? &vector)
(define-simple-predicate-inferrer struct? &struct)
(define-simple-predicate-inferrer string? &string)
+(define-simple-predicate-inferrer bytevector? &bytevector)
+(define-simple-predicate-inferrer bitvector? &bitvector)
+(define-simple-predicate-inferrer keyword? &keyword)
(define-simple-predicate-inferrer number? &number)
(define-simple-predicate-inferrer char? &char)
(define-simple-predicate-inferrer procedure? &procedure)
diff --git a/module/language/tree-il/compile-cps.scm
b/module/language/tree-il/compile-cps.scm
index 3822316..a5afa7a 100644
--- a/module/language/tree-il/compile-cps.scm
+++ b/module/language/tree-il/compile-cps.scm
@@ -1,6 +1,6 @@
;;; Continuation-passing style (CPS) intermediate language (IL)
-;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -682,6 +682,22 @@ integer."
(make-lexical-ref src 'v v)
(reverse args) (reverse (iota len))))))
+ (($ <primcall> src 'struct-set! (struct index value))
+ ;; Unhappily, and undocumentedly, struct-set! returns the value
+ ;; that was set. There is code that relies on this. Hackety
+ ;; hack...
+ (let ((v (gensym "v ")))
+ (make-let src
+ (list 'v)
+ (list v)
+ (list value)
+ (make-seq src
+ (make-primcall src 'struct-set!
+ (list struct
+ index
+ (make-lexical-ref src 'v
v)))
+ (make-lexical-ref src 'v v)))))
+
(($ <prompt> src escape-only? tag body
($ <lambda> hsrc hmeta
($ <lambda-case> _ hreq #f hrest #f () hsyms hbody #f)))
diff --git a/module/language/tree-il/primitives.scm
b/module/language/tree-il/primitives.scm
index e4e6104..7bed783 100644
--- a/module/language/tree-il/primitives.scm
+++ b/module/language/tree-il/primitives.scm
@@ -1,6 +1,6 @@
;;; open-coding primitive procedures
-;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation,
Inc.
+;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software
Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -51,6 +51,7 @@
sqrt abs
not
pair? null? list? symbol? vector? string? struct? number? char? nil?
+ bytevector? keyword? bitvector?
procedure? thunk?
@@ -170,6 +171,7 @@
not
pair? null? nil? list?
symbol? variable? vector? struct? string? number? char?
+ bytevector? keyword? bitvector?
complex? real? rational? inf? nan? integer? exact? inexact? even? odd?
char<? char<=? char>=? char>?
integer->char char->integer number->string string->number
@@ -191,6 +193,7 @@
not
pair? null? nil? list?
symbol? variable? vector? struct? string? number? char?
+ bytevector? keyword? bitvector?
procedure? thunk?
acons cons cons* list vector))
diff --git a/module/oop/goops.scm b/module/oop/goops.scm
index 0376d9e..6afd049 100644
--- a/module/oop/goops.scm
+++ b/module/oop/goops.scm
@@ -1,6 +1,6 @@
;;; installed-scm-file
-;;;; Copyright (C) 1998,1999,2000,2001,2002, 2003, 2006, 2009, 2010, 2011,
2013, 2014 Free Software Foundation, Inc.
+;;;; Copyright (C) 1998,1999,2000,2001,2002, 2003, 2006, 2009, 2010, 2011,
2013, 2014, 2015 Free Software Foundation, Inc.
;;;; Copyright (C) 1993-1998 Erick Gallesio - I3S-CNRS/ESSI <address@hidden>
;;;;
;;;; This library is free software; you can redistribute it and/or
@@ -58,6 +58,7 @@
<boolean> <char> <list> <pair> <null> <string> <symbol>
<vector> <bytevector> <uvec> <foreign> <hashtable>
<fluid> <dynamic-state> <frame> <vm> <vm-continuation>
+ <keyword>
;; Numbers.
<number> <complex> <real> <integer> <fraction>
@@ -71,7 +72,7 @@
;; smob-type-name->class procedure.
<arbiter> <promise> <thread> <mutex> <condition-variable>
<regexp> <hook> <bitvector> <random-state> <async>
- <directory> <keyword> <array> <character-set>
+ <directory> <array> <character-set>
<dynamic-object> <guardian> <macro>
;; Modules.
@@ -1740,7 +1741,6 @@
(define <random-state> (find-subclass <top> '<random-state>))
(define <async> (find-subclass <top> '<async>))
(define <directory> (find-subclass <top> '<directory>))
-(define <keyword> (find-subclass <top> '<keyword>))
(define <array> (find-subclass <top> '<array>))
(define <character-set> (find-subclass <top> '<character-set>))
(define <dynamic-object> (find-subclass <top> '<dynamic-object>))
diff --git a/module/system/base/types.scm b/module/system/base/types.scm
index 6c1d40d..c051b31 100644
--- a/module/system/base/types.scm
+++ b/module/system/base/types.scm
@@ -1,5 +1,5 @@
;;; 'SCM' type tag decoding.
-;;; Copyright (C) 2014 Free Software Foundation, Inc.
+;;; Copyright (C) 2014, 2015 Free Software Foundation, Inc.
;;;
;;; This library is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU Lesser General Public License as published by
@@ -251,6 +251,7 @@ the matching bits, possibly with bitwise operations to
extract it from BITS."
(define %tc7-stringbuf 39)
(define %tc7-dynamic-state 45)
(define %tc7-frame 47)
+(define %tc7-keyword 53)
(define %tc7-program 69)
(define %tc7-vm-continuation 71)
(define %tc7-bytevector 77)
@@ -472,6 +473,8 @@ using BACKEND."
(inferior-object 'hash-table address))
(((_ & #x7f = %tc7-pointer) address)
(make-pointer address))
+ (((_ & #x7f = %tc7-keyword) symbol)
+ (symbol->keyword (cell->object symbol backend)))
(((_ & #x7f = %tc7-vm-continuation))
(inferior-object 'vm-continuation address))
(((_ & #x7f = %tc7-weak-set))
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm
index 8b9a70e..19f8120 100644
--- a/module/system/vm/assembler.scm
+++ b/module/system/vm/assembler.scm
@@ -1002,6 +1002,7 @@ returned instead."
;(define-tc7-macro-assembler br-if-fluid 37)
;(define-tc7-macro-assembler br-if-dynamic-state 45)
;(define-tc7-macro-assembler br-if-frame 47)
+(define-tc7-macro-assembler br-if-keyword 53)
;(define-tc7-macro-assembler br-if-vm 55)
;(define-tc7-macro-assembler br-if-vm-cont 71)
;(define-tc7-macro-assembler br-if-rtl-program 69)
diff --git a/module/system/vm/disassembler.scm
b/module/system/vm/disassembler.scm
index adacf1b..08aa057 100644
--- a/module/system/vm/disassembler.scm
+++ b/module/system/vm/disassembler.scm
@@ -1,6 +1,6 @@
;;; Guile bytecode disassembler
-;;; Copyright (C) 2001, 2009, 2010, 2012, 2013, 2014 Free Software Foundation,
Inc.
+;;; Copyright (C) 2001, 2009, 2010, 2012, 2013, 2014, 2015 Free Software
Foundation, Inc.
;;;
;;; This library is free software; you can redistribute it and/or
;;; modify it under the terms of the GNU Lesser General Public
@@ -215,6 +215,7 @@ address of that offset."
((7) "variable?")
((13) "vector?")
((15) "string?")
+ ((53) "keyword?")
((77) "bytevector?")
((95) "bitvector?")
(else (number->string tc7)))))
diff --git a/test-suite/tests/types.test b/test-suite/tests/types.test
index ea71d3c..c68262b 100644
--- a/test-suite/tests/types.test
+++ b/test-suite/tests/types.test
@@ -1,6 +1,6 @@
;;;; types.test --- Type tag decoding. -*- mode: scheme; coding: utf-8;
-*-
;;;;
-;;;; Copyright (C) 2014 Free Software Foundation, Inc.
+;;;; Copyright (C) 2014, 2015 Free Software Foundation, Inc.
;;;;
;;;; This file is part of GNU Guile.
;;;;
@@ -48,7 +48,7 @@
42 (expt 2 28) 3.14
"narrow string" "wide στρινγ"
'symbol 'λ
- ;; NB: keywords are SMOBs.
+ #:keyword #:λ
'(2 . 3) (iota 123) '(1 (two ("three")))
#(1 2 3) #(foo bar baz)
#vu8(255 254 253)
@@ -98,7 +98,6 @@
(with-test-prefix "opaque objects"
(test-inferior-objects
((make-guardian) smob (? integer?))
- (#:keyword smob (? integer?))
((%make-void-port "w") port (? integer?))
((open-input-string "hello") port (? integer?))
((lambda () #t) program _)
- [Guile-commits] branch master updated (015c3c0 -> 4247d8e), Andy Wingo, 2015/01/22
- [Guile-commits] 01/19: Merge commit 'b1451ad859183ae48c624d19ec144306bd2d3e3a', Andy Wingo, 2015/01/22
- [Guile-commits] 02/19: Merge commit '5af307de43e4b65eec7f235b48a8908f2a00f134', Andy Wingo, 2015/01/22
- [Guile-commits] 05/19: Merge commit 'a7bbba05838cabe2294f498e7008e1c51db6d664', Andy Wingo, 2015/01/22
- [Guile-commits] 03/19: Add allocate-struct, struct-ref, struct-set! instructions, Andy Wingo, 2015/01/22
- [Guile-commits] 06/19: Merge commit 'fdd319e9bd4121d844662d3d8ccc69b462b60840', Andy Wingo, 2015/01/22
- [Guile-commits] 07/19: Merge commit '81d2c84674f03f9028f26474ab19d3d3f353881a', Andy Wingo, 2015/01/22
- [Guile-commits] 04/19: Keywords have a tc7,
Andy Wingo <=
- [Guile-commits] 09/19: Merge commit '5fac1a7ada362d78f13143acbc0ceca7f2f101de', Andy Wingo, 2015/01/22
- [Guile-commits] 08/19: Merge commit '8cf2a7ba7432d68b9a055d29f18117be70375af9', Andy Wingo, 2015/01/22
- [Guile-commits] 10/19: Merge commit '7c433cbbce83bc9f2f9967afba00bbb68e312657', Andy Wingo, 2015/01/22
- [Guile-commits] 11/19: Merge commit '47ca15c7dffd14a82e75c1a0aeeaf2e77f3fa5b4', Andy Wingo, 2015/01/22
- [Guile-commits] 13/19: Merge commit 'cdcba5b2f6270de808e51b3b933374170611b91d', Andy Wingo, 2015/01/22
- [Guile-commits] 14/19: Merge commit '37b1453032488de582175270d1b3a1653ea81457', Andy Wingo, 2015/01/22
- [Guile-commits] 15/19: Merge commit '5943a62042432b86d757200ef595d7aebb5c9bac', Andy Wingo, 2015/01/22
- [Guile-commits] 18/19: Merge commit 'ed72201a795ac1c8d6c0288b6bb710f2bd0ebd9c', Andy Wingo, 2015/01/22
- [Guile-commits] 16/19: Merge commit '894d0b894daae001495c748b3352cd79918d3789', Andy Wingo, 2015/01/22
- [Guile-commits] 17/19: Merge commit '01a301d1b606b84d986b735049e7155d2f4cd6aa', Andy Wingo, 2015/01/22