Ticket #1382 (closed RFC: fixed)
auto::alignptrs: Eliminate this config step
| Reported by: | jkeenan | Owned by: | jkeenan |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | configure | Version: | trunk |
| Severity: | medium | Keywords: | |
| Cc: | plobsing | Language: | |
| Patch status: | applied | Platform: |
Description
In TT #498, Andy Dougherty noted that the result of configuration step auto::alignptrs is used in only two PARROT_ASSERT statements in src/pmc/unmanagedstruct.pmc:
127 static char *
128 char_offset_key(PARROT_INTERP, PMC *pmc, PMC *key, int *type)
129 {
...
186 if (*type == enum_type_struct_ptr) {
187 /* that is either a pointer */
188 PARROT_ASSERT((PTR2INTVAL(p) & (PARROT_PTR_ALIGNMENT - 1)) == 0);
189 VTABLE_set_pointer(interp, init, *(void**)p);
190 }
...
196 else if (init->vtable->base_type == enum_class_ManagedStruct
197 && *type == enum_type_struct_ptr) {
198 /* a nested struct pointer belonging to us
199 * p is the location of the struct pointer in the
200 * outer struct, the inner is at PMC_data(init) */
201
202 PARROT_ASSERT((PTR2INTVAL(p) & (PARROT_PTR_ALIGNMENT - 1)) == 0);
203 *(void **)p = VTABLE_get_pointer(interp, init);
204 }
205
206 return char_offset_key(interp, init, next, type);
207 }
So tonight I created the noalignptrs branch to see what would happen if we did indeed eliminate this step. So far, it has built and passed make test.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.

