Merge remote-tracking branch 'joncham/sgen-msvc2'
authorRodrigo Kumpera <kumpera@gmail.com>
Wed, 10 Oct 2012 22:01:21 +0000 (18:01 -0400)
committerRodrigo Kumpera <kumpera@gmail.com>
Wed, 10 Oct 2012 22:01:21 +0000 (18:01 -0400)
Conflicts:
mono/metadata/sgen-copy-object.h
mono/metadata/sgen-gc.c

1  2 
mono/metadata/sgen-cardtable.c
mono/metadata/sgen-copy-object.h
mono/metadata/sgen-gc.c
mono/metadata/sgen-marksweep.c
mono/metadata/sgen-os-win32.c

Simple merge
index a1eccaee0f00418cabacddbcc1b4cc412d16b0ed,767be65fc539ac71218aa53fc724e203e3aa7505..c1404df194360413fae4fdea5a88c38c6ff19cdc
@@@ -42,13 -44,8 +44,14 @@@ par_copy_object_no_checks (char *destin
        DEBUG (9, g_assert (vt->klass->inited));
        DEBUG (9, fprintf (gc_debug_file, " (to %p, %s size: %lu)\n", destination, ((MonoObject*)obj)->vtable->klass->name, (unsigned long)objsize));
        binary_protocol_copy (obj, destination, vt, objsize);
 -      
 +
 +      if (G_UNLIKELY (MONO_GC_OBJ_MOVED_ENABLED ())) {
 +              int dest_gen = sgen_ptr_in_nursery (destination) ? GENERATION_NURSERY : GENERATION_OLD;
 +              int src_gen = sgen_ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD;
 +              MONO_GC_OBJ_MOVED ((mword)destination, (mword)obj, dest_gen, src_gen, objsize, vt->klass->name_space, vt->klass->name);
 +      }
 +
+ #ifdef __GNUC__
        if (objsize <= sizeof (gpointer) * 8) {
                mword *dest = (mword*)destination;
                goto *copy_labels [objsize / sizeof (gpointer)];
index a79b307328c8d795955d1426a2712f37e4b7b5bf,e6a0bec947927159f12f0ddcb07e9750a6299b2a..3431875933b56b7d6cdfccc95ded9beb1c5262c4
@@@ -3443,14 -3419,12 +3443,14 @@@ update_current_thread_stack (void *star
  #ifdef USE_MONO_CTX
        MONO_CONTEXT_GET_CURRENT (cur_thread_ctx);
        info->monoctx = &cur_thread_ctx;
 +      if (gc_callbacks.thread_suspend_func)
 +              gc_callbacks.thread_suspend_func (info->runtime_data, NULL, info->monoctx);
  #else
-       ARCH_STORE_REGS (ptr);
-       info->stopped_regs = ptr;
+       ARCH_STORE_REGS (reg_ptr);
+       info->stopped_regs = reg_ptr;
 -#endif
        if (gc_callbacks.thread_suspend_func)
 -              gc_callbacks.thread_suspend_func (info->runtime_data, NULL);
 +              gc_callbacks.thread_suspend_func (info->runtime_data, NULL, NULL);
 +#endif
  }
  
  void
Simple merge
Simple merge