ThreadPlanStepInstruction.h revision 008f3dc79c762b7d240b5ad6d4fb148c5cb039ca
1411bb7237e5148dc398ae0f3e53ea5f2eb4402decaryclark@google.com//===-- ThreadPlanStepInstruction.h -----------------------------*- C++ -*-===//
2451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org//
3451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org//                     The LLVM Compiler Infrastructure
4451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org//
5451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org// This file is distributed under the University of Illinois Open Source
6451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org// License. See LICENSE.TXT for details.
7451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org//
8451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org//===----------------------------------------------------------------------===//
9451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org
10a62da2fee72172a630c2d1dba0e529b357743662scroggo@google.com#ifndef liblldb_ThreadPlanStepInstruction_h_
11161e1ba4c0a82e21c7d68808529699fd2394ad6cscroggo@google.com#define liblldb_ThreadPlanStepInstruction_h_
12a62da2fee72172a630c2d1dba0e529b357743662scroggo@google.com
13a36223764466c964ed1035bf6f152ba55168f61ecaryclark@google.com// C Includes
14f4959ab11827bef99e8985031feb457cae1f987akeyar@chromium.org// C++ Includes
15ea6a306457e23d579ee86cd705c83e4e1e0693c3reed@google.com// Other libraries and framework includes
169a4125283ad56cea3b986337cb669dde14bf0ed8scroggo@google.com// Project includes
17770963f23f4fc313db0fa3bac18b1b8aafb55f17robertphillips@google.com#include "lldb/lldb-private.h"
18acfb30e5bb797249f4ec41edda4c4d4b86e0e5d0scroggo@google.com#include "lldb/Target/Thread.h"
19451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org#include "lldb/Target/ThreadPlan.h"
20a62da2fee72172a630c2d1dba0e529b357743662scroggo@google.com
219a4125283ad56cea3b986337cb669dde14bf0ed8scroggo@google.comnamespace lldb_private {
22a62da2fee72172a630c2d1dba0e529b357743662scroggo@google.com
23a62da2fee72172a630c2d1dba0e529b357743662scroggo@google.comclass ThreadPlanStepInstruction : public ThreadPlan
24a62da2fee72172a630c2d1dba0e529b357743662scroggo@google.com{
25451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.orgpublic:
260612564bb76ec533d26d87e03368fd81ef97831ekeyar@chromium.org    virtual ~ThreadPlanStepInstruction ();
270612564bb76ec533d26d87e03368fd81ef97831ekeyar@chromium.org
280612564bb76ec533d26d87e03368fd81ef97831ekeyar@chromium.org    virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
290612564bb76ec533d26d87e03368fd81ef97831ekeyar@chromium.org    virtual bool ValidatePlan (Stream *error);
300612564bb76ec533d26d87e03368fd81ef97831ekeyar@chromium.org    virtual bool ShouldStop (Event *event_ptr);
3190c0fbd34947b6b644e90c5b2253752035f65b64commit-bot@chromium.org    virtual bool StopOthers ();
3290c0fbd34947b6b644e90c5b2253752035f65b64commit-bot@chromium.org    virtual lldb::StateType GetPlanRunState ();
33451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org    virtual bool WillStop ();
34451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org    virtual bool MischiefManaged ();
356177e6999d23a4268ffd98dedfb1da00e272a89brobertphillips@google.com
36a62da2fee72172a630c2d1dba0e529b357743662scroggo@google.comprotected:
37451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org    virtual bool DoPlanExplainsStop (Event *event_ptr);
38451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org
39451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org    ThreadPlanStepInstruction (Thread &thread,
40cbcef708914f3b5e9bb63ad3d87261378026e29bscroggo@google.com                               bool step_over,
41cbcef708914f3b5e9bb63ad3d87261378026e29bscroggo@google.com                               bool stop_others,
42451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org                               Vote stop_vote,
43cbcef708914f3b5e9bb63ad3d87261378026e29bscroggo@google.com                               Vote run_vote);
44451bb9f801d668275394ca5bd57f238e13cf3d17keyar@chromium.org
45c81686cd6edba2cfedcfd5ad6a164f160ddfb49fkeyar@chromium.orgprivate:
460556ea0ede7066b9b3ed9f03f5a6eb72cd718897scroggo@google.com    friend lldb::ThreadPlanSP
470556ea0ede7066b9b3ed9f03f5a6eb72cd718897scroggo@google.com    Thread::QueueThreadPlanForStepSingleInstruction (bool step_over, bool abort_other_plans, bool stop_other_threads);
480556ea0ede7066b9b3ed9f03f5a6eb72cd718897scroggo@google.com
496ab96733b85cebac99b378f998cd7dc10b286395rmistry@google.com    lldb::addr_t m_instruction_addr;
506ab96733b85cebac99b378f998cd7dc10b286395rmistry@google.com    bool m_stop_other_threads;
516ab96733b85cebac99b378f998cd7dc10b286395rmistry@google.com    bool m_step_over;
52c81686cd6edba2cfedcfd5ad6a164f160ddfb49fkeyar@chromium.org    // This is used only for the step over case.
53c81686cd6edba2cfedcfd5ad6a164f160ddfb49fkeyar@chromium.org    StackID m_stack_id;
540556ea0ede7066b9b3ed9f03f5a6eb72cd718897scroggo@google.com
550fd5270ad69f5b99852d544158c989d2deda2c11commit-bot@chromium.org    DISALLOW_COPY_AND_ASSIGN (ThreadPlanStepInstruction);
56c81686cd6edba2cfedcfd5ad6a164f160ddfb49fkeyar@chromium.org
57c81686cd6edba2cfedcfd5ad6a164f160ddfb49fkeyar@chromium.org};
58c81686cd6edba2cfedcfd5ad6a164f160ddfb49fkeyar@chromium.org
599313ca4bde606a18f29214eea8b8e47312b8fd9cjunov@chromium.org
609313ca4bde606a18f29214eea8b8e47312b8fd9cjunov@chromium.org} // namespace lldb_private
61c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org
629313ca4bde606a18f29214eea8b8e47312b8fd9cjunov@chromium.org#endif  // liblldb_ThreadPlanStepInstruction_h_
637b53706a7d596a2d8dce6cfe5b543264e5a37239junov@chromium.org