Index: vm/gc_gen/src/thread/collector_alloc.h =================================================================== --- vm/gc_gen/src/thread/collector_alloc.h (revision 541265) +++ vm/gc_gen/src/thread/collector_alloc.h (working copy) @@ -22,6 +22,8 @@ #define _COLLECTOR_ALLOC_H_ #include "gc_thread.h" +#include "port_threadunsafe.h" + #ifdef USE_32BITS_HASHCODE #include "../common/hashcode.h" #endif @@ -70,10 +72,14 @@ #ifdef USE_32BITS_HASHCODE if(obj_is_set_hashcode){ + UNSAFE_REGION_START memcpy(p_targ_obj, p_obj, size-GC_OBJECT_ALIGNMENT); + UNSAFE_REGION_END oi = trace_forward_process_hashcode(p_targ_obj, p_obj ,oi, size); }else{ + UNSAFE_REGION_START memcpy(p_targ_obj, p_obj, size); + UNSAFE_REGION_END } #else memcpy(p_targ_obj, p_obj, size); Index: vm/gc_gen/src/common/gc_common.h =================================================================== --- vm/gc_gen/src/common/gc_common.h (revision 541265) +++ vm/gc_gen/src/common/gc_common.h (working copy) @@ -35,6 +35,7 @@ #include "gc_platform.h" #include "../gen/gc_for_barrier.h" +#include "port_threadunsafe.h" #define null 0 @@ -172,7 +173,11 @@ { return ref_to_obj_ptr(*p_slot); } FORCE_INLINE void write_slot(REF *p_slot, Partial_Reveal_Object *p_obj) -{ *p_slot = obj_ptr_to_ref(p_obj); } +{ + UNSAFE_REGION_START + *p_slot = obj_ptr_to_ref(p_obj); + UNSAFE_REGION_END +} inline POINTER_SIZE_INT round_up_to_size(POINTER_SIZE_INT size, int block_size)