mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 14:01:45 +00:00
Pointer addition opcodes must leave NULL pointers as they are.
This commit is contained in:
parent
ac462638d3
commit
a8ce626708
1 changed files with 20 additions and 0 deletions
|
@ -1461,18 +1461,38 @@ JitFuncPtr JitCompile(VMScriptFunction *sfunc)
|
|||
case OP_ADDA_RR: // pA = pB + dkC
|
||||
{
|
||||
auto tmp = cc.newIntPtr();
|
||||
Label label = cc.newLabel();
|
||||
|
||||
cc.mov(tmp, regA[B]);
|
||||
|
||||
// Check if zero, the first operand is zero, if it is, don't add.
|
||||
cc.cmp(tmp, 0);
|
||||
cc.je(label);
|
||||
|
||||
cc.add(tmp, regD[C]);
|
||||
|
||||
cc.bind(label);
|
||||
cc.mov(regA[a], tmp);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case OP_ADDA_RK:
|
||||
{
|
||||
auto tmp = cc.newIntPtr();
|
||||
Label label = cc.newLabel();
|
||||
|
||||
cc.mov(tmp, regA[B]);
|
||||
|
||||
// Check if zero, the first operand is zero, if it is, don't add.
|
||||
cc.cmp(tmp, 0);
|
||||
cc.je(label);
|
||||
|
||||
cc.add(tmp, konstd[C]);
|
||||
|
||||
cc.bind(label);
|
||||
cc.mov(regA[a], tmp);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue