Hi, I’m working on a research project to optimize binary translation for target applications that dynamically generate code, such as browser JIT engines. When I run the octane benchmark in Chrome v8 under QEMU (i.e., qemu-x86_64), it shows significant overhead compared to a native run. Can someone tell me how QEMU maintains consistency with the target application when it dynamically generates code? For example, does it set executable pages readonly and catch the page fault when the target app writes to it? I searched the documentation and mailing list, but all the references to “dynamically generated code” and “JIT” are about code generated by QEMU, not about code generated by the target application. If there is a document about this somewhere, please send me a link—or just a basic explanation would also be very helpful. Thanks.
Byron