Revision: 2861 http://trac.macosforge.org/projects/ruby/changeset/2861 Author: lsansonetti@apple.com Date: 2009-10-19 20:15:43 -0700 (Mon, 19 Oct 2009) Log Message: ----------- move some non-critical code out of vm.h Modified Paths: -------------- MacRuby/trunk/vm.cpp MacRuby/trunk/vm.h Modified: MacRuby/trunk/vm.cpp =================================================================== --- MacRuby/trunk/vm.cpp 2009-10-19 23:44:00 UTC (rev 2860) +++ MacRuby/trunk/vm.cpp 2009-10-20 03:15:43 UTC (rev 2861) @@ -1088,10 +1088,39 @@ GET_CORE()->const_defined(path); } +struct rb_vm_outer * +RoxorCore::get_outer(Class klass) +{ + std::map<Class, struct rb_vm_outer *>::iterator iter = + outers.find(klass); + return iter == outers.end() ? NULL : iter->second; +} + +void +RoxorCore::set_outer(Class klass, Class mod) +{ + struct rb_vm_outer *mod_outer = get_outer(mod); + struct rb_vm_outer *class_outer = get_outer(klass); + if (class_outer == NULL || class_outer->outer != mod_outer) { + if (class_outer != NULL) { + free(class_outer); + } + class_outer = (struct rb_vm_outer *) + malloc(sizeof(struct rb_vm_outer)); + class_outer->klass = klass; + class_outer->outer = mod_outer; + outers[klass] = class_outer; + } +} + extern "C" void rb_vm_set_outer(VALUE klass, VALUE under) { +#if ROXOR_VM_DEBUG + printf("set outer of %s to %s\n", class_getName((Class)klass), + class_getName((Class)under)); +#endif GET_CORE()->set_outer((Class)klass, (Class)under); } Modified: MacRuby/trunk/vm.h =================================================================== --- MacRuby/trunk/vm.h 2009-10-19 23:44:00 UTC (rev 2860) +++ MacRuby/trunk/vm.h 2009-10-20 03:15:43 UTC (rev 2861) @@ -736,27 +736,9 @@ void each_ivar_slot(VALUE obj, int (*func)(ANYARGS), void *ctx); bool class_can_have_ivar_slots(VALUE klass); - struct rb_vm_outer *get_outer(Class klass) { - std::map<Class, struct rb_vm_outer *>::iterator iter = - outers.find(klass); - return iter == outers.end() ? NULL : iter->second; - } + struct rb_vm_outer *get_outer(Class klass); + void set_outer(Class klass, Class mod); - void set_outer(Class klass, Class mod) { - struct rb_vm_outer *mod_outer = get_outer(mod); - struct rb_vm_outer *class_outer = get_outer(klass); - if (class_outer == NULL || class_outer->outer != mod_outer) { - if (class_outer != NULL) { - free(class_outer); - } - class_outer = (struct rb_vm_outer *) - malloc(sizeof(struct rb_vm_outer)); - class_outer->klass = klass; - class_outer->outer = mod_outer; - outers[klass] = class_outer; - } - } - size_t get_sizeof(const Type *type); size_t get_sizeof(const char *type); bool is_large_struct_type(const Type *type);