The current description for the (:extendedCode) annotation lacks technical details about extended code space, and the memory view in the simulator doesn't seem to take into account the existence of extended code space (only the regular code size has smaller numbers, which is expected).
- Do loaded pages occupy the same memory pool as they would occupy if their code were in the normal code space?
- If not, what's the maximum number of pages that can be loaded? The mentioned MRU strategy suggests, that the number is greater than one.
- If so, will the unused pages be unloaded if the program allocates a large amount of memory, or will these unused pages just cause the OOM?
- For how long the unused pages stay loaded?
- How are extended code pages built?
- Does the compiler analyze the call hierarchy and puts related code to the same page? Or does it choose code randomly? Or does it group by class/module?
- What is the largest and the smallest unit of code, that can be put to the single page? Is it a module and a function?
- What will happen if the related code size is larger than the size of the single page and it calls the code from another page? Will the system unload the first page, load and run the code from the second page, unload the second and load the first one again, and continue execution flow?
- What is the expected penalty for loading/unloading pages, how can I measure it with the profiler? Will the difference be visible in "time" columns? Will it be "total" or "actual"? At least, how do I get relative numbers to compare, how slow is the extended code pages loading?
- Make the simulator display code pages details: how many pages exist, what their real sizes are, which of them are loaded and which have been recently unloaded, what is their contents.
I'd rather read about these things than figure them out on my own.
To all developers reading this: add your questions in the comments. This is just what came to my mind.