addressof works by reading data directly out of the stack to get a return address, then reading information from that location in memory to get the next CALL OpCode. This fails with the JIT because the return address is in the JITed code, not in the original p-code. Instead this library uses codescan.inc to convert runtime addressof calls to startup-time resolutions (i.e. constants). Despite being called "addressof-jit", this is useful in normal execution modes as well. See addressof.md for more details.
AddressofResolve()AddressofResolveFoundEndAddressofResolveFoundStartCodeScanAddMatcherCodeScanInitCodeScanMatcherCodeScanMatcherInit_CodeScanMatcherPattern_CodeScanRunFastCodeScannerGetAmxJITBaseAddressO@A_O@V_OP_CALLOP_CONST_PRIOP_HEAPOP_JUMPOP_JZEROP_LOAD_PRIOP_PUSH_CfalsegCodeScanCallback_matchreftrue
761 cells
AddressofResolveFoundEnd(scanner[])| Name | Info |
|---|---|
scanner |
[172] |
AsmContextAsmEmitConstPriCodeScanGetMatchAsmCodeScanGetMatchHoleCodeScanGetMatchLengthcellbytes
27 cells
AddressofResolveFoundStart(scanner[])| Name | Info |
|---|---|
scanner |
[172] |
AMX_HDRAMX_HDR_CODAsmContextAsmEmitJumpCodeScanGetMatchAsmCodeScanGetMatchHoleGetAmxBaseAddressGetAmxHeader
44 cells