From abb677f0396c37bef4452e9c3bfe6454dda04d64 Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Wed, 25 Apr 2012 22:55:46 +0200 Subject: [PATCH] class-of did not work with barriers, mailboxes and semaphores --- src/c/instance.d | 20 +++++++++++++------- src/clos/builtin.lsp | 4 ++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/c/instance.d b/src/c/instance.d index 22d9ec5ee..4c5f9dd7b 100644 --- a/src/c/instance.d +++ b/src/c/instance.d @@ -221,6 +221,9 @@ ecl_slot_value_set(cl_object x, const char *slot, cl_object value) return funcall(4, ecl_fdefinition(slot_setter), value, x, slot_name); } +/********************************************************************** + * IMPORTANT: THE FOLLOWING LIST IS LINKED TO src/clos/builtin.lsp + **********************************************************************/ enum ecl_built_in_classes { ECL_BUILTIN_T = 0, ECL_BUILTIN_SEQUENCE, @@ -270,10 +273,11 @@ enum ecl_built_in_classes { , ECL_BUILTIN_PROCESS, ECL_BUILTIN_LOCK, - ECL_BUILTIN_CONDITION_VARIABLE -#endif -#ifdef ECL_SEMAPHORES - , ECL_BUILTIN_SEMAPHORE + ECL_BUILTIN_RWLOCK, + ECL_BUILTIN_CONDITION_VARIABLE, + ECL_BUILTIN_SEMAPHORE, + ECL_BUILTIN_BARRIER, + ECL_BUILTIN_MAILBOX #endif #ifdef ECL_SSE2 , ECL_BUILTIN_SSE_PACK @@ -363,10 +367,12 @@ cl_class_of(cl_object x) index = ECL_BUILTIN_LOCK; break; case t_condition_variable: index = ECL_BUILTIN_CONDITION_VARIABLE; break; -#endif -#ifdef ECL_SEMAPHORES - case t_semaphores: + case t_semaphore: index = ECL_BUILTIN_SEMAPHORE; break; + case t_barrier: + index = ECL_BUILTIN_BARRIER; break; + case t_mailbox: + index = ECL_BUILTIN_MAILBOX; break; #endif case t_codeblock: index = ECL_BUILTIN_CODE_BLOCK; break; diff --git a/src/clos/builtin.lsp b/src/clos/builtin.lsp index 238065f9d..aab49df0a 100644 --- a/src/clos/builtin.lsp +++ b/src/clos/builtin.lsp @@ -40,6 +40,10 @@ (error "The built-in class (~A) cannot be instantiated" class)) (eval-when (:compile-toplevel :execute) + ;; + ;; All changes to this are connected to the changes in + ;; the code of cl_class_of() in src/instance.d + ;; (defconstant +builtin-classes-list+ '(;(t object) (sequence)