| Index: src/arm/assembler-arm.cc
|
| ===================================================================
|
| --- src/arm/assembler-arm.cc (revision 2397)
|
| +++ src/arm/assembler-arm.cc (working copy)
|
| @@ -697,6 +697,7 @@
|
|
|
|
|
| void Assembler::blx(int branch_offset) { // v5 and above
|
| + WriteRecordedPositions();
|
| ASSERT((branch_offset & 1) == 0);
|
| int h = ((branch_offset & 2) >> 1)*B24;
|
| int imm24 = branch_offset >> 2;
|
| @@ -706,12 +707,14 @@
|
|
|
|
|
| void Assembler::blx(Register target, Condition cond) { // v5 and above
|
| + WriteRecordedPositions();
|
| ASSERT(!target.is(pc));
|
| emit(cond | B24 | B21 | 15*B16 | 15*B12 | 15*B8 | 3*B4 | target.code());
|
| }
|
|
|
|
|
| void Assembler::bx(Register target, Condition cond) { // v5 and above, plus v4t
|
| + WriteRecordedPositions();
|
| ASSERT(!target.is(pc)); // use of pc is actually allowed, but discouraged
|
| emit(cond | B24 | B21 | 15*B16 | 15*B12 | 15*B8 | B4 | target.code());
|
| }
|
| @@ -810,6 +813,9 @@
|
|
|
|
|
| void Assembler::mov(Register dst, const Operand& src, SBit s, Condition cond) {
|
| + if (dst.is(pc)) {
|
| + WriteRecordedPositions();
|
| + }
|
| addrmod1(cond | 13*B21 | s, r0, dst, src);
|
| }
|
|
|
| @@ -937,6 +943,9 @@
|
|
|
| // Load/Store instructions
|
| void Assembler::ldr(Register dst, const MemOperand& src, Condition cond) {
|
| + if (dst.is(pc)) {
|
| + WriteRecordedPositions();
|
| + }
|
| addrmod2(cond | B26 | L, dst, src);
|
|
|
| // Eliminate pattern: push(r), pop(r)
|
| @@ -1274,7 +1283,6 @@
|
| if (pos == RelocInfo::kNoPosition) return;
|
| ASSERT(pos >= 0);
|
| current_position_ = pos;
|
| - WriteRecordedPositions();
|
| }
|
|
|
|
|
| @@ -1282,7 +1290,6 @@
|
| if (pos == RelocInfo::kNoPosition) return;
|
| ASSERT(pos >= 0);
|
| current_statement_position_ = pos;
|
| - WriteRecordedPositions();
|
| }
|
|
|
|
|
|
|