Index: working_vm/vm/gc_gen/src/common/gc_block.h =================================================================== --- working_vm/vm/gc_gen/src/common/gc_block.h (revision 649000) +++ working_vm/vm/gc_gen/src/common/gc_block.h (working copy) @@ -84,7 +84,11 @@ #define OFFSET_TABLE_SIZE_WORDS (OFFSET_TABLE_SIZE_BYTES >> BIT_SHIFT_TO_BYTES_PER_WORD) #define OBJECT_INDEX_TO_OFFSET_TABLE(p_obj) (ADDRESS_OFFSET_IN_BLOCK_BODY(p_obj) >> SECTOR_SIZE_SHIFT_COUNT) -#define GC_BLOCK_HEADER_SIZE_BYTES ((OFFSET_TABLE_SIZE_BYTES + GC_BLOCK_HEADER_VARS_SIZE_BYTES + GC_OBJECT_ALIGN_MASK ) & (~GC_OBJECT_ALIGN_MASK)) +#define GC_BLOCK_BODY_ALIGNMENT ((GC_OBJECT_ALIGNMENT<8) ? 8 : GC_OBJECT_ALIGNMENT) +#define GC_BLOCK_BODY_ALIGN_MASK (GC_BLOCK_BODY_ALIGNMENT-1) + +#define GC_BLOCK_HEADER_SIZE_BYTES ((OFFSET_TABLE_SIZE_BYTES + GC_BLOCK_HEADER_VARS_SIZE_BYTES + GC_BLOCK_BODY_ALIGN_MASK ) & (~GC_BLOCK_BODY_ALIGN_MASK)) + #define GC_BLOCK_BODY_SIZE_BYTES (GC_BLOCK_SIZE_BYTES - GC_BLOCK_HEADER_SIZE_BYTES) #define GC_BLOCK_BODY(block) ((void*)((POINTER_SIZE_INT)(block) + GC_BLOCK_HEADER_SIZE_BYTES)) /*LOS_Shrink: We have some fake block headers when trying to compute mos object target,