| Index: src/arm/assembler-arm.cc
|
| ===================================================================
|
| --- src/arm/assembler-arm.cc (revision 5854)
|
| +++ src/arm/assembler-arm.cc (working copy)
|
| @@ -397,7 +397,7 @@
|
| }
|
|
|
|
|
| -bool Assembler::IsNop(Instr instr, int type) {
|
| +bool Assembler::IsNop(Instr instr, NopMarkerTypes type) {
|
| // Check for mov rx, rx.
|
| ASSERT(0 <= type && type <= 14); // mov pc, pc is not a nop.
|
| return instr == (al | 13*B21 | type*B12 | type);
|
| @@ -510,6 +510,13 @@
|
| }
|
|
|
|
|
| +bool Assembler::IsLdrPcImmediateOffset(Instr instr) {
|
| + // Check the instruction is indeed a
|
| + // ldr<cond> <Rd>, [pc +/- offset_12].
|
| + return (instr & 0x0f7f0000) == 0x051f0000;
|
| +}
|
| +
|
| +
|
| // Labels refer to positions in the (to be) generated code.
|
| // There are bound, linked, and unused labels.
|
| //
|
| @@ -1113,8 +1120,8 @@
|
| positions_recorder()->WriteRecordedPositions();
|
| }
|
| // Don't allow nop instructions in the form mov rn, rn to be generated using
|
| - // the mov instruction. They must be generated using nop(int)
|
| - // pseudo instructions.
|
| + // the mov instruction. They must be generated using nop(NopMarkerTypes) or
|
| + // MarkCode(NopMarkerTypes) pseudo instructions.
|
| ASSERT(!(src.is_reg() && src.rm().is(dst) && s == LeaveCC && cond == al));
|
| addrmod1(cond | 13*B21 | s, r0, dst, src);
|
| }
|
| @@ -2369,7 +2376,7 @@
|
|
|
|
|
| // Pseudo instructions.
|
| -void Assembler::nop(int type) {
|
| +void Assembler::nop(NopMarkerTypes type) {
|
| // This is mov rx, rx.
|
| ASSERT(0 <= type && type <= 14); // mov pc, pc is not a nop.
|
| emit(al | 13*B21 | type*B12 | type);
|
|
|