diff -BburN gc_gen/src/common/hashcode.h gc_gen.new/src/common/hashcode.h --- gc_gen/src/common/hashcode.h 2008-01-21 01:23:32.000000000 +0800 +++ gc_gen.new/src/common/hashcode.h 2008-01-21 01:25:22.000000000 +0800 @@ -167,7 +167,7 @@ Vector_Block* tail_block = (Vector_Block*)seq_list_end_node(list); vector_block_add_entry(tail_block, (POINTER_SIZE_INT) p_obj); POINTER_SIZE_INT hashcode_var = 0; - *(int*) &hashcode_var = hashcode; + hashcode_var = (POINTER_SIZE_INT)hashcode; vector_block_add_entry(tail_block, hashcode_var); if(!vector_block_is_full(tail_block)) return; @@ -301,7 +301,7 @@ if((POINTER_SIZE_INT)dest_addr != (POINTER_SIZE_INT)p_obj){ *p_obj_size += GC_OBJECT_ALIGNMENT; obj_info = obj_info | HASHCODE_ATTACHED_BIT; - *(int*) &hashcode = hashcode_gen(p_obj); + hashcode = (POINTER_SIZE_INT)hashcode_gen(p_obj); POINTER_SIZE_INT obj_end_pos = (POINTER_SIZE_INT)dest_addr + vm_object_size(p_obj); collector_hashcodeset_add_entry(collector, (Partial_Reveal_Object**)obj_end_pos); collector_hashcodeset_add_entry(collector, (Partial_Reveal_Object**)hashcode); @@ -313,7 +313,7 @@ break; case HASHCODE_SET_BUFFERED: - *(int*) &hashcode = hashcode_buf_lookup(p_obj, old_buf); + hashcode = (POINTER_SIZE_INT)hashcode_buf_lookup(p_obj, old_buf); if((POINTER_SIZE_INT)dest_addr != (POINTER_SIZE_INT)p_obj){ *p_obj_size += GC_OBJECT_ALIGNMENT; obj_info = obj_info & ~HASHCODE_BUFFERED_BIT;