Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
0631-GC-Support-heap-needs-of-more-than-2-GiB.p...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0631-GC-Support-heap-needs-of-more-than-2-GiB.patch of Package erlang
From dd75c3792bc35bf431435fdb62c448c847397652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org> Date: Wed, 18 Jan 2023 15:55:10 +0100 Subject: [PATCH 1/3] GC: Support heap needs of more than 2 GiB Use the `Uint` type instead of `int`. --- erts/emulator/beam/erl_gc.c | 16 ++++++++-------- erts/emulator/beam/erl_gc.h | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c index 2ef36009c7..582f3c7485 100644 --- a/erts/emulator/beam/erl_gc.c +++ b/erts/emulator/beam/erl_gc.c @@ -123,13 +123,13 @@ static Eterm *full_sweep_heaps(Process *p, char *oh, Uint oh_size, Eterm *objv, int nobj); static int garbage_collect(Process* p, ErlHeapFragment *live_hf_end, - int need, Eterm* objv, int nobj, int fcalls, + Uint need, Eterm* objv, int nobj, int fcalls, Uint max_young_gen_usage); static int major_collection(Process* p, ErlHeapFragment *live_hf_end, - int need, Eterm* objv, int nobj, + Uint need, Eterm* objv, int nobj, Uint ygen_usage, Uint *recl); static int minor_collection(Process* p, ErlHeapFragment *live_hf_end, - int need, Eterm* objv, int nobj, + Uint need, Eterm* objv, int nobj, Uint ygen_usage, Uint *recl); static void do_minor(Process *p, ErlHeapFragment *live_hf_end, char *mature, Uint mature_size, @@ -674,7 +674,7 @@ check_for_possibly_long_gc(Process *p, Uint ygen_usage) */ static int garbage_collect(Process* p, ErlHeapFragment *live_hf_end, - int need, Eterm* objv, int nobj, int fcalls, + Uint need, Eterm* objv, int nobj, int fcalls, Uint max_young_gen_usage) { Uint reclaimed_now = 0; @@ -876,7 +876,7 @@ do_major_collection: } int -erts_garbage_collect_nobump(Process* p, int need, Eterm* objv, int nobj, int fcalls) +erts_garbage_collect_nobump(Process* p, Uint need, Eterm* objv, int nobj, int fcalls) { int reds, reds_left; if (p->sig_qs.flags & (FS_ON_HEAP_MSGQ|FS_OFF_HEAP_MSGQ_CHNG)) { @@ -893,7 +893,7 @@ erts_garbage_collect_nobump(Process* p, int need, Eterm* objv, int nobj, int fca } void -erts_garbage_collect(Process* p, int need, Eterm* objv, int nobj) +erts_garbage_collect(Process* p, Uint need, Eterm* objv, int nobj) { int reds; if (p->sig_qs.flags & (FS_ON_HEAP_MSGQ|FS_OFF_HEAP_MSGQ_CHNG)) { @@ -1354,7 +1354,7 @@ erts_garbage_collect_literals(Process* p, Eterm* literals, static int minor_collection(Process* p, ErlHeapFragment *live_hf_end, - int need, Eterm* objv, int nobj, + Uint need, Eterm* objv, int nobj, Uint ygen_usage, Uint *recl) { Eterm *mature = p->abandoned_heap ? p->abandoned_heap : p->heap; @@ -1789,7 +1789,7 @@ do_minor(Process *p, ErlHeapFragment *live_hf_end, static int major_collection(Process* p, ErlHeapFragment *live_hf_end, - int need, Eterm* objv, int nobj, + Uint need, Eterm* objv, int nobj, Uint ygen_usage, Uint *recl) { Uint size_before, size_after, stack_size; diff --git a/erts/emulator/beam/erl_gc.h b/erts/emulator/beam/erl_gc.h index da4e5723c1..fab739c538 100644 --- a/erts/emulator/beam/erl_gc.h +++ b/erts/emulator/beam/erl_gc.h @@ -169,8 +169,8 @@ Eterm erts_process_gc_info(struct process*, Uint *, Eterm **, Uint, Uint); void erts_gc_info(ErtsGCInfo *gcip); void erts_init_gc(void); -int erts_garbage_collect_nobump(struct process*, int, Eterm*, int, int); -void erts_garbage_collect(struct process*, int, Eterm*, int); +int erts_garbage_collect_nobump(struct process*, Uint, Eterm*, int, int); +void erts_garbage_collect(struct process*, Uint, Eterm*, int); void erts_garbage_collect_hibernate(struct process* p); Eterm erts_gc_after_bif_call_lhf(struct process* p, ErlHeapFragment *live_hf_end, Eterm result, Eterm* regs, Uint arity); -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor