diff options
author | Sverker Eriksson <[email protected]> | 2010-06-23 16:57:44 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2010-07-20 18:47:08 +0200 |
commit | db206769c477aae8bafb7ae9b6b4fe1ad56cf729 (patch) | |
tree | f2ab6834959c634fa41ee506e4e139a8be685d93 /erts/emulator/beam/binary.c | |
parent | c4b4edaaf03ac12e12080cb4a3768edbb6ecf77d (diff) | |
download | otp-db206769c477aae8bafb7ae9b6b4fe1ad56cf729.tar.gz otp-db206769c477aae8bafb7ae9b6b4fe1ad56cf729.tar.bz2 otp-db206769c477aae8bafb7ae9b6b4fe1ad56cf729.zip |
One off-heap list, to eliminate two words per ETS object.
Merging the three off-heap lists (binaries, funs and externals) into
one list. This reduces memory consumption by two words (pointers) per
ETS object.
Diffstat (limited to 'erts/emulator/beam/binary.c')
-rw-r--r-- | erts/emulator/beam/binary.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/erts/emulator/beam/binary.c b/erts/emulator/beam/binary.c index c68392fad4..3fd714f9c2 100644 --- a/erts/emulator/beam/binary.c +++ b/erts/emulator/beam/binary.c @@ -88,8 +88,8 @@ new_binary(Process *p, byte *buf, int len) pb = (ProcBin *) HAlloc(p, PROC_BIN_SIZE); pb->thing_word = HEADER_PROC_BIN; pb->size = len; - pb->next = MSO(p).mso; - MSO(p).mso = pb; + pb->next = MSO(p).first; + MSO(p).first = (struct erl_off_heap_header*)pb; pb->val = bptr; pb->bytes = (byte*) bptr->orig_bytes; pb->flags = 0; @@ -127,8 +127,8 @@ Eterm erts_new_mso_binary(Process *p, byte *buf, int len) pb = (ProcBin *) HAlloc(p, PROC_BIN_SIZE); pb->thing_word = HEADER_PROC_BIN; pb->size = len; - pb->next = MSO(p).mso; - MSO(p).mso = pb; + pb->next = MSO(p).first; + MSO(p).first = (struct erl_off_heap_header*)pb; pb->val = bptr; pb->bytes = (byte*) bptr->orig_bytes; pb->flags = 0; @@ -487,16 +487,6 @@ BIF_RETTYPE split_binary_2(BIF_ALIST_2) BIF_ERROR(BIF_P, BADARG); } -void -erts_cleanup_mso(ProcBin* pb) -{ - while (pb != NULL) { - ProcBin* next = pb->next; - if (erts_refc_dectest(&pb->val->refc, 0) == 0) - erts_bin_free(pb->val); - pb = next; - } -} /* * Local functions. |