<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -2105,21 +2105,33 @@ RoxorCore::copy_methods(Class from_class, Class to_class)
 		continue;
 	    }
 
+	    rb_vm_method_source_t *m_src = iter2-&gt;second;
+
+	    Method m = class_getInstanceMethod(to_class, sel);
+	    if (m != NULL) {
+		// The method already exists - we need to JIT it.
+		IMP imp = GET_CORE()-&gt;compile(m_src-&gt;func);
+		resolve_method(to_class, sel, m_src-&gt;func, m_src-&gt;arity,
+			m_src-&gt;flags, imp, m);
+	    }
+	    else {
 #if ROXOR_VM_DEBUG
-	    printf(&quot;lazy copy %c[%s %s] to %s\n&quot;,
-		    class_isMetaClass(from_class) ? '+' : '-',
-		    class_getName(from_class),
-		    sel_getName(sel),
-		    class_getName(to_class));
+		printf(&quot;lazy copy %c[%s %s] to %c%s\n&quot;,
+			class_isMetaClass(from_class) ? '+' : '-',
+			class_getName(from_class),
+			sel_getName(sel),
+			class_isMetaClass(to_class) ? '+' : '-',
+			class_getName(to_class));
 #endif
 
-	    rb_vm_method_source_t *m = (rb_vm_method_source_t *)
-		malloc(sizeof(rb_vm_method_source_t));
-	    m-&gt;func = iter2-&gt;second-&gt;func;
-	    m-&gt;arity = iter2-&gt;second-&gt;arity;
-	    m-&gt;flags = iter2-&gt;second-&gt;flags;
-	    dict-&gt;insert(std::make_pair(to_class, m));
-	    sels_to_add.push_back(sel);
+		rb_vm_method_source_t *m = (rb_vm_method_source_t *)
+		    malloc(sizeof(rb_vm_method_source_t));
+		m-&gt;func = m_src-&gt;func;
+		m-&gt;arity = m_src-&gt;arity;
+		m-&gt;flags = m_src-&gt;flags;
+		dict-&gt;insert(std::make_pair(to_class, m));
+		sels_to_add.push_back(sel);
+	    }
 	}
 
 	for (std::vector&lt;SEL&gt;::iterator i = sels_to_add.begin();</diff>
      <filename>vm.cpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d73d4663a6b4b8b6b323d366adb93c2ee6c39d2d</id>
    </parent>
  </parents>
  <author>
    <name>lsansonetti@apple.com</name>
    <email>lsansonetti@apple.com@23306eb0-4c56-4727-a40e-e92c0eb68959</email>
  </author>
  <url>http://github.com/masterkain/macruby/commit/2cbd6f478ff9efd1f8149f37875cb3f96169d3a5</url>
  <id>2cbd6f478ff9efd1f8149f37875cb3f96169d3a5</id>
  <committed-date>2009-11-07T00:06:30-08:00</committed-date>
  <authored-date>2009-11-07T00:06:30-08:00</authored-date>
  <message>when mixing a class with a module, make sure to JIT methods that already exist in the target class

git-svn-id: http://svn.macosforge.org/repository/ruby/MacRuby/trunk@2978 23306eb0-4c56-4727-a40e-e92c0eb68959</message>
  <tree>e6509e226a4c533265f40e31081cad6e478f93d9</tree>
  <committer>
    <name>lsansonetti@apple.com</name>
    <email>lsansonetti@apple.com@23306eb0-4c56-4727-a40e-e92c0eb68959</email>
  </committer>
</commit>
