Merge commit '9b5da400dde6e6bc8fd0e318e7ca1feffa5870db'
authorAndy Wingo <wingo@pobox.com>
Fri, 7 Feb 2014 14:36:06 +0000 (15:36 +0100)
committerAndy Wingo <wingo@pobox.com>
Fri, 7 Feb 2014 14:36:06 +0000 (15:36 +0100)
Conflicts:
libguile/vectors.c
test-suite/tests/weaks.test

1  2 
libguile/vectors.c
test-suite/tests/weaks.test

@@@ -35,7 -35,7 +35,6 @@@
  #include "libguile/strings.h"
  #include "libguile/srfi-13.h"
  #include "libguile/dynwind.h"
--#include "libguile/deprecation.h"
  
  #include "libguile/bdw-gc.h"
  
@@@ -112,8 -116,14 +111,8 @@@ SCM_GPROC (s_vector_length, "vector-len
  SCM
  scm_vector_length (SCM v)
  {
--  if (SCM_I_IS_VECTOR (v))
 -    {
 -      if (SCM_I_WVECTP (v))
 -        scm_c_issue_deprecation_warning
 -          ("Using vector-length on weak vectors is deprecated.  "
 -           "Use weak-vector-length from (ice-9 weak-vectors) instead.");
 -      return scm_from_size_t (SCM_I_VECTOR_LENGTH (v));
 -    }
++  if (SCM_I_IS_NONWEAK_VECTOR (v))
 +    return scm_from_size_t (SCM_I_VECTOR_LENGTH (v));
    else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1)
      {
        scm_t_array_dim *dim = SCM_I_ARRAY_DIMS (v);
@@@ -204,31 -214,48 +203,27 @@@ scm_c_vector_ref (SCM v, size_t k
  {
    if (SCM_I_IS_NONWEAK_VECTOR (v))
      {
 -      register SCM elt;
 -
        if (k >= SCM_I_VECTOR_LENGTH (v))
        scm_out_of_range (NULL, scm_from_size_t (k));
 -      elt = (SCM_I_VECTOR_ELTS(v))[k];
 -
 -      return elt;
 -    }
 -  else if (SCM_I_WVECTP (v))
 -    {
 -      scm_c_issue_deprecation_warning
 -        ("Using vector-ref on weak vectors is deprecated.  "
 -         "Instead, use weak-vector-ref from (ice-9 weak-vectors).");
 -      return scm_c_weak_vector_ref (v, k);
 +      return SCM_SIMPLE_VECTOR_REF (v, k);
      }
-   else if (SCM_I_WVECTP (v))
-     return scm_c_weak_vector_ref (v, k);
    else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1)
      {
        scm_t_array_dim *dim = SCM_I_ARRAY_DIMS (v);
        SCM vv = SCM_I_ARRAY_V (v);
 -      if (SCM_I_IS_VECTOR (vv))
 -      {
 -        register SCM elt;
 -
 -        if (k >= dim->ubnd - dim->lbnd + 1)
 -          scm_out_of_range (NULL, scm_from_size_t (k));
 -        k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
 -        elt = (SCM_I_VECTOR_ELTS (vv))[k];
 -
 -        if (SCM_UNPACK (elt) == 0 && (SCM_I_WVECTP (vv)))
 -            {
 -              scm_c_issue_deprecation_warning
 -                ("Weak arrays are deprecated.  Use weak vectors instead.");
 -              /* ELT was a weak pointer and got nullified by the GC.  */
 -              return SCM_BOOL_F;
 -            }
 -
 -        return elt;
 -      }
 -      scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector");
 +
 +      k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
 +      if (k >= dim->ubnd - dim->lbnd + 1)
 +        scm_out_of_range (NULL, scm_from_size_t (k));
 +
 +      if (SCM_I_IS_NONWEAK_VECTOR (vv))
 +        return SCM_SIMPLE_VECTOR_REF (vv, k);
-       else if (SCM_I_WVECTP (vv))
-         return scm_c_weak_vector_ref (vv, k);
 +      else
 +        scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector");
      }
    else
 -    SCM_WTA_DISPATCH_2 (g_vector_ref, v, scm_from_size_t (k), 2, NULL);
 +    return scm_wta_dispatch_2 (g_vector_ref, v, scm_from_size_t (k), 2,
 +                               "vector-ref");
  }
  
  SCM_GPROC (s_vector_set_x, "vector-set!", 3, 0, 0, scm_vector_set_x, g_vector_set_x);
@@@ -259,24 -286,36 +254,20 @@@ scm_c_vector_set_x (SCM v, size_t k, SC
    if (SCM_I_IS_NONWEAK_VECTOR (v))
      {
        if (k >= SCM_I_VECTOR_LENGTH (v))
 -      scm_out_of_range (NULL, scm_from_size_t (k)); 
 -      (SCM_I_VECTOR_WELTS(v))[k] = obj;
 -    }
 -  else if (SCM_I_WVECTP (v))
 -    {
 -      scm_c_issue_deprecation_warning
 -        ("Using vector-set! on weak vectors is deprecated.  "
 -         "Instead, use weak-vector-set! from (ice-9 weak-vectors).");
 -      scm_c_weak_vector_set_x (v, k, obj);
 +        scm_out_of_range (NULL, scm_from_size_t (k)); 
 +      SCM_SIMPLE_VECTOR_SET (v, k, obj);
      }
-   else if (SCM_I_WVECTP (v))
-     scm_c_weak_vector_set_x (v, k, obj);
    else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1)
      {
        scm_t_array_dim *dim = SCM_I_ARRAY_DIMS (v);
        SCM vv = SCM_I_ARRAY_V (v);
 -      if (SCM_I_IS_VECTOR (vv))
 -      {
 -        if (k >= dim->ubnd - dim->lbnd + 1)
 -          scm_out_of_range (NULL, scm_from_size_t (k));
 -        k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
 -        (SCM_I_VECTOR_WELTS (vv))[k] = obj;
 -
 -        if (SCM_I_WVECTP (vv))
 -          {
 -            /* Make it a weak pointer.  */
 -            SCM *link = & SCM_I_VECTOR_WELTS (vv)[k];
 -            SCM_I_REGISTER_DISAPPEARING_LINK ((void **) link, SCM2PTR (obj));
 -              scm_c_issue_deprecation_warning
 -                ("Weak arrays are deprecated.  Use weak vectors instead.");
 -          }
 -      }
 +
 +      k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
 +      if (k >= dim->ubnd - dim->lbnd + 1)
 +        scm_out_of_range (NULL, scm_from_size_t (k));
 +
 +      if (SCM_I_IS_NONWEAK_VECTOR (vv))
 +        SCM_SIMPLE_VECTOR_SET (vv, k, obj);
-       else if (SCM_I_WVECTP (vv))
-         scm_c_weak_vector_set_x (vv, k, obj);
        else
        scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector");
      }
@@@ -1,5 -1,5 +1,6 @@@
  ;;;; weaks.test --- tests guile's weaks     -*- scheme -*-
- ;;;; Copyright (C) 1999, 2001, 2003, 2006, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 -;;;; Copyright (C) 1999, 2001, 2003, 2006, 2009, 2010, 2011, 2014 Free Software Foundation, Inc.
++;;;; Copyright (C) 1999, 2001, 2003, 2006, 2009, 2010, 2011, 2012, 2014
++;;;; 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