Commit 2bcf0f09 authored by Eli Zaretskii's avatar Eli Zaretskii

Improve commentary in 'field_relpos'

* src/pdumper.c (PDUMPER_MAX_OBJECT_SIZE): New macro.
(field_relpos): Use PDUMPER_MAX_OBJECT_SIZE, and comment on
why we require that relpos be not too large.
parent b29b79ef
Pipeline #1152 failed with stage
in 60 minutes and 2 seconds
......@@ -1777,6 +1777,8 @@ dump_roots (struct dump_context *ctx)
visit_static_gc_roots (visitor);
}
#define PDUMPER_MAX_OBJECT_SIZE 2048
static dump_off
field_relpos (const void *in_start, const void *in_field)
{
......@@ -1784,7 +1786,15 @@ field_relpos (const void *in_start, const void *in_field)
ptrdiff_t in_field_val = (ptrdiff_t) in_field;
eassert (in_start_val <= in_field_val);
ptrdiff_t relpos = in_field_val - in_start_val;
eassert (relpos < 1024); /* Sanity check. */
/* The following assertion attempts to detect bugs whereby IN_START
and IN_FIELD don't point to the same object/structure, on the
assumption that a too-large difference between them is
suspicious. As of Apr 2019 the largest object we dump -- 'struct
buffer' -- is slightly smaller than 1KB, and we want to leave
some margin for future extensions. If the assertion below is
ever violated, make sure the two pointers indeed point into the
same object, and if so, enlarge the value of PDUMPER_MAX_OBJECT_SIZE. */
eassert (relpos < PDUMPER_MAX_OBJECT_SIZE);
return (dump_off) relpos;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment