The shell testcase in bug 514765 consists primarily of a dispatch loop and functions which manipulate a few global arrays (e.g. MEM[...]). These globals are never reassigned, so the addresses of the arrays could be baked into the code and the global accesses removed. This would behave similarly to method write barriers, except that (a) no shape check on the global is needed (good for speed and robustness) (b) applies to objects other than methods, even constant primitives and (c) loading code which can change the global (e.g. through eval) triggers recompilation rather than shape change. Benchmarks do this at least a little bit; the main benefit there is for CALLGLOBAL/CALLGNAME, which most calls in SS use and which are known singleton objects.
Do we do this, nowadays?
Status: NEW → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.