| Index: runtime/vm/simulator_mips.cc
 | 
| ===================================================================
 | 
| --- runtime/vm/simulator_mips.cc	(revision 42212)
 | 
| +++ runtime/vm/simulator_mips.cc	(working copy)
 | 
| @@ -105,10 +105,6 @@
 | 
|                               bool is_inlined);
 | 
|    void PrintBacktrace();
 | 
|  
 | 
| -  static const int32_t kSimulatorBreakpointInstruction =
 | 
| -      Instr::kBreakPointInstruction |
 | 
| -      (Instr::kSimulatorBreakCode << kBreakCodeShift);
 | 
| -
 | 
|    // Set or delete a breakpoint. Returns true if successful.
 | 
|    bool SetBreakpoint(Instr* breakpc);
 | 
|    bool DeleteBreakpoint(Instr* breakpc);
 | 
| @@ -393,7 +389,7 @@
 | 
|  
 | 
|  void SimulatorDebugger::RedoBreakpoints() {
 | 
|    if (sim_->break_pc_ != NULL) {
 | 
| -    sim_->break_pc_->SetInstructionBits(kSimulatorBreakpointInstruction);
 | 
| +    sim_->break_pc_->SetInstructionBits(Instr::kSimulatorBreakpointInstruction);
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -540,11 +536,11 @@
 | 
|            end = start + (10 * Instr::kInstrSize);
 | 
|          } else if (args == 2) {
 | 
|            if (GetValue(arg1, &start)) {
 | 
| -            // no length parameter passed, assume 10 instructions
 | 
| +            // No length parameter passed, assume 10 instructions.
 | 
|              if (Simulator::IsIllegalAddress(start)) {
 | 
| -              // If start isn't a valid address, warn and use PC instead
 | 
| +              // If start isn't a valid address, warn and use PC instead.
 | 
|                OS::Print("First argument yields invalid address: 0x%x\n", start);
 | 
| -              OS::Print("Using PC instead");
 | 
| +              OS::Print("Using PC instead\n");
 | 
|                start = sim_->get_pc();
 | 
|              }
 | 
|              end = start + (10 * Instr::kInstrSize);
 | 
| @@ -553,7 +549,7 @@
 | 
|            uint32_t length;
 | 
|            if (GetValue(arg1, &start) && GetValue(arg2, &length)) {
 | 
|              if (Simulator::IsIllegalAddress(start)) {
 | 
| -              // If start isn't a valid address, warn and use PC instead
 | 
| +              // If start isn't a valid address, warn and use PC instead.
 | 
|                OS::Print("First argument yields invalid address: 0x%x\n", start);
 | 
|                OS::Print("Using PC instead\n");
 | 
|                start = sim_->get_pc();
 | 
| @@ -561,8 +557,11 @@
 | 
|              end = start + (length * Instr::kInstrSize);
 | 
|            }
 | 
|          }
 | 
| -
 | 
| -        Disassembler::Disassemble(start, end);
 | 
| +        if ((start > 0) && (end > start)) {
 | 
| +          Disassembler::Disassemble(start, end);
 | 
| +        } else {
 | 
| +          OS::Print("disasm [<address> [<number_of_instructions>]]\n");
 | 
| +        }
 | 
|        } else if (strcmp(cmd, "gdb") == 0) {
 | 
|          OS::Print("relinquishing control to gdb\n");
 | 
|          OS::DebugBreak();
 | 
| @@ -781,9 +780,6 @@
 | 
|    }
 | 
|  
 | 
|   private:
 | 
| -  static const int32_t kRedirectInstruction =
 | 
| -    Instr::kBreakPointInstruction | (Instr::kRedirectCode << kBreakCodeShift);
 | 
| -
 | 
|    Redirection(uword external_function,
 | 
|                Simulator::CallKind call_kind,
 | 
|                int argument_count)
 | 
| @@ -790,7 +786,7 @@
 | 
|        : external_function_(external_function),
 | 
|          call_kind_(call_kind),
 | 
|          argument_count_(argument_count),
 | 
| -        break_instruction_(kRedirectInstruction),
 | 
| +        break_instruction_(Instr::kSimulatorRedirectInstruction),
 | 
|          next_(list_) {
 | 
|      list_ = this;
 | 
|    }
 | 
| @@ -1118,7 +1114,7 @@
 | 
|    bool result = false;
 | 
|    for (int i = 0; i < kNumAddressTags; i++) {
 | 
|      if (exclusive_access_state_[i].isolate == isolate) {
 | 
| -      // Check whether the current isolates address reservation matches.
 | 
| +      // Check whether the current isolate's address reservation matches.
 | 
|        if (exclusive_access_state_[i].addr == addr) {
 | 
|          result = true;
 | 
|        }
 | 
| @@ -1203,7 +1199,7 @@
 | 
|      dbg.Stop(instr, message);
 | 
|      // Adjust for extra pc increment.
 | 
|      set_pc(get_pc() - Instr::kInstrSize);
 | 
| -  } else if (instr->BreakCodeField() == Instr::kMsgMessageCode) {
 | 
| +  } else if (instr->BreakCodeField() == Instr::kSimulatorMessageCode) {
 | 
|      const char* message = *reinterpret_cast<const char**>(
 | 
|          reinterpret_cast<intptr_t>(instr) - Instr::kInstrSize);
 | 
|      if (FLAG_trace_sim) {
 | 
| @@ -1212,7 +1208,7 @@
 | 
|        OS::PrintErr("Bad break code: 0x%x\n", instr->InstructionBits());
 | 
|        UnimplementedInstruction(instr);
 | 
|      }
 | 
| -  } else if (instr->BreakCodeField() == Instr::kRedirectCode) {
 | 
| +  } else if (instr->BreakCodeField() == Instr::kSimulatorRedirectCode) {
 | 
|      SimulatorSetjmpBuffer buffer(this);
 | 
|  
 | 
|      if (!setjmp(buffer.buffer_)) {
 | 
| @@ -2299,20 +2295,18 @@
 | 
|      // FLAG_stop_sim_at is at the non-default value. Stop in the debugger when
 | 
|      // we reach the particular instruction count or address.
 | 
|      while (pc_ != kEndSimulatingPC) {
 | 
| +      Instr* instr = Instr::At(pc_);
 | 
|        icount_++;
 | 
| -      Instr* instr = Instr::At(pc_);
 | 
| -      if (static_cast<int>(icount_) == FLAG_stop_sim_at) {
 | 
| +      if (static_cast<intptr_t>(icount_) == FLAG_stop_sim_at) {
 | 
|          SimulatorDebugger dbg(this);
 | 
|          dbg.Stop(instr, "Instruction count reached");
 | 
| -      } else if (reinterpret_cast<int>(instr) == FLAG_stop_sim_at) {
 | 
| +      } else if (reinterpret_cast<intptr_t>(instr) == FLAG_stop_sim_at) {
 | 
|          SimulatorDebugger dbg(this);
 | 
|          dbg.Stop(instr, "Instruction address reached");
 | 
| +      } else if (IsIllegalAddress(pc_)) {
 | 
| +        HandleIllegalAccess(pc_, instr);
 | 
|        } else {
 | 
| -        if (IsIllegalAddress(pc_)) {
 | 
| -          HandleIllegalAccess(pc_, instr);
 | 
| -        } else {
 | 
| -          InstructionDecode(instr);
 | 
| -        }
 | 
| +        InstructionDecode(instr);
 | 
|        }
 | 
|      }
 | 
|    }
 | 
| 
 |