V4 JIT: make call destination printing portable.

Change-Id: I743a5730442bc6c2af1beac1c3f1287c50242263
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
V4 JIT: fix constant shifts.

Do not generate constant shifts of 0. We do not use the flags, so it's a
move. On ARM it's actually important not to do this, because lsr/asr
with imm=0 is a special case (shift of 32 bits).

When in the area, also skip generating an and of the second operand with
0x1f. For Intel this is done on the CPU, and for ARM the JSC assembler
will generate it for us.

This patch also updates the ARM disassembler to print the right
immediate values for the shifts.

Change-Id: I7c92c8d899352712c84e5534c48392d75466be0e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
V4 IR: clean up basic-block management and statement access.

BasicBlocks have an index property which points to the index of that
basic block in the container array in Function. This property can be
used to store calculated information about basic blocks in a vector,
where the vector index corresponds to the basic block index. This is
a lot cheaper than storing any information in a
QHash<BasicBlock *, ....>.

However, this numbering requires that no re-ordering or deletion of
blocks happens. This change cleans up all that handling which was
scattered over a number of places.

Change-Id: I337abd39c030b9d30c82b7bbcf2ba89e50a08e63
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
V4 IR: prevent accidental detaches of QVectors.

Change-Id: I20ebf44ff0609f6833f7e59a4f2fb312be11b8c1
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
V4 IR: reduce runtime cost.

- Replace 2 QHash<BasicBlock *, ...> with QVector<...>, where the
  basic-block index is the index of the vector.
- Nearly all QHashes and QSets will have a minimal fill rate. So,
  initialize/reserve all of them with a reasonable minimal size to
  prevent re-allocations and re-hashing.

Change-Id: Iade857991d73fddd0b92cecb8d458064b253a08d
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>