| Index: src/assembler-arm.cc
|
| ===================================================================
|
| --- src/assembler-arm.cc (revision 352)
|
| +++ src/assembler-arm.cc (working copy)
|
| @@ -164,11 +164,11 @@
|
| ASSERT(!Heap::InNewSpace(obj));
|
| if (obj->IsHeapObject()) {
|
| imm32_ = reinterpret_cast<intptr_t>(handle.location());
|
| - rmode_ = embedded_object;
|
| + rmode_ = RelocInfo::EMBEDDED_OBJECT;
|
| } else {
|
| // no relocation needed
|
| imm32_ = reinterpret_cast<intptr_t>(obj);
|
| - rmode_ = no_reloc;
|
| + rmode_ = RelocInfo::NONE;
|
| }
|
| }
|
|
|
| @@ -320,7 +320,7 @@
|
| no_const_pool_before_ = 0;
|
| last_const_pool_end_ = 0;
|
| last_bound_pos_ = 0;
|
| - last_position_ = kNoPosition;
|
| + last_position_ = RelocInfo::kNoPosition;
|
| last_position_is_statement_ = false;
|
| }
|
|
|
| @@ -588,7 +588,8 @@
|
| // immediate
|
| uint32_t rotate_imm;
|
| uint32_t immed_8;
|
| - if ((x.rmode_ != no_reloc && x.rmode_ != external_reference) ||
|
| + if ((x.rmode_ != RelocInfo::NONE &&
|
| + x.rmode_ != RelocInfo::EXTERNAL_REFERENCE) ||
|
| !fits_shifter(x.imm32_, &rotate_imm, &immed_8, &instr)) {
|
| // The immediate operand cannot be encoded as a shifter operand, so load
|
| // it first to register ip and change the original instruction to use ip.
|
| @@ -1006,7 +1007,8 @@
|
| // immediate
|
| uint32_t rotate_imm;
|
| uint32_t immed_8;
|
| - if ((src.rmode_ != no_reloc && src.rmode_ != external_reference)||
|
| + if ((src.rmode_ != RelocInfo::NONE &&
|
| + src.rmode_ != RelocInfo::EXTERNAL_REFERENCE)||
|
| !fits_shifter(src.imm32_, &rotate_imm, &immed_8, NULL)) {
|
| // immediate operand cannot be encoded, load it first to register ip
|
| RecordRelocInfo(src.rmode_, src.imm32_);
|
| @@ -1353,17 +1355,17 @@
|
| void Assembler::RecordComment(const char* msg) {
|
| if (FLAG_debug_code) {
|
| CheckBuffer();
|
| - RecordRelocInfo(comment, reinterpret_cast<intptr_t>(msg));
|
| + RecordRelocInfo(RelocInfo::COMMENT, reinterpret_cast<intptr_t>(msg));
|
| }
|
| }
|
|
|
|
|
| void Assembler::RecordPosition(int pos) {
|
| - if (pos == kNoPosition) return;
|
| - ASSERT(position >= 0);
|
| + if (pos == RelocInfo::kNoPosition) return;
|
| + ASSERT(pos >= 0);
|
| if (pos == last_position_) return;
|
| CheckBuffer();
|
| - RecordRelocInfo(position, pos);
|
| + RecordRelocInfo(RelocInfo::POSITION, pos);
|
| last_position_ = pos;
|
| last_position_is_statement_ = false;
|
| }
|
| @@ -1372,7 +1374,7 @@
|
| void Assembler::RecordStatementPosition(int pos) {
|
| if (pos == last_position_) return;
|
| CheckBuffer();
|
| - RecordRelocInfo(statement_position, pos);
|
| + RecordRelocInfo(RelocInfo::STATEMENT_POSITION, pos);
|
| last_position_ = pos;
|
| last_position_is_statement_ = true;
|
| }
|
| @@ -1420,17 +1422,18 @@
|
| // relocate pending relocation entries
|
| for (int i = 0; i < num_prinfo_; i++) {
|
| RelocInfo& rinfo = prinfo_[i];
|
| - ASSERT(rinfo.rmode() != comment && rinfo.rmode() != position);
|
| + ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
|
| + rinfo.rmode() != RelocInfo::POSITION);
|
| rinfo.set_pc(rinfo.pc() + pc_delta);
|
| }
|
| }
|
|
|
|
|
| -void Assembler::RecordRelocInfo(RelocMode rmode, intptr_t data) {
|
| +void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
|
| RelocInfo rinfo(pc_, rmode, data); // we do not try to reuse pool constants
|
| - if (rmode >= comment && rmode <= statement_position) {
|
| + if (rmode >= RelocInfo::COMMENT && rmode <= RelocInfo::STATEMENT_POSITION) {
|
| // adjust code for new modes
|
| - ASSERT(is_comment(rmode) || is_position(rmode));
|
| + ASSERT(RelocInfo::IsComment(rmode) || RelocInfo::IsPosition(rmode));
|
| // these modes do not need an entry in the constant pool
|
| } else {
|
| ASSERT(num_prinfo_ < kMaxNumPRInfo);
|
| @@ -1439,9 +1442,9 @@
|
| // instruction for which we just recorded relocation info
|
| BlockConstPoolBefore(pc_offset() + kInstrSize);
|
| }
|
| - if (rinfo.rmode() != no_reloc) {
|
| + if (rinfo.rmode() != RelocInfo::NONE) {
|
| // Don't record external references unless the heap will be serialized.
|
| - if (rmode == external_reference &&
|
| + if (rmode == RelocInfo::EXTERNAL_REFERENCE &&
|
| !Serializer::enabled() &&
|
| !FLAG_debug_code) {
|
| return;
|
| @@ -1520,8 +1523,9 @@
|
| // Emit constant pool entries
|
| for (int i = 0; i < num_prinfo_; i++) {
|
| RelocInfo& rinfo = prinfo_[i];
|
| - ASSERT(rinfo.rmode() != comment && rinfo.rmode() != position &&
|
| - rinfo.rmode() != statement_position);
|
| + ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
|
| + rinfo.rmode() != RelocInfo::POSITION &&
|
| + rinfo.rmode() != RelocInfo::STATEMENT_POSITION);
|
| Instr instr = instr_at(rinfo.pc());
|
| // Instruction to patch must be a ldr/str [pc, #offset]
|
| // P and U set, B and W clear, Rn == pc, offset12 still 0
|
|
|