pike.git/
src/
code/
amd64.c
Branch:
Tag:
Non-build tags
All tags
No tags
2013-06-19
2013-06-19 19:08:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>
bfca6c903fa8ed00850c78c3163e14c42e8e4b8e (
8
lines) (+
4
/-
4
)
[
Show
|
Annotate
]
Branch:
7.9
[amd64]
Some constant folding in F_POS_INT_INDEX.
2364:
mov_mem_reg( sp_reg, -1*sizeof(struct svalue)+8, REG_RDX ); /* u.array */ /* -> arr[sizeof(arr)-b] */ mov_mem32_reg( REG_RDX, OFFSETOF(array,size), REG_RCX );
-
mov_imm_reg( b, REG_RBX);
-
cmp_
reg
_
reg
( REG_RCX,
REG_RBX
);
-
jge
( &label_A ); /*
b
>
=
RBX
, index outside array */
-
shl
_
reg_
imm( REG_RBX
, 4
);
+
cmp_
reg32
_
imm
( REG_RCX,
b
);
+
jle
( &label_A ); /*
RCX
<
=
b
, index outside array */
+
mov
_
imm_
reg(
b * sizeof(struct svalue),
REG_RBX);
add_reg_mem( REG_RBX, REG_RDX, OFFSETOF(array,item) ); /* This overwrites the array. */