///
/// 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, when the JIT is in use, use codescan to convert /// runtime addressof
calls to startup-time resolutions. Actually, /// there's no reason why this should be restricted to JIT only. ///
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