File tree 1 file changed +2
-2
lines changed
1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change @@ -122,7 +122,7 @@ void gc_init(void *start, void *end) {
122
122
// => T = A * (1 + BLOCKS_PER_ATB / BLOCKS_PER_FTB + BLOCKS_PER_ATB * BYTES_PER_BLOCK)
123
123
size_t total_byte_len = (byte * )end - (byte * )start ;
124
124
#if MICROPY_ENABLE_FINALISER
125
- MP_STATE_MEM (gc_alloc_table_byte_len ) = total_byte_len * MP_BITS_PER_BYTE / (MP_BITS_PER_BYTE + MP_BITS_PER_BYTE * BLOCKS_PER_ATB / BLOCKS_PER_FTB + MP_BITS_PER_BYTE * BLOCKS_PER_ATB * BYTES_PER_BLOCK );
125
+ MP_STATE_MEM (gc_alloc_table_byte_len ) = ( total_byte_len - 1 ) * MP_BITS_PER_BYTE / (MP_BITS_PER_BYTE + MP_BITS_PER_BYTE * BLOCKS_PER_ATB / BLOCKS_PER_FTB + MP_BITS_PER_BYTE * BLOCKS_PER_ATB * BYTES_PER_BLOCK );
126
126
#else
127
127
MP_STATE_MEM (gc_alloc_table_byte_len ) = total_byte_len / (1 + MP_BITS_PER_BYTE / 2 * BYTES_PER_BLOCK );
128
128
#endif
@@ -131,7 +131,7 @@ void gc_init(void *start, void *end) {
131
131
132
132
#if MICROPY_ENABLE_FINALISER
133
133
size_t gc_finaliser_table_byte_len = (MP_STATE_MEM (gc_alloc_table_byte_len ) * BLOCKS_PER_ATB + BLOCKS_PER_FTB - 1 ) / BLOCKS_PER_FTB ;
134
- MP_STATE_MEM (gc_finaliser_table_start ) = MP_STATE_MEM (gc_alloc_table_start ) + MP_STATE_MEM (gc_alloc_table_byte_len );
134
+ MP_STATE_MEM (gc_finaliser_table_start ) = MP_STATE_MEM (gc_alloc_table_start ) + MP_STATE_MEM (gc_alloc_table_byte_len ) + 1 ;
135
135
#endif
136
136
137
137
size_t gc_pool_block_len = MP_STATE_MEM (gc_alloc_table_byte_len ) * BLOCKS_PER_ATB ;
You can’t perform that action at this time.
0 commit comments