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()
AddressofResolveFoundEnd
AddressofResolveFoundStart
CodeScanAddMatcher
CodeScanInit
CodeScanMatcher
CodeScanMatcherInit_
CodeScanMatcherPattern_
CodeScanRunFast
CodeScanner
GetAmxJITBaseAddress
O@A_
O@V_
OP_CALL
OP_CONST_PRI
OP_HEAP
OP_JUMP
OP_JZER
OP_LOAD_PRI
OP_PUSH_C
false
gCodeScanCallback_match
ref
true
761 cells
AddressofResolveFoundEnd(scanner[])
Name | Info |
---|---|
scanner |
[172] |
AsmContext
AsmEmitConstPri
CodeScanGetMatchAsm
CodeScanGetMatchHole
CodeScanGetMatchLength
cellbytes
27 cells
AddressofResolveFoundStart(scanner[])
Name | Info |
---|---|
scanner |
[172] |
AMX_HDR
AMX_HDR_COD
AsmContext
AsmEmitJump
CodeScanGetMatchAsm
CodeScanGetMatchHole
GetAmxBaseAddress
GetAmxHeader
44 cells