Whenever V8 has to flush the ICache on ARM, this is due to self-modifying code. I understand this e.g. happens when we patch return points to optimized code with calls to de-optimization runtime functions. What I haven't understood is if and when garbage collection actually modifies code objects (not moving them, if code is moved, that's not SMC, and shouldn't require to flush the ICache. So in which cases is code actually getting patched (by garbage collection), e.g. is code getting patched with new pointer literal values?
Then the second part I'd wanted to understand was where in V8 do we make sure that when e.g. pointer values are changed (because we moved data on the heap), that the hardware state in the processor is updated as well (some pointers might have lived in registers)? Any help, hints, tips, links would be greatly appreciated! (This one here is a great summary but didn't answer the questions above http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection). Hendrik Greving -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
