[前][次][番号順一覧][スレッド一覧]

ruby-changes:13066

From: nobu <ko1@a...>
Date: Wed, 9 Sep 2009 13:11:34 +0900 (JST)
Subject: [ruby-changes:13066] Ruby:r24812 (trunk): * variable.c (autoload_data_type): typed.

nobu	2009-09-09 13:09:09 +0900 (Wed, 09 Sep 2009)

  New Revision: 24812

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24812

  Log:
    * variable.c (autoload_data_type): typed.

  Modified files:
    trunk/ChangeLog
    trunk/variable.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24811)
+++ ChangeLog	(revision 24812)
@@ -1,4 +1,4 @@
-Wed Sep  9 12:56:56 2009  Nobuyoshi Nakada  <nobu@r...>
+Wed Sep  9 13:09:07 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* dir.c (dir_data_type): typed.
 
@@ -16,6 +16,8 @@
 
 	* transcode.c (econv_data_type): typed.
 
+	* variable.c (autoload_data_type): typed.
+
 Wed Sep  9 11:11:33 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* include/ruby/ruby.h (rb_data_type_struct): constified dsize.
Index: variable.c
===================================================================
--- variable.c	(revision 24811)
+++ variable.c	(revision 24812)
@@ -292,7 +292,7 @@
 VALUE
 rb_path2class(const char *path)
 {
-    return rb_path_to_class(rb_usascii_str_new_cstr(path));
+    return rb_path_to_class(rb_str_new_cstr(path));
 }
 
 void
@@ -1357,18 +1357,33 @@
     return Qnil;		/* not reached */
 }
 
-static struct st_table *
-check_autoload_table(VALUE av)
+static void
+autoload_mark(void *ptr)
 {
-    Check_Type(av, T_DATA);
-    if (RDATA(av)->dmark != (RUBY_DATA_FUNC)rb_mark_tbl ||
-	RDATA(av)->dfree != (RUBY_DATA_FUNC)st_free_table) {
-	VALUE desc = rb_inspect(av);
-	rb_raise(rb_eTypeError, "wrong autoload table: %s", RSTRING_PTR(desc));
-    }
-    return (struct st_table *)DATA_PTR(av);
+    rb_mark_tbl((st_table *)ptr);
 }
 
+static void
+autoload_free(void *ptr)
+{
+    st_free_table((st_table *)ptr);
+}
+
+static size_t
+autoload_memsize(const void *ptr)
+{
+    const st_table *tbl = ptr;
+    return st_memsize(tbl);
+}
+
+static const rb_data_type_t autoload_data_type = {
+    "autoload",
+    autoload_mark, autoload_free, autoload_memsize,
+};
+
+#define check_autoload_table(av) \
+    (struct st_table *)rb_check_typeddata(av, &autoload_data_type)
+
 void
 rb_autoload(VALUE mod, ID id, const char *file)
 {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]