| 3193 | } |
| 3194 | |
| 3195 | void GenCodeCmdConvertPtr(VMCmd cmd) |
| 3196 | { |
| 3197 | EMIT_COMMENT("CONVERTPTR"); |
| 3198 | |
| 3199 | EMIT_OP_REG(o_pop, rEAX); |
| 3200 | EMIT_OP_REG_NUM(o_cmp, rEAX, cmd.argument); |
| 3201 | EMIT_OP_LABEL(o_je, aluLabels); |
| 3202 | #ifdef __linux |
| 3203 | EMIT_OP_ADDR_REG(o_mov, sDWORD, paramBase-16, rEAX); |
| 3204 | // call siglongjmp(target_env, EXCEPTION_CONVERSION_ERROR); |
| 3205 | EMIT_OP_NUM(o_push, EXCEPTION_CONVERSION_ERROR | (cmd.argument << 8)); |
| 3206 | EMIT_OP_NUM(o_push, nullcJmpTarget); |
| 3207 | EMIT_OP_RPTR(o_call, sDWORD, rNONE, 1, rNONE, (unsigned)(intptr_t)&siglongjmpPtr); |
| 3208 | #else |
| 3209 | EMIT_OP_REG_NUM(o_mov, rECX, cmd.argument); |
| 3210 | EMIT_OP_NUM(o_int, 3); |
| 3211 | #endif |
| 3212 | EMIT_LABEL(aluLabels); |
| 3213 | aluLabels++; |
| 3214 | } |
| 3215 | |
| 3216 | ExternTypeInfo* (*getTypeListFunc)() = GetTypeList; |
| 3217 |
nothing calls this directly
no test coverage detected