micropython/py
Damien George 97b13132b1 py/gc: Improve calculation of new heap size in split-heap-auto mode.
There are two main changes here to improve the calculation of the size of
the next heap area when automatically expanding the heap:
- Compute the existing total size by counting the total number of GC
  blocks, and then using that to compute the corresponding number of bytes.
- Round the bytes value up to the nearest multiple of BYTES_PER_BLOCK.

This makes the calculation slightly simpler and more accurate, and makes
sure that, in the case of growing from one area to two areas, the number
of bytes allocated from the system for the second area is the same as the
first.  For example on esp32 with an initial area size of 65536 bytes, the
subsequent allocation is also 65536 bytes.  Previously it was a number that
was not even a multiple of 2.

Signed-off-by: Damien George <damien@micropython.org>
2023-12-19 18:34:23 +11:00
..
argcheck.c
asmarm.c
asmarm.h
asmbase.c
asmbase.h
asmthumb.c
asmthumb.h
asmx64.c
asmx64.h
asmx86.c
asmx86.h
asmxtensa.c
asmxtensa.h
bc.c
bc.h
bc0.h
binary.c
binary.h
builtin.h
builtinevex.c
builtinhelp.c
builtinimport.c
compile.c
compile.h
dynruntime.h
dynruntime.mk
emit.h
emitbc.c
emitcommon.c
emitglue.c
emitglue.h
emitinlinethumb.c
emitinlinextensa.c
emitnarm.c
emitnative.c
emitnthumb.c
emitnx64.c
emitnx86.c
emitnxtensa.c
emitnxtensawin.c
formatfloat.c
formatfloat.h
frozenmod.c
frozenmod.h
gc.c py/gc: Improve calculation of new heap size in split-heap-auto mode. 2023-12-19 18:34:23 +11:00
gc.h
grammar.h
lexer.c
lexer.h
make_root_pointers.py
makecompresseddata.py
makemoduledefs.py
makeqstrdata.py
makeqstrdefs.py
makeversionhdr.py
malloc.c
map.c
misc.h
mkenv.mk
mkrules.cmake
mkrules.mk
modarray.c
modbuiltins.c
modcmath.c
modcollections.c
moderrno.c
modgc.c
modio.c
modmath.c
modmicropython.c
modstruct.c
modsys.c
modthread.c
mpconfig.h
mperrno.h
mphal.h
mpprint.c
mpprint.h
mpstate.c
mpstate.h
mpthread.h
mpz.c
mpz.h
nativeglue.c
nativeglue.h
nlr.c
nlr.h
nlraarch64.c
nlrmips.c
nlrpowerpc.c
nlrsetjmp.c
nlrthumb.c
nlrx64.c
nlrx86.c
nlrxtensa.c
obj.c
obj.h
objarray.c
objarray.h
objattrtuple.c
objbool.c
objboundmeth.c
objcell.c
objclosure.c
objcomplex.c
objdeque.c
objdict.c
objenumerate.c
objexcept.c
objexcept.h
objfilter.c
objfloat.c
objfun.c
objfun.h
objgenerator.c
objgenerator.h
objgetitemiter.c
objint.c
objint.h
objint_longlong.c
objint_mpz.c
objlist.c
objlist.h
objmap.c
objmodule.c
objmodule.h
objnamedtuple.c
objnamedtuple.h
objnone.c
objobject.c
objpolyiter.c
objproperty.c
objrange.c
objreversed.c
objset.c
objsingleton.c
objslice.c
objstr.c
objstr.h
objstringio.c
objstringio.h
objstrunicode.c
objtuple.c
objtuple.h
objtype.c
objtype.h
objzip.c
opmethods.c
pairheap.c
pairheap.h
parse.c
parse.h
parsenum.c
parsenum.h
parsenumbase.c
parsenumbase.h
persistentcode.c
persistentcode.h
profile.c
profile.h
py.cmake
py.mk
pystack.c
pystack.h
qstr.c
qstr.h
qstrdefs.h
reader.c
reader.h
repl.c
repl.h
ringbuf.c
ringbuf.h
runtime.c
runtime.h
runtime0.h
runtime_utils.c
scheduler.c
scope.c
scope.h
sequence.c
showbc.c
smallint.c
smallint.h
stackctrl.c
stackctrl.h
stream.c
stream.h
unicode.c
unicode.h
usermod.cmake
vm.c
vmentrytable.h
vstr.c
warning.c