[macruby-changes] [2790] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Tue Oct 13 19:06:20 PDT 2009


Revision: 2790
          http://trac.macosforge.org/projects/ruby/changeset/2790
Author:   lsansonetti at apple.com
Date:     2009-10-13 19:06:19 -0700 (Tue, 13 Oct 2009)
Log Message:
-----------
fixing some #autoload bugs

Modified Paths:
--------------
    MacRuby/trunk/load.c
    MacRuby/trunk/variable.c
    MacRuby/trunk/vm.cpp
    MacRuby/trunk/vm.h

Modified: MacRuby/trunk/load.c
===================================================================
--- MacRuby/trunk/load.c	2009-10-13 23:38:08 UTC (rev 2789)
+++ MacRuby/trunk/load.c	2009-10-14 02:06:19 UTC (rev 2790)
@@ -330,7 +330,7 @@
  */
 
 static VALUE
-rb_mod_autoload_p(VALUE mod, VALUE sym)
+rb_mod_autoload_p(VALUE mod, SEL sel, VALUE sym)
 {
     return rb_autoload_p(mod, rb_to_id(sym));
 }
@@ -349,15 +349,11 @@
 static VALUE
 rb_f_autoload(VALUE obj, SEL sel, VALUE sym, VALUE file)
 {
-#if 0
-    VALUE klass = rb_vm_cbase();
-    if (NIL_P(klass)) {
-	rb_raise(rb_eTypeError, "Can not set autoload on singleton class");
+    VALUE klass = (VALUE)rb_vm_get_current_class();
+    if (klass == 0) {
+	klass = rb_cObject;
     }
-    return rb_mod_autoload(klass, sym, file);
-#endif
-    // TODO
-    return Qnil;
+    return rb_mod_autoload(klass, 0, sym, file);
 }
 
 /*
@@ -367,16 +363,11 @@
 static VALUE
 rb_f_autoload_p(VALUE obj, SEL sel, VALUE sym)
 {
-#if 0
-    /* use rb_vm_cbase() as same as rb_f_autoload. */
-    VALUE klass = rb_vm_cbase();
-    if (NIL_P(klass)) {
-	return Qnil;
+    VALUE klass = (VALUE)rb_vm_get_current_class();
+    if (klass == 0) {
+	klass = rb_cObject;
     }
-    return rb_mod_autoload_p(klass, sym);
-#endif
-    // TODO
-    return Qnil;
+    return rb_mod_autoload_p(klass, 0, sym);
 }
 
 void

Modified: MacRuby/trunk/variable.c
===================================================================
--- MacRuby/trunk/variable.c	2009-10-13 23:38:08 UTC (rev 2789)
+++ MacRuby/trunk/variable.c	2009-10-14 02:06:19 UTC (rev 2790)
@@ -1453,11 +1453,7 @@
 	GC_WB(&DATA_PTR(av), tbl);
     }
     fn = rb_str_new2(file);
-#if __LP64__
-    RCLASS_RC_FLAGS(fn) &= ~FL_TAINT;
-#else
-    FL_UNSET(fn, FL_TAINT);
-#endif
+    rb_obj_untaint(fn);
     OBJ_FREEZE(fn);
     st_insert(tbl, id, (st_data_t)rb_node_newnode(NODE_MEMO, fn, rb_safe_level(), 0));
 }

Modified: MacRuby/trunk/vm.cpp
===================================================================
--- MacRuby/trunk/vm.cpp	2009-10-13 23:38:08 UTC (rev 2789)
+++ MacRuby/trunk/vm.cpp	2009-10-14 02:06:19 UTC (rev 2790)
@@ -3890,6 +3890,13 @@
 }
 
 extern "C"
+Class
+rb_vm_get_current_class(void)
+{
+    return GET_VM()->get_current_class();
+}
+
+extern "C"
 void
 rb_vm_set_current_scope(VALUE mod, rb_vm_scope_t scope)
 {

Modified: MacRuby/trunk/vm.h
===================================================================
--- MacRuby/trunk/vm.h	2009-10-13 23:38:08 UTC (rev 2789)
+++ MacRuby/trunk/vm.h	2009-10-14 02:06:19 UTC (rev 2790)
@@ -382,6 +382,7 @@
 void rb_vm_set_abort_on_exception(bool flag);
 
 Class rb_vm_set_current_class(Class klass);
+Class rb_vm_get_current_class(void);
 
 bool rb_vm_is_multithreaded(void);
 void rb_vm_set_multithreaded(bool flag);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091013/75f4cdae/attachment-0001.html>


More information about the macruby-changes mailing list