+
+
+ if (mono_gc_is_moving ()) {
+ /*check for a thin hash*/
+ mono_mb_emit_ldloc (mb, syncp_loc);
+ mono_mb_emit_icon (mb, 0x01);
+ mono_mb_emit_byte (mb, CEE_CONV_I);
+ mono_mb_emit_byte (mb, CEE_AND);
+ *thin_hash_branch = mono_mb_emit_short_branch (mb, CEE_BRTRUE_S);
+
+ /*clear gc bits*/
+ mono_mb_emit_ldloc (mb, syncp_loc);
+ mono_mb_emit_icon (mb, ~0x3);
+ mono_mb_emit_byte (mb, CEE_CONV_I);
+ mono_mb_emit_byte (mb, CEE_AND);
+ mono_mb_emit_stloc (mb, syncp_loc);
+ } else {
+ *thin_hash_branch = 0;
+ }
+