| Index: src/a64/simulator-a64.h | 
| diff --git a/src/a64/simulator-a64.h b/src/a64/simulator-a64.h | 
| index 73d7a85e240fe35b255ddea5e038855781af2ab5..c4f1472bab231bc0b7ab4545a7d40ba45925c476 100644 | 
| --- a/src/a64/simulator-a64.h | 
| +++ b/src/a64/simulator-a64.h | 
| @@ -195,6 +195,7 @@ class Simulator : public DecoderVisitor { | 
| explicit Simulator(Decoder<DispatchingDecoderVisitor>* decoder, | 
| Isolate* isolate = NULL, | 
| FILE* stream = stderr); | 
| +  Simulator(); | 
| ~Simulator(); | 
|  | 
| // System functions. | 
| @@ -334,10 +335,14 @@ class Simulator : public DecoderVisitor { | 
| pc_modified_ = false; | 
| } | 
|  | 
| +  virtual void Decode(Instruction* instr) { | 
| +    decoder_->Decode(instr); | 
| +  } | 
| + | 
| void ExecuteInstruction() { | 
| ASSERT(IsAligned(reinterpret_cast<uintptr_t>(pc_), kInstructionSize)); | 
| CheckBreakNext(); | 
| -    decoder_->Decode(pc_); | 
| +    Decode(pc_); | 
| LogProcessorState(); | 
| increment_pc(); | 
| CheckBreakpoints(); | 
| @@ -582,12 +587,18 @@ class Simulator : public DecoderVisitor { | 
|  | 
| int log_parameters() { return log_parameters_; } | 
| void set_log_parameters(int new_parameters) { | 
| +    log_parameters_ = new_parameters; | 
| +    if (!decoder_) { | 
| +      if (new_parameters & LOG_DISASM) { | 
| +        PrintF("Run --debug-sim to dynamically turn on disassembler\n"); | 
| +      } | 
| +      return; | 
| +    } | 
| if (new_parameters & LOG_DISASM) { | 
| decoder_->InsertVisitorBefore(print_disasm_, this); | 
| } else { | 
| decoder_->RemoveVisitor(print_disasm_); | 
| } | 
| -    log_parameters_ = new_parameters; | 
| } | 
|  | 
| static inline const char* WRegNameForCode(unsigned code, | 
| @@ -819,6 +830,8 @@ class Simulator : public DecoderVisitor { | 
| char* last_debugger_input_; | 
|  | 
| private: | 
| +  void Init(FILE* stream); | 
| + | 
| int  log_parameters_; | 
| Isolate* isolate_; | 
| }; | 
|  |