what is the reason behind needing to instrument the exact same address?
The problem I am trying to trace is entirely dependant upon the internal handling of addresses.
My essential contribution to the module revolves around replacing the use of a hash to track whether the components of complex data-structure hierarchies had already be traversed--and therefore counted--, with a bit vector where each possible address in the virtual memory space is mapped to a single bit. This involves some notionally straight forward masking & shifting operations on the actual addresses of Perl's many internal data structures.
The complexities arise because of the need to perform those operations in terms of the size of those pointers--32 or 64-bit--as determined at runtime.
This is further complicated by the fact that MS compilers use the LLP64 programming model, but gcc uses the LP64 programming model. (See [OT] LLP64 .v. LP64 portability for a little more background on this.) And this is further complicated because there are no cross-compiler compatible types for performing the math safely.
As the addresses used in the allocations for large arrays is influenced by what has been previously allocated, there is no way to map the addresses of a large array allocated in one script to the addresses allocated for an apparently identical array in another script.
In reply to Re^4: Module development: concurrent versions (Updated)
by BrowserUk
in thread Module development: concurrent versions (Updated)
by BrowserUk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |