Skip to content
Snippets Groups Projects
Commit fca6f172 authored by Tobias S. Josefowitz's avatar Tobias S. Josefowitz Committed by Henrik (Grubba) Grubbström
Browse files

ADT.List: Do not put struct pike_list_structs into the GC

Backport from Pike master.

Fixes Pike.count_memory() getting stuck in a loop on ADT.List.

NB: The comments about inline markers below are not relevant
    to Pike 8.0.

Original commit message from Pike master follows:

Since the GC was changed to use inline markers, all items fed into the
GC must comply with a certain memory layout - containing
GC_MARKER_MEMBERS at the beginning of their region.

struct pike_list_struct does not, and cannot easily be made to because
struct List_struct (storage of ADT.List) and struct pike_list_struct
need to stay compatible because the former is used to store sentinels
being used as the latter type.

While we lose reporting from the GC about issues in ADT.List's inner
structure, GC checking of struct pike_list_structs seems to not be
functionally required. On the upside, the GC no longer writes beyond
or into struct pike_list_structs which did not reserve the memory areas
for use by the GC.
parent d04cd48b
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment